分类: 嵌入式
2009-12-19 09:11:06
3.1 选择题
(221) 请选出可用作C语言用户标识符的一组标识符____
a. Void define WORD
b. a3_b3 _123 IF
c. For -abc Case
d. 2a Do sizeof
(222) 请选出正确的标识符编号____
a. Hot_dog
b. $z^**
c. cat1
d. a11
e. SUM#
f. Dollar
g. 2dog
h. S_exp
i. ^pointer
(223) 下面符合规范的函数原型声明有哪些____。
a. T_S16 CheckData();
b. T_S16 CheckData(void)
c. T_S16 SetPoint(T_S16, T_S16)
d. T_S16 SetPoint(T_S16 nX, T_S16 nY)
(224) 声明头文件引用时,避免使用绝对路径,要使用相对路径。以下符合规范的头文件引用有哪些______。
a. #include "c:\switch\inc\def.inc";
b. #include "inc\def.inc"
c. #include "def.inc"
d. #include "..\def.inc"
(225) 按照编码规范,头文件由_____组成:
a. 头文件开头处的版权和版本声明;
b. API函数的调用示例
c. 预处理块
d. 函数和类结构定义
(226) 代码文件由_____组成:
a. 定义文件开头处的版权和版本声明;
b. API函数的调用示例
c. 全局变量的声明
d. 程序的实现体(包括数据和代码)
(227) 按照编码规范,符合规范的程序块是____。
a. if(!ValidNi(ni))
{
…
}
nRepssnInd=SsnData[index].nRepssnIndex;
nRepssnNi=SsnData[index].ni;
b. T_S8 *pContext;
T_S16 nIndex;
T_S32 lCounter;
pContext = (T_S8)malloc(sizeof(T_S8)*100);
if (pContext == NULL)
{
return FALSE;
}
c. if (!ValidNi(ni))
{
…
}
nRepssnInd = SsnData[index].nRepssnIndex;
nRepssnNi = SsnData[index].ni;
d. T_S8 *pContext;
T_S16 nIndex;
T_S32 lCounter;
pContext = (T_S8)malloc(sizeof(T_S8)*100);
if (NULL == pContext)
{
return FALSE;
}
(228) 以下说法正确的是______。
a. 与注释一样,所有的空白符都会被编译程序忽略掉。在C程序中用空白符隔开可执行语句、函数和注释等,将有助于提高程序的可读性和清晰度;
b. 在枚举类型、结构体类型、联合类型、类定义之后,每个函数定义结束之后都要加空行;
c. 在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;
d. 函数体内,变量定义与第一句可执行语句之间不需要加空行分隔.
(229) 以下程序的代码行风格符合规范的是_____。
a. rect.length = 0; rect.width = 0;
b. rect.length = width = 0;
c. rect.length = 0;
rect.width = 0;
d. typedef struct
{
T_U16 nLeft, nTop, nRight, nBottom;
}RECT;
e. typedef struct
{
T_U16 nLeft;
T_U16 nTop;
T_U16 nRight;
T_U16 nBottom;
}RECT;
(230) 以下关于代码行内空格说法正确的是_____。
a. 为了保证缩进和排比留空除外,不要连续留两个以上空格;
b. 由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格;
c. 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"/"、"&&"、"||"、"<<","^"等二元操作符的前后应当加空格;
d. 一元操作符如"!"、"~"、"++"、"--"、"&"(地址运算符)等前后不加空格,另外,象"[]"、"."、"->"这类操作符前后不加空格。
(231) 下面代码行的空格符合规范的是_____
a. void Func1 (T_S16 x, T_S16 y, T_S16 z)
b. if ((a>=b)&&(c<=d))
c. for (i = 0; i < 10; i ++)
d. T_S16 *x = &y
(232) 下面代码行的对齐风格符合规范的是_____
a. #define MAX_TASK_NUMBER 100
#define LEFT_X 10
#define BOTTOM_Y 400
b. void Function(T_S16 x)
{
… // program code
if (conditionn)
{
… // program code
}
}
c. If (condition){
… // program code
}
else {
… // program code
}
d. while (condition)
{
… // program code
}
(233) 以下风格说法符合规范的是_____
a. 程序的分界符'{'和'}'应独占一行并且位于同一列,同时与引用它们的语句左对齐。{ }之内的代码块在'{'右边数格处左对齐。建议使用TAB键;
b. 对于if、for、while、do等程序块,即使只有一个句子或为空,仍要用'{'和'}'进行明显区分,这样可以防止书写失误。而if、for、while、do等语句应自占一行,执行语句不得紧跟其后;
c. 对结构成员赋值,等号对齐;
d. #define的各个字段对齐;
(234) 以下说法符合规范的是_____
a. 注释应当准确、易懂,防止注释有二义性(错误的注释不但无益反而有害)。注释是对代码的"解释"。注释应解释为什么这样做,而不应解释正在做什么,除非这段代码非常晦涩(要注明技巧);
b. 注释的位置应与被描述的代码相邻,应放在代码的上方或右方(对单条语句的注释)相邻位置,不可放在下方;
c. 为了整齐起见,单行或函数体内注释用//,后面留有一个空格,相邻行的"//"注释要列对齐;
d. 对于两行以上的连续注释用/* …… */。"/*"和"*/"最好单独一行,如果和注释内容同行,则"/*"之后和"*/"之前都应留有空格;
(235) 以下说法符合规范的是_____
a. 宏、常量和类型的命名应该使用字母全部大写的方式,各单词之间用下划线隔开;
b. 结构名、枚举名各单词的字母均为大写,单词间用下划线连接;
c. 除非必要,不要用数字或较奇怪的字符来定义标识符;
d. 结构成员和枚举成员名各单词的字母全部大写,各单词之间用下划线隔开。
(236) 以下说法符合规范的是_____
a. 除了用于循环控制的变量,不要使用单一的字符命名变量;
b. 布尔型变量的命名应有明确的是与非的含义;
c. 函数作用域变量和文件作用域变量,以及全局变量必须避免同名;
d. 用户标识符可以以下划线作开头。
(237) 以下关于说法符合规范的是_____
a. 不同类型的操作符混合使用时,使用括号给出优先级;
b. 如果代码行中的操作符比较多,为了防止产生歧义并提高可读性,应当用括号确定表达式的操作顺序;
c. 为了使代码更紧凑,尽量使用复杂的操作符组合;
d. 为了清晰起见,不要把"++"、"--"操作符与其他如"+="、"-="等组合在一起形成复杂奇怪的表达式。
(238) 以下表达式符合规范的是_____。
a. while (p && *p) // p为指针变量
b. if (1 == flag) // flag为布尔变量
c. if (0.0 == x) // x为浮点变量
d. if (strlen(strName) != 0) // strName为字符串变量
(239) 以下对逻辑表达式的使用说明正确的是_____。
a. 一个变量和一个常数进行比较,如果是比较是否相等,则要求把常量放到左边;
b. 对于 if.. else if 语句,最好保留else语句处理缺省情况;
c. 尽量不要在for 循环体内修改循环变量,防止for 循环失去控制;
d. 不可将浮点变量用"=="或"!="与任何数字比较。
(240) 关于循环语句下面说法正确的是_____。
a. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数;
b. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面;
c. 应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而提高程序的时间效率;
d. 尽量减少循环嵌套层次。
(241) 下面的函数声明符合规范的是_____。
a. void SetValue(T_U16 nWidth, T_U16 nHeight);
b. void SetValue(T_U16, T_U16);
c. float GetValue(void);
d. float GetValue()。
(242) 下面关于函数参数的说法符合规范的是_____。
a. 尽量不设计多参数函数,参数个数尽量控制在5个以内。将不使用的参数从接口中去掉,减少函数间接口的复杂度;
b. 如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改;
c. 尽量把参数作为局部变量使用;
d. 尽量不要使用类型和数目不确定的参数。
(243) 下面说法符合规范的是_____。
a. 函数名字与返回值类型在语义上不可冲突;
b. 不要将正常值和错误标志混在一起返回;
c. 在函数体的"出口处",要对return语句的正确性和效率进行检查;
d. 一个函数可以有多个出口点。
(244) 下面说法符合规范的是_____。
a. 只需检查输入参数的有效性就可以了,不必检查通过其它途径进入函数体内的变量的有效性,例如全局变量、文件句柄等;
b. 函数参数的定义和声明应有相同的顺序,参数名应一致;
c. 一个函数不应该有四层以上的嵌套,否则要分割成多个函数;
d. 函数不要直接或间接调用自己。
(245) 下面说法符合规范的是_____。
a. 断言assert是仅在Debug版本起作用的宏,用来检查程序正常运行时不应发生但在调测时有可能发生的非法情况;
b. 尽量使用断言函数参数的有效性;
c. 使用断言可以对程序开发环境的假设进行检查;
b. 不能使用断言规范数据类型的转换。
(246) 下面关于模块的说法符合规范的是_____。
a. 模块是一个或几个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
b. 模块提供给其它模块调用的外部函数及数据需在.h中文件中以extern关键字声明;
c. 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
d. 定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。
(247) 根据编码规范,下面应该全部大写的是_____。
a. 宏
b. enum常量
c. 结构类型名
d. 结构成员的命名
(248) 下面说法符合规范的是_____。
a. 充分利用水平和垂直空格。缩进和空格间距应反映出代码的块结构。
b. 注释应该准确,避免不必要的注释。
c. 为清晰起见,避免使用仅在大小写上有区别的名称,如 foo 和 Foo。
d."指针"标识符"*"应紧邻类型名,而不是变量名。
(249) 根据编码规范,下面说法正确的是_____。
a. 避免使用与库头文件名相同的专用头文件名,安全起见,也应避免自己设计库函数。
b. 应对引用的头文件使用相对路径。
c. 函数名应能反映出函数执行什么操作以及返回什么内容,对于全局函数还应以模块名为前缀。
d. 函数的声明和定义保持一致。
(250) C 语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。
a. '{' 和'}' b. '['和']' c. "/*"和"*/" d. "*/"和"/*"
(251) 下列运算符中,优先级最低的是_____。
a. * b. != c. + d. =
(252) 若变量已正确定义,表达式 (j=3, j++) 的值是_____ 。
a. 3 b. 4 c. 5 d. 0
(253) 表达式strcmp("box", "boss") 的值是一个_______。
a. 正数 b. 负数 c. 0 d. 不确定的数
(254) 判断i和j至少有一个值为非0的表达式是_____。
a. i!=0 && j!=0 b. i*j!=0 c. !(i==0 && j==0) d. i&&j
(255) 根据编码规范,以下说法不正确的是_____。
a. 每行中只能写-条赋值语句;
b. 若a是实型变量,c程序中允许赋值a=10,可以把整型数赋值给实型变量;
c. 无论是整数还是实数,都能被准确无误地表示;
d. %是只能用于整数运算的操作符.
(256) 根据编码规范,下面说法正确的是______。
a. 编写程序时,应使用括号以改善表达式的清晰度;
b. 在保证程序准确无误的前提下,应当尽可能对程序代码进行优化;
c. 在程序设计中,不要进行浮点数相等的比较;
d. 调试过程中应尽可能多的输出中间结果。
(257) 下面说法符合规范的是______。
a. 不要根据数据类型判断数据值的范围。
b. 避免设计带有"记忆"功能的函数。
c. 使用有意义的标识符。
d. 禁止使用GOTO语句。
(258) 根据编码规范,下面说法正确的是______。
a. 目录名全部要使用小写;
b. 排版不要混合使用空格和TAB键
c. 所有的源文件应是可打印的ASCII字符串。
d. 避免编写技巧性很高代码。
(259) 根据编码规范,头文件布局的先后顺序是______。
a. 全局函数原型定义;
b. 全局变量声明;
c. 预处理块定义;
d. #include区;
(260) 根据编码规范,代码文件布局的先后顺序是______。
a. 全局函数定义;
b. 模块级数据类型定义;
c. 局部函数定义。
d. 模块级变量定义;
(261) 根据编码规范,下面说法正确的是______。
a. 禁止使用汉语拼音来命名;
b. 用户标识符的命名必须名副其实;
c. 为了书写方便,可以使用单个字符命名的变量;
d. 因为作用域不同,函数作用域变量、文件作用域变量、全局变量可以使用同名。
(262) 根据编码规范,下面说法正确的是______。
a. 禁止在符号变量上进行移位操作;
b. 不要使用缺省的变量定义方式,应当保留变量的作用域修饰;
c. 尽量使用专门的初始化函数对所有的全局变量进行初始化;
d. 当向公共变量传递数据时,要防止赋与不合理的值或越界等现象发生。
(263) 根据编码规范,下面说法正确的是______。
a. 结构的功能要单一,是针对一种事务的抽象;
b. 若结构中元素个数过多可考虑依据某种原则把元素组成不同的子结构;
c. 结构中的位域应尽可能相邻;
d. 结构的设计要为某些未来可能的应用保留余地。
(264) 根据编码规范,下面说法正确的是______。
a. 空白符和注释会被编译程序忽略掉;
b. 枚举类型、结构体类型、联合类型、类定义、函数定义结束之后都要加空行;
c. 功能相对独立的程序块之间应加空行分隔;
d. 结构体内元素最好放在同行定义。
(265) 下面代码行的空格符合规范的是______。
a. *pApple = 'a';
b. flag =! bIsEmpty;
c. p = &cMem;
d. i ++;
(266) 根据编码规范,下面说法正确的是______。
a. 应当将修饰符 * 和 & 紧靠类型名;
b. 不同类型的操作符混合使用时,直接使用缺省的优先级就可以了;
c. 不要使用复杂的操作符组合等;
d. 尽量不要设计对不同数据类型混合计算的算术表达式。
参考答案:
221.(a.b)
222.(a.c.d.f.h)
223.(b.d)
224.(b.c.d)
225.(a.b.c)
226.(a.b.d)
227.(c.d)
228.(a.b.c)
229.(c.e)
230.(a.b.c.d)
231.(d)
232.(b.d)
233.(a.b.c.d)
234.(a.b.c.d)
235.(a.b.c)
236.(a.b.c)
237.(a.b.d)
238.(d)
239.(a.b.c.d)
240.(a.b.c.d)
241.(a.c)
242.(a.b.d)
243.(a.b.c)
244.(b.c.d)
245.(a.b.c)
246.(a.b.c.d)
247.(a.b.c)
248.(a.b.c)
249.(a.b.c.d)
250.(c)
251.(d)
252.(b)
253.(a)
254.(b)
255.(c)
256.(a.b.c.d)
257.(a.b.c.d)
258.(a.b.c.d)
259.(c.d.b.a)
260.(b.d.a.c)
261.(a.b.c.d)
262.(a.b.c.d)
263.(a.b.c.d)
264.(a.b.c)
265.(a.c)
266.(c.d)