Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1139030
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2009-12-19 09:11:28

3.2    填空题
(267)    根据编码规范,所有代码都应____级以上的warning编译成功。
(268)    根据编码规范,所有的源文件应是可打印的______,在编辑器中定义 TAB 键自动用__个空格代替。
(269)    根据编码规范,文件名和目录的长度不要超过_____字符。
(270)    头文件应避免被重复引用,应使用_____________预处理块。
(271)    用 #include 格式来引用_________________。
(272)    用 #include "filename.h" 格式来引用__________________。
(273)    根据编码规范,声明函数原型时给出参数名称和类型,并且与实现此函数时的参数名称、类型保持一致,无参数的函数,用______声明。
(274)    根据编码规范,代码文件不要超过______行,一个函数的代码不要超过_____行, 每行不应超过______个字符。
(275)    一个程序中的空行数目最好占总代码行的_____,注释行数不应少于总代码行的______。
(276)    目录、文件的命名均不要超过_____个字符。

3.3    问答与设计
(277)    使用goto语句会有什么不良后果?
(278)    为什么要尽量避免函数带有"记忆"功能?
(279)    不设计多参数函数的目的是什么?
(280)    分别说明extern、static、auto变量的作用域范围。
(281)    什么是const指针?
(282)    什么时候应该使用const修饰符?用const修饰常量有什么好处?
(283)    什么时候应该使用register修饰符?
(284)    什么时候应该使用volatile修饰符?
(285)    一个变量可以同时被说明为const和volatile吗?
(286)    什么时候应该使用类型强制转换(typecast)?
(287)    什么时候不应该使用类型强制转换(typecast)?
(288)    怎样判断一个数字型变量可以容纳的最大值?
(289)    对不同类型的变量进行算术运算会有问题吗?
(290)    请回答下面关于标识符命名规则的问题:
    a. 可以用下划线开头吗?
    b. 可以用数字开头吗?
    c. 大小写字母表示的意义一样吗?
    d. 长度可以超过32个字符吗?
    e. 可以使用系统关键字吗?
(291)    较长的变量名会影响程序的速度、大小或效率吗?
(292)    使用注释会影响程序的速度、大小或效率吗?
(293)    使用空白符会影响程序的速度、大小或效率吗?
(294)    请说明变量的命名规则。
(295)    请说明函数命名。
(296)    请说明如何命名常量和宏。
(297)    请说明如何命名用户定义类型。
(298)    使用大括号的正确方法是什么?
(299)    使用#define命令定义宏常量的好处有哪些?
(300)    全局函数的命名应该使用"前缀_动作+名词+属性(参数)" (动宾词组)的规则,局部函数的命名去掉前缀。"前缀"用来说明什么?
(301)    变量的命名应该使用"前缀_名词"或者"前缀_形容词+名词"规则。"前缀"用来说明什么?
(302)    分析比较下面代码的执行效率:
a. for (row=0; row<100; row++)
    {
        for (col=0; col<5; col++)
        {
            sum = sum + a[row][col];
        }
    }
 
b. for (col=0; col<5; col++)
    {
        for (row=0; row<100; row++)
        {
            sum = sum + a[row][col];
        }
    }

(303)    分析比较下面代码的执行效率:
a. for (i=0; i    {
        if (condition)
        {
            DoSomething();
        }
        else
        {
            DoOtherthing();
        }
    }
 
b. if (condition)
    {
        for (i=0; i        {
            DoSomething();
        }
    }
    else
    {
        for (i=0; i        {
            DoOtherthing();
        }
}
 
(304)    分析比较下面代码的执行效率:
a. for (i = 0; i < MAX_ADD_NUMBER; i++)
    {
        nSum += i;
        nBackSum = nSum ; // 备份和
    }
 
b. for (i = 0; i < MAX_ADD_NUMBER; i++)
    {
        nSum += i ;
    }
    nBackSum = nSum ; // 备份和

(305)    不要把参数作为局部变量使用的原因是什么?
(306)    const 有什么用途?(请说明三种)
(307)    尽量不要省略函数返回值的类型,原因是什么?
(308)    为什么要在头文件而不是程序文件中声明"extern"?
(309)    请指出下面代码的错误并改正。
    // module1.h
    int a = 5; // 在模块1的.h文件中定义int a
 
    // module1 .c
    #include "module1.h" // 在模块1中包含模块1的.h文件
 
    // module2 .c
    #include "module1.h" // 在模块2中包含模块1的.h文件
 
    // module3 .c
    #include "module1.h" // 在模块3中包含模块1的.h文件

(310)    请分析下面代码的有效性:
    while (c == '\t' || c = ' ' || c == '\n')  
        c = getc(f);

(311)    整理下面代码,使其符合编码规范:
    int a = 5, b = 7, c;  
    c = a+++b;

(312)    如何优化下面代码:
void main(void)
{
    int i, value[100];
    for (i = 0; i < 100; i++)
    {
        value[i] = i;
    }
}
(313)    如何优化下面代码:
main(void)
{
    register int nCounter;
    int values[100];
    int a = 1, b = 1, c = 2;
    for (nCount = 0; nCount < 100; nCounter++)
    {
        values[nCounter] = (a * b) + c + nCounter;
    }
    return 0;
}
(314)    如何优化下面的代码:
void func1(int i, int j)  
{  
    int k=20;  
    int a,b,c;  
    a=i*j/k;  
    b=i*j/k;  
    c=i*j/k;  
};
(315)    如何优化下面的代码:
#define uchar unsigned char  
#define uint unsigned ini  
#define LEN 20  
void fun1(int num)  
{
    uchar i;  
    uint mem[LEN]  
    for (i = 0; i < num*4+2; j++)
    {
        mem[i]=0;  
    }
}
(316)    如何优化下面的代码:
#define uchar unsigned char
#define uint unsigned int
#define LEN
uchar array1[LEN];
uchar array2[LEN];
 
void func1()
{  
    uchar I;
    uint sum=0;
    for(i=0;i    {
        sum = sum + array1[i] + array2[i];
    }
}

(317)    如何优化下面代码:
puts (char *s)
{
    register int t;
    for (t = 0; s[t]; t++)
    {
        putch(s[t]);
    }
}
(318)    为什么不能用取址运算符"&"来获取register变量的地址?
(319)    为什么结构中的位域要尽可能相邻?
(320)    为什么要禁用GOTO语句?
(321)    变乘法运算为递归加法运算是强度削弱吗?说明原因。
 
(322)    设计方案输出文本文件 input.txt 中的非空格字符
阅读(608) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~