1、二级 C+笔试-291 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.设 x 和 y 均为 bool 量,则 xY 为假的条件是_ 。(分数:2.00)A.二者均为真B.二者均为假C.其中一个为真D.其中一个为假2.在每个 c+ 程序中必须包含这样一个函数,该函数的函数名为_ 。(分数:2.00)A.mainB.MAINC.nameD.function3.下列不属于算法的基本特征的是_ 。(分数:2.00)A.可行性B.确定性C.有穷性D.无限性4.结构化程序设计主要强调的是_ 。(分数:2.00)A.程序的规模B.程序的易读性C.程序的执
2、行效率D.程序的可移植性5.设 int f (int);和 int g(int);是函数 f 和 g 的原形,以下将 f 作为语句调用的是_ 。(分数:2.00)A.g(f(3)B.f(g(3);C.g(f(3)+2);D.p=f(g (3)+1);6.设 void f1 (int *m,long & n);int a:long b;则以下调用合法的是_ 。(分数:2.00)A.f1 (a,b);B.f1(&a,b);C.f1(a,&b);D.f1(&a,&b);7.计算机软件是_ 。(分数:2.00)A.程序B.数据C.文档D.程序、数据及相关文档的完整集合8.在面向对象方法中,一个对象请求
3、另一对象为其服务的方式是通过发送_ 。(分数:2.00)A.调用语句B.命令C.口令D.消息9.设 int x:,则经过_ 后,语句*px=0;可将 x 值置为 0。(分数:2.00)A.int*px;B.int const *px=&x;C.int* const px=&x:D.const int *px=&x;10.将两个字符串连接起来组成一个字符串时,选用_ 函数。(分数:2.00)A.strlen()B.strcpy()C.strcat()D.strcmp()11.循环 while (int i=0)i-;执行的次数是_ 。(分数:2.00)A.0B.1C.5D.无限12.假定 p 是
4、一个指向 float 型数据的指针,则 p+1 所指数据的地址比 p 所指数据的地址大_ 。(分数:2.00)A.1B.2C.4D.813.下列对字符数组进行初始化的语句中,_ 是正确的。(分数:2.00)A.char s 1=“abcd”;B.char s2 3=”xyz”;C.char s 3 3=a,x,yD.char s3 3=“xyz”,“mnp”;14.在数据流图(DFD) 中,带有名字的箭头表示_ 。(分数:2.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分15.在一个被调用函数中,关于 rerun 语句的描述,_ 是错误的。(分数:2.00)
5、A.被调用函数中可以不用 return 语句B.被调用函数中可以使用多个 return 语句C.被调用函数中,如果有返回值,就一定要有 return 语句D.被调用函数中,一个 return 语句可以返回多个值给调用函数16.设 i 和 j 为 int 型变量,以下表达式中,与下标引用 xij不等效的是_ 。(分数:2.00)A.*(xi+j)B.*(x+i)jC.*(x+i+j)D.*(*(x+i)+17.设 int*p2=x,*p1=a;p2=*b,则 a 和 b 的类型分别是_ 。(分数:2.00)A.int*和 intB.int*和 int*C.int 和 int*D.int*和 in
6、t*18.设 void f1(int*,long &);int a=1,2,3;long b;,则以下调用合法的是_ 。(分数:2.00)A.f1 (a,b):B.f1(&a,b);C.fl(a,&b);D.f1 (&a,&b):19.关于链式存储结构和顺序存储结构的说法正确的是_ 。(分数:2.00)A.链式存储结构比顺序存储结构更优越B.顺序存储结构比链式存储结构更优越C.顺序存储结构所占空间可以不连续D.链式存储结构比顺序存储结构更易删除其中的元素。20.长度为 n 的简单插入排序法,最坏情况需要_ 次比较。(分数:2.00)A.nB.n (n-1)C.n (n-1)/2D.n-121.
7、软件测试过程一般按 4 个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。在程序编码阶段进行的测试通常是_ 。(分数:2.00)A.单元测试B.集成测试C.验收测试(确认测试)D.系统测试22.设 x 和 y 均为 bool 量,则 xy 为真的条件是_ 。(分数:2.00)A.其中一个为假B.其中一个为真C.二者均为假D.二者均为真23.下列各种函数中,_ 不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.友元函数D.拷贝构造函数24.按照“后进后出”原则组织数据的数据结构是_ 。(分数:2.00)A.队列B.栈C.双向链表D.二叉树25.下列变量名中,_ 是合法
8、的。(分数:2.00)A.CHINAB.byte-sizeC.doubleD.A+a26.当需要打开 A 盘上的 abc.txt 文件用于输入时,则定义文件流对象的语句为_ 。(分数:2.00)A.fstream fin(“A: abc.txt”);B.ofstream fin (“A: abc.txt”);C.ifstream fin(“A: abc.txt”,ios: app);D.ifstream fin(“A: abc.txt”,ios: nocreate);27.使用操作符 setw 对数据进行格式输出时,需要包含_ 头文件。(分数:2.00)A.iostream.hB.fstrea
9、m.hC.iomanip.hD.stdlib.h28.下列_ 是正确的语句。(分数:2.00)A.;B.a=17C.x+yD.cout“/n”29.以下结构类型可用来构造链表的是_ 。(分数:2.00)A.street aaint a;int *b;B.struct bb int a;bb*b;C.struct ccint *a;cc b;D.struct dd int *a;aa b;30.不属于结构化程序设计方法的四条原则是_ 。(分数:2.00)A.自顶向下B.对象化C.模块化D.逐步求精31.用户的数据视图,也就是用户所见到的数据模式,是_ 。(分数:2.00)A.概念模式B.外模式C
10、.内模式D.物理模式32.对于类中定义的成员,其隐含访问权限是_ 。(分数:2.00)A.publicB.protectedC.privateD.static33.以下函数声明中,存在语法错误的是_ 。(分数:2.00)A.int AA(int a,int);B.int *BB (int,int);C.void CC (int,int=5);D.void*DD (x,y);34.下列字符常量表示中,_ 是错误的。(分数:2.00)A./105B.*C./4fD./a35.设 int a 4;int *p=a,则 sizeof (p)和 sizeof ((分数:2.00)A.的值分别是_ 。A)
11、 4 和 4B) 16 和 4二、填空题(总题数:14,分数:28.00)36.若源程序文件 abc. cpp 中只有一个函数,该函数的名称为 【1】 。(分数:2.00)填空项 1:_37.要获得一数据或数据类型所占空间的字节数,应使用的操作符是 【2】 。(分数:2.00)填空项 1:_38.条件表达式(x!=9)& (x=9)的结果是 【3】 。(分数:2.00)填空项 1:_39.函数调用参数的传递方式有三种,值传递、 【4】 和引用传递。(分数:2.00)填空项 1:_40.若函数模板在调用时有 【5】 ,则调用它时必须强制实例化。(分数:2.00)填空项 1:_41.设有二维数组
12、int a 1020;,则 aij的地址可由首元素 a00的地址来表达,由此可得访问数组元素 aij的表达式为 【6】 。(分数:2.00)填空项 1:_42.设函数 f 的原型是:char *f (const char*);,pf 是指向 f 的指针,则 pf 的定义是 【7】 。(分数:2.00)填空项 1:_43.若结构 Arith 中有一成员定义为 char *op;,另有结构指针 p 定义为 Arith *p=new Arith,则要访问 p 所指对象中的。p 成员所指向的对象,应使用表达式 【8】 。(分数:2.00)填空项 1:_44.定义类对象时自动调用 【9】 为类对象中的数
13、据成员赋初值。(分数:2.00)填空项 1:_45.若要使用操作符 setw 进行输出的格式控制,则必须用#include 命令包含 【10】 头文件。(分数:2.00)填空项 1:_46.C+目标程序经 【11】 后生成扩展名为 exe 的可执行程序文件。(分数:2.00)填空项 1:_47.16 位计算机中整型占 【12】 个字节存储空间。(分数:2.00)填空项 1:_48.要在屏幕上显示“Hello,world!”应执行语句 cout 【13】 。(分数:2.00)填空项 1:_49.表达式 8&3 的结果是 【14】 。(分数:2.00)填空项 1:_二级 C+笔试-291 答案解析
14、(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.设 x 和 y 均为 bool 量,则 xY 为假的条件是_ 。(分数:2.00)A.二者均为真B.二者均为假 C.其中一个为真D.其中一个为假解析:解析 xy 为假的条件是二者均为假。2.在每个 c+ 程序中必须包含这样一个函数,该函数的函数名为_ 。(分数:2.00)A.main B.MAINC.nameD.function解析:解析 每个 C+程序必须包含一个主函数 main。3.下列不属于算法的基本特征的是_ 。(分数:2.00)A.可行性B.确定性C.有穷性D.无限性 解析:解析 可行性、确定性
15、和有穷性是算法的基本特征。4.结构化程序设计主要强调的是_ 。(分数:2.00)A.程序的规模B.程序的易读性 C.程序的执行效率D.程序的可移植性解析:解析 程序的易读性是结构化程序设计强调的主要特征。5.设 int f (int);和 int g(int);是函数 f 和 g 的原形,以下将 f 作为语句调用的是_ 。(分数:2.00)A.g(f(3)B.f(g(3);C.g(f(3)+2);D.p=f(g (3)+1); 解析:解析 p=f(g(3)+1):函数 f 被作为一个语句调用。6.设 void f1 (int *m,long & n);int a:long b;则以下调用合法的
16、是_ 。(分数:2.00)A.f1 (a,b);B.f1(&a,b); C.f1(a,&b);D.f1(&a,&b);解析:解析 如果调用合法,则只有 B 满足两个参数为指针和引用的条件。7.计算机软件是_ 。(分数:2.00)A.程序B.数据C.文档D.程序、数据及相关文档的完整集合 解析:解析 计算机软件是包括程序、数据及相关文档的完整集合。8.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送_ 。(分数:2.00)A.调用语句B.命令C.口令D.消息 解析:解析 一个对象请求另一对象为其服务的方式是发送消息调用。9.设 int x:,则经过_ 后,语句*px=0;可将 x
17、值置为 0。(分数:2.00)A.int*px;B.int const *px=&x; C.int* const px=&x:D.const int *px=&x;解析:解析 因为* p1=a:所以 a 必然为指针类型,p2=*b,*b 为指针类型,而 b 必然是指向指针的指针,a 和 b 的类型分别是 int*和 int*。10.将两个字符串连接起来组成一个字符串时,选用_ 函数。(分数:2.00)A.strlen()B.strcpy()C.strcat() D.strcmp()解析:解析 将两个字符串连接起来组成一个字符串,选用 strcat 函数来连接。11.循环 while (int
18、i=0)i-;执行的次数是_ 。(分数:2.00)A.0 B.1C.5D.无限解析:解析 由于 i=0,条件为 false,所以不会去执行 i-。12.假定 p 是一个指向 float 型数据的指针,则 p+1 所指数据的地址比 p 所指数据的地址大_ 。(分数:2.00)A.1B.2C.4D.8 解析:解析 一个 float 型数据占的字节为 4 位。13.下列对字符数组进行初始化的语句中,_ 是正确的。(分数:2.00)A.char s 1=“abcd”; B.char s2 3=”xyz”;C.char s 3 3=a,x,yD.char s3 3=“xyz”,“mnp”;解析:解析 B
19、CD 选项都不合字符数组的定义。14.在数据流图(DFD) 中,带有名字的箭头表示_ 。(分数:2.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向 D.程序的组成成分解析:解析 在数据流图(DFD) 中,带有名字的箭头表示数据的流向。15.在一个被调用函数中,关于 rerun 语句的描述,_ 是错误的。(分数:2.00)A.被调用函数中可以不用 return 语句B.被调用函数中可以使用多个 return 语句C.被调用函数中,如果有返回值,就一定要有 return 语句D.被调用函数中,一个 return 语句可以返回多个值给调用函数 解析:解析 被调用函数中,一个 ret
20、urn 语句只能返回一个值给调用函数。16.设 i 和 j 为 int 型变量,以下表达式中,与下标引用 xij不等效的是_ 。(分数:2.00)A.*(xi+j)B.*(x+i)jC.*(x+i+j) D.*(*(x+i)+解析:解析 *(x+ i+ j) 没有定义变量 xij。17.设 int*p2=x,*p1=a;p2=*b,则 a 和 b 的类型分别是_ 。(分数:2.00)A.int*和 intB.int*和 int* C.int 和 int*D.int*和 int*解析:解析 a 的类型一定是一个 int *型,而 b 的类型是 int *类型。18.设 void f1(int*,
21、long &);int a=1,2,3;long b;,则以下调用合法的是_ 。(分数:2.00)A.f1 (a,b): B.f1(&a,b);C.fl(a,&b);D.f1 (&a,&b):解析:解析 函数 f1 的第一个参数为 int*,第二个参数为 long &,所以 f1(a,b)为合法调用。19.关于链式存储结构和顺序存储结构的说法正确的是_ 。(分数:2.00)A.链式存储结构比顺序存储结构更优越B.顺序存储结构比链式存储结构更优越C.顺序存储结构所占空间可以不连续D.链式存储结构比顺序存储结构更易删除其中的元素。 解析:解析 链式存储结构比顺序存储结构更易删除其中的元素。20.长
22、度为 n 的简单插入排序法,最坏情况需要_ 次比较。(分数:2.00)A.nB.n (n-1)C.n (n-1)/2 D.n-1解析:解析 简单插入排序法,最坏情况需要 n (n-1)/2 次比较。21.软件测试过程一般按 4 个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。在程序编码阶段进行的测试通常是_ 。(分数:2.00)A.单元测试 B.集成测试C.验收测试(确认测试)D.系统测试解析:解析 单元测试(模块测试),针对每个模块进行的测试,可从程序的内部结构出发设计测试用例,多个模块可以平行地对立地测试,通常在编码阶段进行。22.设 x 和 y 均为 bool 量,则 x
23、y 为真的条件是_ 。(分数:2.00)A.其中一个为假B.其中一个为真 C.二者均为假D.二者均为真解析:解析 x&y 为真的条件是其中一个为真。23.下列各种函数中,_ 不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.友元函数 D.拷贝构造函数解析:解析 构造函数、析构函数和拷贝构造函数都是类的成员函数。24.按照“后进后出”原则组织数据的数据结构是_ 。(分数:2.00)A.队列 B.栈C.双向链表D.二叉树解析:解析 队列是按照“后进后出”原则组织数据的数据结构。25.下列变量名中,_ 是合法的。(分数:2.00)A.CHINA B.byte-sizeC.doubleD
24、.A+a解析:解析 B 中不该有“-”字符,C 为保留字,D 中“+”,字符不合法。26.当需要打开 A 盘上的 abc.txt 文件用于输入时,则定义文件流对象的语句为_ 。(分数:2.00)A.fstream fin(“A: abc.txt”);B.ofstream fin (“A: abc.txt”);C.ifstream fin(“A: abc.txt”,ios: app);D.ifstream fin(“A: abc.txt”,ios: nocreate); 解析:解析 定义文件流对象的语句为 fstream fin (“A:abc。txt”,ios: nocreate);27.使用
25、操作符 setw 对数据进行格式输出时,需要包含_ 头文件。(分数:2.00)A.iostream.hB.fstream.hC.iomanip.h D.stdlib.h解析:解析 使用操作符 setw 对数据进行格式输出时,必须包含 iomanip.h 头文件。28.下列_ 是正确的语句。(分数:2.00)A.; B.a=17C.x+yD.cout“/n”解析:解析 BCD 都没有语句结束符。29.以下结构类型可用来构造链表的是_ 。(分数:2.00)A.street aaint a;int *b;B.struct bb int a;bb*b; C.struct ccint *a;cc b;D
26、.struct dd int *a;aa b;解析:解析 如果要构造链表,则必须有指向下一个结点的指针。30.不属于结构化程序设计方法的四条原则是_ 。(分数:2.00)A.自顶向下B.对象化 C.模块化D.逐步求精解析:解析 对象化属于面向对象设计的方法。31.用户的数据视图,也就是用户所见到的数据模式,是_ 。(分数:2.00)A.概念模式B.外模式 C.内模式D.物理模式解析:解析 概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图;外模式,也称子模式与用户模式,是用户的数据视图,也就是用户所见到的数据模式:内模式,又称物理模式,它给出了数据库物理存储结构与物理存取方法
27、。32.对于类中定义的成员,其隐含访问权限是_ 。(分数:2.00)A.publicB.protectedC.private D.static解析:解析 类中定义的成员,隐含访问权限是 private。33.以下函数声明中,存在语法错误的是_ 。(分数:2.00)A.int AA(int a,int);B.int *BB (int,int);C.void CC (int,int=5);D.void*DD (x,y); 解析:解析 D 选项参数没有进行声明。34.下列字符常量表示中,_ 是错误的。(分数:2.00)A./105B.*C./4f D./a解析:解析 /4f是错误的。35.设 int
28、 a 4;int *p=a,则 sizeof (p)和 sizeof ((分数:2.00)A.的值分别是_ 。A) 4 和 4B) 16 和 4解析:解析 a 为数组,所以 sizeof (a)为 16。二、填空题(总题数:14,分数:28.00)36.若源程序文件 abc. cpp 中只有一个函数,该函数的名称为 【1】 。(分数:2.00)填空项 1:_ (正确答案:main 函数)解析:解析 main 函数为源程序文件中必须有的函数。37.要获得一数据或数据类型所占空间的字节数,应使用的操作符是 【2】 。(分数:2.00)填空项 1:_ (正确答案:sizeof ())解析:解析 要获
29、得字节数,必须用 sizeof ()操作符。38.条件表达式(x!=9)& (x=9)的结果是 【3】 。(分数:2.00)填空项 1:_ (正确答案:0)解析:解析 两个条件必然有一个不满足,由于两者是与的关系,所以为 0。39.函数调用参数的传递方式有三种,值传递、 【4】 和引用传递。(分数:2.00)填空项 1:_ (正确答案:指针传递)解析:40.若函数模板在调用时有 【5】 ,则调用它时必须强制实例化。(分数:2.00)填空项 1:_ (正确答案:常规参数)解析:41.设有二维数组 int a 1020;,则 aij的地址可由首元素 a00的地址来表达,由此可得访问数组元素 aij
30、的表达式为 【6】 。(分数:2.00)填空项 1:_ (正确答案:*(&a 00+20*4*i+4*j))解析:解析 根据二维数组的定义,它的 aij元素的地址应该是&a 0 0+20*4*i+4*j,所以 aij元素的值是*(&a 00+20*4*i+4*j)。42.设函数 f 的原型是:char *f (const char*);,pf 是指向 f 的指针,则 pf 的定义是 【7】 。(分数:2.00)填空项 1:_ (正确答案:char(*p)(const char*)=f;)解析:解析 如果要使指针指向函数,函数的原型应该改为上面的形式。43.若结构 Arith 中有一成员定义为
31、char *op;,另有结构指针 p 定义为 Arith *p=new Arith,则要访问 p 所指对象中的。p 成员所指向的对象,应使用表达式 【8】 。(分数:2.00)填空项 1:_ (正确答案:*(p-op))解析:解析 访问结构指针所指向的指针的值,首先得到指向的指针(p-op),然后计算值 *(p-op)。44.定义类对象时自动调用 【9】 为类对象中的数据成员赋初值。(分数:2.00)填空项 1:_ (正确答案:构造函数)解析:解析 构造函数在初始化对象时便会自动调用。45.若要使用操作符 setw 进行输出的格式控制,则必须用#include 命令包含 【10】 头文件。(分
32、数:2.00)填空项 1:_ (正确答案:iomanip.h)解析:解析 iomanip.h 头文件包含控制输出字符串格式的函数。46.C+目标程序经 【11】 后生成扩展名为 exe 的可执行程序文件。(分数:2.00)填空项 1:_ (正确答案:连接)解析:解析 在过程中首先编译为.obj 文件,然后连接为可执行文件。47.16 位计算机中整型占 【12】 个字节存储空间。(分数:2.00)填空项 1:_ (正确答案:两)解析:解析 16 位计算机血型占有的字节为 16/8=2。48.要在屏幕上显示“Hello,world!”应执行语句 cout 【13】 。(分数:2.00)填空项 1:_ (正确答案:“/”Hello. world!/“”)解析:解析 “Hello,world!”的输出需要转义字符/,所以 cout“/”Hello. world!/“”。49.表达式 8&3 的结果是 【14】 。(分数:2.00)填空项 1:_ (正确答案:0)解析:解析 8&3 为二进制的 00001000&00000011,结果为 0。