C++编码规范试题(满分100分)
一、单选题(5*2)
1、关于函数参数,不正确的说法是:
  A、对参数输入和非参数输入都要检查有效性。
  B、防止将函数的参数作为工作变量。
  C、在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型转换
  D、非调度函数应减少或防止控制参数,尽量不要使用数据参数。
2、宏定义#define SQUARE(a) ((a) * (a)) 在b = SQUARE(a++)中,a被执行了  次加1
  A、0次;  B、1次;  C、2次;  D、3次
3.    ()关于可测性,正确的说法是 :
A 断言用来处理必须处理的错误情况
B 调试时打印的出错信息只要有错误码就行了
C 软件的DEBUG版本与发行版本分为两套进行维护
D 项目组内要有一套统一的错误输出函数
4.    ()以下程序中,可读性较好的有 :
A  rect.length = 10; char_poi = str; rect.width = 5;
B  if (Trunk[index].trunk_state == 0)
C  word = (high << 8) | low;
D  * ++ stat_poi += 1;
5、若已经定义:int a[9], *p = a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是:
  A、++a;  B、a++;  C、++p;  D、p++;
二、多选题(11*4)
1、关于变量,正确的说法是:
  A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; 
  B、若全局变量仅在单个函数中访问,则可以将这个变量修改为该函数的静态局部变量,以降低模块间的耦合度;
  C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
  D、静态全局变量过大,可能会导致堆栈溢出。
2、A机和B机通讯,使用以下结构
    struct A_B_COM
    {
        unsigned int a:6;
        unsigned int b:3;
        unsigned int  :7;
    };
    对这个结构定义的评价中,正确的是:
    A、由于A机与B机可能使用不同的编译环境,该结构占用空间可能不一致;
    B、由于A机与B机可能字节序不同,位域的各位在内存中存放的顺序可不一致;
    C、第三个结构成员没有名字,编译会出错;
    D、结构中使用位域,不仅节省了空间,也提高了存取效率。
3、关于编译预处理程序的功能包括但不限于:
    A、宏定义;
    B、条件编译;
    C、在源代码中插入预定义的环境变量;
    D、打开或关闭某个编译选项。
4、关于代码的编译、编译和审查,下面说法不正确的是:
    A、在产品软件(项目组)中,可不统一编译开关选项;
    B、对于安排进行单元测试的代码可以不用进行代码审查;
    C、LogiScope工具不具有审查代码的功能;
    D、考虑到开发人员的个人习惯,软件系统目录可自行设计
5.    (  )下列哪些命名是不允许的 :
A Get_Card_Stat
B get_card_stat
C m_GetCardStat
D _GET_CARD_2_STAT
6.    ( )关于结构,正确的说法是 :
A 结构占用的空间大小,不仅取决于结构成员的定义,还取决于结构成员的排列顺序,以及结构的字节对齐方式
B 结构成员的排列顺序,会影响结构成员数据的存取效率
C 功能太单一的结构,会降低代码效率
D 结构中使用位域,不仅节省了空间,也提高了存取效率
7.    (  )一般说来,以下哪一段代码可能有问题 :
A.
unsigned int size;
while(size -- >=0)
{
……
}
B.
/*name为一字符串型变量,用以存放名称*/
unsigned char name[MAXNAMELEN];
 
/*分析组成名字的每一个字符,进行相应的处理*/
while(* name ++)
{
……
C.
unsigned char ch;   
FILE * date_file;
for(;;)
{
    ch = getch(date_file); /*从文件中读取一个字符*/
    if(ch == EOF)
    {  /*如果文件已被读完,则返回ENDOFFILE*/字符串常量中不能直接包括双引号和反斜杠符号
        return ENDOFFILE;
    }
    ......
}
D.
struct S {int a; char b[4]; double c; };
struct S x = {1, "abcd", 45.0 };
8、(  )关于结构,正确的说法是 :
A 结构占用的空间大小,不仅取决于结构成员的定义,还取决于结构成员的排列顺序,以及结构的字节对齐方式
B 结构成员的排列顺序,会影响结构成员数据的存取效率
C 功能太单一的结构,会降低代码效率
D 结构中使用位域,不仅节省了空间,也提高了存取效率
9、A机和B机通讯,使用以下结构
    struct A_B_COM
    {
        unsigned int a:6;
        unsigned int b:3;
        unsigned int  :7;
    };
    对这个结构定义的评价中,正确的是:
    A、由于A机与B机可能使用不同的编译环境,该结构占用空间可能不一致;
    B、由于A机与B机可能字节序不同,位域的各位在内存中存放的顺序可不一致;
    C、第三个结构成员没有名字,编译会出错;
    D、结构中使用位域,不仅节省了空间,也提高了存取效率。
10、关于编译预处理程序的功能包括但不限于:
    A、宏定义;
    B、条件编译;
    C、在源代码中插入预定义的环境变量;
    D、打开或关闭某个编译选项。
11、关于变量,正确的说法是:
  A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; 
  B、若全局变量仅在单个函数中访问,则可以将这个变量修改为该函数的静态局部变量,以
降低模块间的耦合度;
  C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
  D、静态全局变量过大,可能会导致堆栈溢出。
三、 判断题(23*2)
1. 在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。
2. 公共变量是增大模块间耦合的原因之一,故应减少没有必要的公共变量以降低模块间的耦合度。
3. char a[][2][3][4][5][6][7][8];这样的全局变量申请是允许的。
4. 若两个结构间关系较复杂、密切,那么应合为一个结构。
5. 对模块中函数的划分及组织方式进行分析、优化,改进模块中函数的组织结构,可以从根本上解决程序效率的问题。
6. #pragma指令可激活或者终止编译程序所支持的一些编译功能。
7. 任意两个类型的指针都可以进行<, >, >=, <=, == 等比较.
8. 递归调用使代码简洁,可以使用;但是在主机类函数中是绝对禁止的。
9. 非调度函数应减少或防止控制参数,尽量不要使用数据参数。
10. 函数设计要符合"高扇入、合理扇出"的原则。
11. 头文件可以互相包含,使用"#ifndef…"的形式保证不会重复引用。
12. 数组比指针寻址、运算速度快,因此推荐使用数组,少用指针。
13. 程序编译时,要求放开所有的编译告警开关。
14. 命名中特殊的缩略语可以不需要有注释.
15. 要有自己特有的命名风格,并要始终如一。
16. 通过对系统数据结构的划分与组织的改进,以及对程序算法的优化是解决软件空间效率的有效办法。
17. 在一个产品的设计中,可以为集成测试和系统测试分别定义不同的调测试开关和打印函数,用不同的宏开关控制。
18. 任意两个类型的指针都可以进行<, >, >=, <=, == 等比较。
19. 头文件可以互相包含,使用"#ifndef…"的形式保证不会重复引用。
20. 不允许把多个短语句写在一行中,即一行只写一条语句 
21. 如果编程工具提供将TAB键转换成空格键,对齐、缩进可以使用TAB键,否则应使用空格键 
22. 如下if语句正确吗? if (pUserCR == NULL) return;
23. 单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。不能进行单步跟踪的代码,要采用日志输出等形式,跟踪数据流和变量的变化.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。