1、二级 C+笔试-297 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.在数据库管理系统的层次结构中,处于最下层的是( )。(分数:2.00)A.应用层B.语言翻译处理层C.数据存取层D.数据存储层2.下列各 C+程序段中,不包含复合语句的选项为( )。(分数:2.00)A.x=y+z;B.for(i=1;k0;i+)if(i%3=1)coutiendl;C.while(i10)coutiendl;i+;D.if(i10)i=i+1;3.下列关于栈的描述正确的是( )。(分数:2.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除
2、元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素4.线性表 L=(a1,a2,a3,ai,an),下列说法正确的是( )。(分数:2.00)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件5.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extem int x,y;coutadd(x,y)en
3、dl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;)(分数:2.00)A.25B.30C.20D.156.下列程序段中有错的是( )。(分数:2.00)A.templateClass TypeB.TypeC.func(Type a,b)D.return(ab)?(a):(b);7.在 C+语言中,形参的缺省存储类型是( )。(分数:2.00)A.autoB.registerC.staticD.extem8.有以下程序:#includeiostreamusing namespace std;class Rpublic:R(int r
4、1,int r2)R1=r1;R2=r2;void print();void print0const;private:int R1,R2;void R:print()coutR1“,“R2endl;void R:print() constcoutRl“,“R2endl;int main()R a(5,4);const R b(20,52);b.print();return 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.20,52C.0,0D.4,59.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数元素
5、的物理顺序与逻辑顺序相同10.若变量 a 是 int 类型,并执行了语句:a=A+1.6;,则正确的叙述是( )。(分数:2.00)A.a 的值是字符 CB.a 的值是浮点型C.不允许字符型的浮点型相加D.a 的值是字符A的 ASC值加上 111.以下程序的输出结果是( )。#includeiostream.hvoid main()int a(5),b(6),i(0),j(0);switch(a)case 5:switch(b)case 5:i+;break;case 6:j+;break;default:i+;j+;case 6:i+;j+;break;default:i+;j+;couti
6、“,“jendl;(分数:2.00)A.1,2B.1,3C.2,2D.2,312.下列程序的运行结果为( )。#includeiostream.hvoid main()int a=2;int b=a+1;couafoendl;(分数:2.00)A.0.66667B.0C.0.7D.0.6666666613.下面关于 C+流的叙述中,正确的是( )。(分数:2.00)A.cin 是一个输入流对象B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char*y=“PQMN“;couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80
7、);时,若键入 Happy new year 则 x 中的字符串是“Happy“14.下面程序的输出结果是( )。#includeiostream.h#include“stdng.h“void main()char a=“welcome“,b=“well“;strcpy(a,b);coutaendl;(分数:2.00)A.wellomeB.wellcomC.wellD.wellwe15.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是( )。(分数:2.00)A.“cout是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符16.下列
8、关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的17.若有以下定义:char s(10)=“program“,t=“test“;则下列选项中对字符串操作错误的是( )。(分数:2.00)A.strcpy(s,t);B.strcat(s,t);C.coutstrlen(s);D.gets(s);18.下列叙述中正确的是( )。(分数:2.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试19.C+中运
9、算符优先级由低到高排列正确的是( )。(分数:2.00)A.*= % sizeofB. *= % sizeofC.*= sizeof %D.*= % sizeof20.在数据库管理系统提供的数据功能中,负责数据的完整性、安全性的定义功能的是( )。(分数:2.00)A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制语言21.若有如下程序:#includeiostreamusing namespace std;int s=0;class samplestatic int n;pubic:sample(int i)n=i;static void add()S+=n;int sample:
10、n=O;int main()sample a(2),b(5);sample:add();coutsendl;return 0;程序运行后的输出结果是( )。(分数:2.00)A.2B.5C.7D.322.下面不属于软件开发时期的是( )。(分数:2.00)A.软件定义阶段B.软件设计阶段C.软件实现阶段D.软件测试阶段23.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型D.调用该函数时的主调函数类型24.有如下类声明:class Fooint bar;;则 Foo 类的成员 bar
11、是( )。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数25.以下选项中合法的用户标识符是( )。(分数:2.00)A.longB._2TestC.3DmaxD.d26.设有如下关系表:(分数:2.00)A.T=RSB.T=RSC.T=RSD.T=R/S27.下面对对象概念描述正确的是( )。(分数:2.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通信靠文本传递D.操作是对象的静态属性28.关于函数重载,下列叙述中错误的是( )。(分数:2.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的
12、返回值类型必须相同D.重载函数的函数体可以有所不同29.类 MyClass 的定义如下,若要对 value 赋值,则下面语句正确的是( )。class MyClasspublic:MyClass()MyClass(int I)value=new mki;int*value;(分数:2.00)A.MyClass my;my.value=10;B.MyClassmy;*my.alue=10;C.MyClass my;my.*value=10;D.MyClass my(10);30.若类 A 和类 B 的定义如下:class Aint i,j;public:int geti()return i;cl
13、ass B : public Aint k;public:void make()k=i*j;则上述定义中非法的表达式是( )。(分数:2.00)A.k=i*jB.int k;C.return i;D.void make()31.下列关于 this 指针的叙述中,正确的是( )。(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针32.( )是析构函数的特征。(分数:2.00)A.一个类中只能定义一个析构函数B.析构函数名与类名不同C.析构函数的定义只能在类体内D.析构函数可
14、以有一个或多个参数33.语句 int*p=p=p=k;C.int*p;*p=*p=k;34.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表35.下列不属于关系数据库的数据及更新操作必须遵循的规则的是( )。(分数:2.00)A.实体完整性B.过程完整性C.参照完整性D.用户自定义完整性二、填空题(总题数:15,分数:30.00)36.在面向对象方法中,类的实例称为 【1】 。(分数:2.00)填空项 1:_37.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是 【2】 。(分数:2.
15、00)填空项 1:_38.为了使模块尽可能独立,要求模块的内聚程度要尽量高,且各模块间的耦合程度要尽量 【3】 。(分数:2.00)填空项 1:_39.由关系数据库系统支持的完整性约束是指 【4】 和参照完整性。(分数:2.00)填空项 1:_40.设树 T 的度为 4,其中度为 1,2,3,4 的结点个数分别为 4,2,1,1,则 T 中的叶子结点数为 【5】 。(分数:2.00)填空项 1:_41.对基类数据成员的初始化必须派生类的构造函数中的 【6】 处执行。(分数:2.00)填空项 1:_42.重载的流运算符函数经常定义为类的 【7】 函数。(分数:2.00)填空项 1:_43. 【8
16、】 是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。(分数:2.00)填空项 1:_44.下列程序的输出结果是 【9】 。#includeiostream#includecstringusing namespace std;void fun(const char*s,char int main()char str=“ABCDE“;char ch=str1;fun(str, ch);coutch;return 0;(分数:2.00)填空项 1:_45.下列程序的输出结果是 【10】 。#includeiostreamusing names
17、pace std;void fun(int int main()int num= 500;fun(num);coutnumendl;return O;(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是 【11】 。#includeiostream.hvoid main()char a=“abcdabcabfgacd“;int i 10,i2=0,i=0;while (ai)if (ai=a)il+;if (ai=b)i2+;i+;coutil i2endl;(分数:2.00)填空项 1:_47.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为 【12】 。(分
18、数:2.00)填空项 1:_48.以下程序的执行结果是 【13】 。#includeiostream.hvoid main()cout.fill(*);cout.width(10);cout123.45endl;cout.width(8);cout123.45endl;cout.width(4);cout123.45endl;(分数:2.00)填空项 1:_49.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为 【14】 。(分数:2.00)填空项 1:_50.下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变。请填空。#i
19、ncludeiostream.h #includestring.hmain()char a=“clanguage“,t; /一定是偶数个数int i,j,k;k=strlen(a);for(i=0;i=k-2;i+=2)for(j=i+2;j=k; j=j+2)if( 【15】 )t=ai;ai=aj;aj=t;coutaendl;(分数:2.00)填空项 1:_二级 C+笔试-297 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.在数据库管理系统的层次结构中,处于最下层的是( )。(分数:2.00)A.应用层B.语言翻译处理层C.数据存取
20、层D.数据存储层 解析:2.下列各 C+程序段中,不包含复合语句的选项为( )。(分数:2.00)A.x=y+z;B.for(i=1;k0;i+)if(i%3=1)coutiendl; C.while(i10)coutiendl;i+;D.if(i10)i=i+1;解析:3.下列关于栈的描述正确的是( )。(分数:2.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:4.线性表 L=(a1,a2,a3,ai,an),下列说法正确的是( )。(分数:2.0
21、0)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 解析:5.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extem int x,y;coutadd(x,y)endl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;)(分数:2.00)A.25 B.30C.20D.15解析:6.下列程序段中有错的是( )
22、。(分数:2.00)A.templateClass TypeB.TypeC.func(Type a,b) D.return(ab)?(a):(b);解析:7.在 C+语言中,形参的缺省存储类型是( )。(分数:2.00)A.auto B.registerC.staticD.extem解析:8.有以下程序:#includeiostreamusing namespace std;class Rpublic:R(int r1,int r2)R1=r1;R2=r2;void print();void print0const;private:int R1,R2;void R:print()coutR1“
23、,“R2endl;void R:print() constcoutRl“,“R2endl;int main()R a(5,4);const R b(20,52);b.print();return 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.20,52 C.0,0D.4,5解析:9.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作 D.数元素的物理顺序与逻辑顺序相同解析:10.若变量 a 是 int 类型,并执行了语句:a=A+1.6;,则正确的叙述是( )。(分数:2.00)A.a 的值是字符 CB.a 的
24、值是浮点型C.不允许字符型的浮点型相加D.a 的值是字符A的 ASC值加上 1 解析:11.以下程序的输出结果是( )。#includeiostream.hvoid main()int a(5),b(6),i(0),j(0);switch(a)case 5:switch(b)case 5:i+;break;case 6:j+;break;default:i+;j+;case 6:i+;j+;break;default:i+;j+;couti“,“jendl;(分数:2.00)A.1,2 B.1,3C.2,2D.2,3解析:12.下列程序的运行结果为( )。#includeiostream.hv
25、oid main()int a=2;int b=a+1;couafoendl;(分数:2.00)A.0.66667B.0 C.0.7D.0.66666666解析:13.下面关于 C+流的叙述中,正确的是( )。(分数:2.00)A.cin 是一个输入流对象 B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char*y=“PQMN“;couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80);时,若键入 Happy new year 则 x 中的字符串是“Happy“解析:14.下面程序的输出结果是( )。#includei
26、ostream.h#include“stdng.h“void main()char a=“welcome“,b=“well“;strcpy(a,b);coutaendl;(分数:2.00)A.wellomeB.wellcomC.well D.wellwe解析:15.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是( )。(分数:2.00)A.“cout是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符 解析:16.下列关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员
27、函数可以设置参数的默认值D.成员函数可以是静态的解析:17.若有以下定义:char s(10)=“program“,t=“test“;则下列选项中对字符串操作错误的是( )。(分数:2.00)A.strcpy(s,t);B.strcat(s,t); C.coutstrlen(s);D.gets(s);解析:18.下列叙述中正确的是( )。(分数:2.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试 D.程序经调试改错后不必进行再测试解析:19.C+中运算符优先级由低到高排列正确的是( )。(分数:2.00)A.*= % sizeofB. *=
28、 % sizeofC.*= sizeof %D.*= % sizeof 解析:20.在数据库管理系统提供的数据功能中,负责数据的完整性、安全性的定义功能的是( )。(分数:2.00)A.数据定义语言 B.数据转换语言C.数据操纵语言D.数据控制语言解析:21.若有如下程序:#includeiostreamusing namespace std;int s=0;class samplestatic int n;pubic:sample(int i)n=i;static void add()S+=n;int sample:n=O;int main()sample a(2),b(5);sample:
29、add();coutsendl;return 0;程序运行后的输出结果是( )。(分数:2.00)A.2B.5 C.7D.3解析:22.下面不属于软件开发时期的是( )。(分数:2.00)A.软件定义阶段 B.软件设计阶段C.软件实现阶段D.软件测试阶段解析:23.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型 D.调用该函数时的主调函数类型解析:24.有如下类声明:class Fooint bar;;则 Foo 类的成员 bar 是( )。(分数:2.00)A.公有数据成员B.公有
30、成员函数C.私有数据成员 D.私有成员函数解析:25.以下选项中合法的用户标识符是( )。(分数:2.00)A.longB._2Test C.3DmaxD.d解析:26.设有如下关系表:(分数:2.00)A.T=RSB.T=RS C.T=RSD.T=R/S解析:27.下面对对象概念描述正确的是( )。(分数:2.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体 C.对象间的通信靠文本传递D.操作是对象的静态属性解析:28.关于函数重载,下列叙述中错误的是( )。(分数:2.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同
31、D.重载函数的函数体可以有所不同解析:29.类 MyClass 的定义如下,若要对 value 赋值,则下面语句正确的是( )。class MyClasspublic:MyClass()MyClass(int I)value=new mki;int*value;(分数:2.00)A.MyClass my;my.value=10;B.MyClassmy;*my.alue=10;C.MyClass my;my.*value=10;D.MyClass my(10); 解析:30.若类 A 和类 B 的定义如下:class Aint i,j;public:int geti()return i;clas
32、s B : public Aint k;public:void make()k=i*j;则上述定义中非法的表达式是( )。(分数:2.00)A.k=i*j B.int k;C.return i;D.void make()解析:31.下列关于 this 指针的叙述中,正确的是( )。(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针 解析:32.( )是析构函数的特征。(分数:2.00)A.一个类中只能定义一个析构函数 B.析构函数名与类名不同C.析构函数的定义只能在类体内
33、D.析构函数可以有一个或多个参数解析:33.语句 int*p=p=p=k;C.int*p;*p=*p=k;解析:34.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:35.下列不属于关系数据库的数据及更新操作必须遵循的规则的是( )。(分数:2.00)A.实体完整性B.过程完整性 C.参照完整性D.用户自定义完整性解析:二、填空题(总题数:15,分数:30.00)36.在面向对象方法中,类的实例称为 【1】 。(分数:2.00)填空项 1:_ (正确答案:对象)解析:37.完全不考虑程序的内部结构和内部特征
34、,而只是根据程序功能导出测试用例的测试方法是 【2】 。(分数:2.00)填空项 1:_ (正确答案:黑箱)解析:38.为了使模块尽可能独立,要求模块的内聚程度要尽量高,且各模块间的耦合程度要尽量 【3】 。(分数:2.00)填空项 1:_ (正确答案:弱)解析:39.由关系数据库系统支持的完整性约束是指 【4】 和参照完整性。(分数:2.00)填空项 1:_ (正确答案:实体完整性)解析:40.设树 T 的度为 4,其中度为 1,2,3,4 的结点个数分别为 4,2,1,1,则 T 中的叶子结点数为 【5】 。(分数:2.00)填空项 1:_ (正确答案:8)解析:41.对基类数据成员的初始
35、化必须派生类的构造函数中的 【6】 处执行。(分数:2.00)填空项 1:_ (正确答案:成员初始化列表)解析:42.重载的流运算符函数经常定义为类的 【7】 函数。(分数:2.00)填空项 1:_ (正确答案:友元)解析:43. 【8】 是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。(分数:2.00)填空项 1:_ (正确答案:构造函数)解析:44.下列程序的输出结果是 【9】 。#includeiostream#includecstringusing namespace std;void fun(const char*s,char
36、 int main()char str=“ABCDE“;char ch=str1;fun(str, ch);coutch;return 0;(分数:2.00)填空项 1:_ (正确答案:C)解析:45.下列程序的输出结果是 【10】 。#includeiostreamusing namespace std;void fun(int int main()int num= 500;fun(num);coutnumendl;return O;(分数:2.00)填空项 1:_ (正确答案:1000)解析:46.以下程序运行后的输出结果是 【11】 。#includeiostream.hvoid mai
37、n()char a=“abcdabcabfgacd“;int i 10,i2=0,i=0;while (ai)if (ai=a)il+;if (ai=b)i2+;i+;coutil i2endl;(分数:2.00)填空项 1:_ (正确答案:43)解析:47.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为 【12】 。(分数:2.00)填空项 1:_ (正确答案:x.operator+(operator*(y,z))解析:48.以下程序的执行结果是 【13】 。#includeiostream.hvoid main()cout.fill(*);cout.width(10)
38、;cout123.45endl;cout.width(8);cout123.45endl;cout.width(4);cout123.45endl;(分数:2.00)填空项 1:_ (正确答案:*123.45*123.45123.45)解析:49.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为 【14】 。(分数:2.00)填空项 1:_ (正确答案:上溢)解析:50.下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变。请填空。#includeiostream.h #includestring.hmain()char a=“clanguage“,t; /一定是偶数个数int i,j,k;k=strlen(a);for(i=0;i=k-2;i+=2)for(j=i+2;j=k; j=j+2)if( 【15】 )t=ai;ai=aj;aj=t;coutaendl;(分数:2.00)填空项 1:_ (正确答案:ajai)解析: