1、二级 C+笔试-226 及答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.数据库管理系统 DBMS 中用来定义模式、内模式和外模式的语言是 _ 。(分数:2.00)A.DMLB.CC.DDLD.Pascal2.以下程序的输出结果是 _。#includeiostream.h#includestring.hvoid main()char *p1=“,hello“,*p2=“world!“,str50:“Hii“;strcpy(str+2,p1);strcat(str,p2);coutstr;(分数:2.00)A.Hii,hello world!B.
2、hello world!C.ii,hello world!D.Hi,hello world!3.下面的函数原型非法的是 _。(分数:2.00)A.void f(int a=1,int b=1)B.int f(double f,char s,int i=1,intj)C.void f(int a, intb)D.int f(double f,char s,int i=1,int j=0)4.定义一个具有 10 个元素的整型数组,应当使用语句是 _。(分数:2.00)A.int a10B.iht a2,5C.int a D.int*a10:5.当+运算符被重载为友元函数时,友元运算符 Obj1+o
3、bj2 被 C+编译器解释为 _。(分数:2.00)A.operator+(objl, obj2)B.+(obj1, obj2)C.obj2.operator+(obj1)D.obj1,operator(obj2)6.以下程序的执行结果是 _。#includeiostream.hclass Sampleint x;public:Sample();Sample(int(分数:2.00)A.x=a;7.程序的三种基本控制结构的共同特点是 _。(分数:2.00)A.不能嵌套使用B.只能用来写简单程序C.已经用硬件实现D.只有一个入口和一个出口8.已知一个类 A 的定义如下,则执行“Ax(3); ”语
4、句后,x.a 和 x.b 的值分别为 _。class Aint a, b;public:A(int aa=1,int bb=0)a=aa;b=bb ;(分数:2.00)A.1 和 0B.3 和 1C.1 和 3D.3 和 09.下列关于派生类的构造函数的说法中,哪个是错误的 _。(分数:2.00)A.派生类不继承基类的构造函数和赋值运算B.派生类的构造函数可以调用基类的构造函数C.派生类的构造函数先于基类的构造函数执行D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员10.设 R 和 S 为二个关系,_ 中的符号分别代表选择、投影、笛卡儿积的关系代数运算(分数:
5、2.00)A.F(R)、 A(R)、RSB.EA(R)、VA(S),R*SC.RS、RS、RSD.A(R)、F(R)、RS11.类的析构函数的作用是 _。(分数:2.00)A.一般成员函数B.类的初始化C.对象的初始化D.删除对象创建的所有对象12.指出下面程序段中的错误的是 _。class X/Aint a,b;public:X(int aa,int bb) a=aa; b=bb;/B:X x(2,3);/CX y(4); /D(分数:2.00)A.B.C.D.13.关于二进制文件说法错误的是 _。(分数:2.00)A.文本文件中,每个字节单元的内容均为字符的 ASCII 码。B.二进制文件
6、中,字符串仍然保存为每个字符的 ASCII 码。C.数 10,在文本文件中表示为 1 和 0 二个字符的 ASCII 码,而在二进制文件中表示为二进制数“0000 10100”D.文本文件中,文件内容在内存中的映像与在磁盘上的映像完全一样。14.若有 int x=1,2,3,4,5,6,7,8,9,10,*p=x;则值为 4 的表达式是 _。(分数:2.00)A.p+=2,*(p+)B.p+=2,*+pC.p+=3,*p+D.p+=2,+*p15.以下程序段的输出结果是 _。int a=5,b=4,c=6,d;cout(d=ab?(ac?a:c):b);(分数:2.00)A.5B.4C.6D.
7、不确定16.软件文档是软件工程实施中的重要部分, 它不仅是软件开发各阶段的重要依据,而且影响软件的 _ 。(分数:2.00)A.可理解性B.可维护性C.可扩展性D.可移植性17.已知类 A 中的一个成员函数的说明如下:void SetValue(A if(x1+6)cout+yend1;if(x6)cout-yend1;elsecouty+end1;(分数:2.00)A.8B.9C.7D.编译不成功21.下述关于 break 语句的描述中, _ 是不正确的。(分数:2.00)A.break 语句可用于循环体内,它将退出该循环B.break 语句可用于 switch 语句中,它将退出 switc
8、h 语句C.break 语句可用于 if 体内,它将退出 if 语句D.break 语句在一个循环内可以出现多次22.对于基类型相同的两个指针变量之间,不能进行的运算是 _。(分数:2.00)A.B.C.+D.23.下列有关虚基类的声明中,语法格式正确的是 _ 。(分数:2.00)A.class virtual B :public AB.virtual class B :public AC.class B :public A virtualD.class B :virtual public A24.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 _。(分数:2.00)A.地
9、址传递B.单向值传递C.由实参传给形参,再由形参传给实参D.传递方式由用户指定25.对于顺序存储的队列,存储空间大小为 n,头指针为 F,尾指针为 R。若在逻辑上看成一个环,则队列中元素的个数为 _。(分数:2.00)A.R-FB.n+R-FC.(R-F+1)mod nD.(n+R-F)mod n26.公有继承的情况下,基类成员在派生类中的访问权限 _。(分数:2.00)A.受限制B.保持不变C.受保护D.不受保护27.当一个类的某个函数被说明为 virtual 时,该函数在该类的所有派生类中 _。(分数:2.00)A.都是虚函数B.只有被重新说明时才是虚函数C.只有被重新说明为 virtua
10、l 时才是虚函数D.都不是虚函数28.下面描述中正确的是 _。(分数:2.00)A.virtual 可以用于声明虚函数B.含有纯虚函数的类不可以用来创建对象C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化列表来初始化29.若某完全二叉树的深度为 h,则该完全二叉树中至少有 _ 个结点。(分数:2.00)A.2hB.2h-1C.2h-1-1D.2h-1+130.数据结构中,通常采用两种方法衡量算法的时间复杂性,即 _。(分数:2.00)A.最大时间复杂性和最小时间复杂性B.最好时间复杂性和最坏时间复杂性C.部分时间复杂性和总体时间复杂性D.平均时间复杂性
11、和最坏时间复杂性31.某二叉树的中序序列和后序序列正好相反,则该二叉树一定是 _ 的二叉树。(分数:2.00)A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子32.一个教师能开多门课程,一门课程有许多教师会开,实体课程与实体教师间是 _。(分数:2.00)A.一对一的联系B.一对多的联系C.多对多的联系D.多对一的联系33.在 C+语言中,080 是 _。(分数:2.00)A.十进制数B.八进制数C.十六进制数D.非法数34.下列不能被重载的运算符是 _。(分数:2.00)A.+B.C.?:D.for(k=1;k3;k+)coutwk“ “;(分数:2.00)A
12、.ABC FGH KLB.ABC EFG IJ UC.EFG JK 0D.DEFGH IJKL二、填空题(总题数:13,分数:26.00)36.线性表最常用的操作是存取第 i 个元素及其前趋的值,则采用 1 存储方式节省时间。(分数:2.00)填空项 1:_37.结构化程序设计方法的主要原理的是 2 。(分数:2.00)填空项 1:_38.对线性表采用折半查找法,该线性表必须 3 。(分数:2.00)填空项 1:_39.在关系代数运算中,并、笛卡尔积、投影、选择和 4 为基本的运算。(分数:2.00)填空项 1:_40.成本效益分析的目的是从 5 角度评价开发一个项目是否可行。(分数:2.00
13、)填空项 1:_41.若有:int x=25,y=14,z=19;则在计算表达式 x+=25while(i2);coutsumend1;(分数:2.00)填空项 1:_43.若有 int x5,*p=x;则数组元素 x3可以表示为*(p+ 8 ),也可以表示为 p3。(分数:2.00)填空项 1:_44. 9 是一种特殊的成员函数,户主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。(分数:2.00)填空项 1:_45.下列程序中,先声明一个圆类 circle 和一个桌子类 table,另外声明一个圆桌类 roundtable,它是由 circle 和 tabl
14、e 两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度,面积和颜色。请填空完成程序#includeiostream.h#includestring.hclass circledouble radius;public:circle(double r)radius=r;double get_area()return 3.416*radius*radius;class tabledouble height;public:table(double h)height=h;double get_height()return height;class roundtable:public table,pu
15、blic circlechar *color;public:roundtable(double h,double r,char c): 10 color=new charstrlen(c) +1;11 ;char*get_color()return color;:void main()roundtable rt(0.8,1.0,“白色”);cout“圆桌的高:“rt. get_height()end1;cout“圆桌面积:“rt.get_area()end1;cout“圆桌颜色:“n.get color()end1;(分数:2.00)填空项 1:_46.派生类中所定义的虚函数的 12 不影响对
16、它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的 13 ,都可以实现运行时多态性。(分数:2.00)填空项 1:_47.如果要在类的对象上使用运算符,除了运算符=和 14 以外,其它的必须都要被重载。(分数:2.00)填空项 1:_48.所有的函数模板定义都是以关键字 15 开始的。(分数:2.00)填空项 1:_二级 C+笔试-226 答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.数据库管理系统 DBMS 中用来定义模式、内模式和外模式的语言是 _ 。(分数:2.00)A.DMLB.CC.DDL D.Pascal解析:2.以下
17、程序的输出结果是 _。#includeiostream.h#includestring.hvoid main()char *p1=“,hello“,*p2=“world!“,str50:“Hii“;strcpy(str+2,p1);strcat(str,p2);coutstr;(分数:2.00)A.Hii,hello world!B.hello world!C.ii,hello world!D.Hi,hello world! 解析:3.下面的函数原型非法的是 _。(分数:2.00)A.void f(int a=1,int b=1)B.int f(double f,char s,int i=1,
18、intj) C.void f(int a, intb)D.int f(double f,char s,int i=1,int j=0)解析:4.定义一个具有 10 个元素的整型数组,应当使用语句是 _。(分数:2.00)A.int a10 B.iht a2,5C.int a D.int*a10:解析:5.当+运算符被重载为友元函数时,友元运算符 Obj1+obj2 被 C+编译器解释为 _。(分数:2.00)A.operator+(objl, obj2) B.+(obj1, obj2)C.obj2.operator+(obj1)D.obj1,operator(obj2)解析:6.以下程序的执行
19、结果是 _。#includeiostream.hclass Sampleint x;public:Sample();Sample(int(分数:2.00)A.x=a;解析:7.程序的三种基本控制结构的共同特点是 _。(分数:2.00)A.不能嵌套使用B.只能用来写简单程序C.已经用硬件实现D.只有一个入口和一个出口 解析:8.已知一个类 A 的定义如下,则执行“Ax(3); ”语句后,x.a 和 x.b 的值分别为 _。class Aint a, b;public:A(int aa=1,int bb=0)a=aa;b=bb ;(分数:2.00)A.1 和 0B.3 和 1C.1 和 3D.3
20、和 0 解析:9.下列关于派生类的构造函数的说法中,哪个是错误的 _。(分数:2.00)A.派生类不继承基类的构造函数和赋值运算B.派生类的构造函数可以调用基类的构造函数C.派生类的构造函数先于基类的构造函数执行 D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员解析:10.设 R 和 S 为二个关系,_ 中的符号分别代表选择、投影、笛卡儿积的关系代数运算(分数:2.00)A.F(R)、 A(R)、RS B.EA(R)、VA(S),R*SC.RS、RS、RSD.A(R)、F(R)、RS解析:11.类的析构函数的作用是 _。(分数:2.00)A.一般成员函数B.类
21、的初始化C.对象的初始化D.删除对象创建的所有对象 解析:12.指出下面程序段中的错误的是 _。class X/Aint a,b;public:X(int aa,int bb) a=aa; b=bb;/B:X x(2,3);/CX y(4); /D(分数:2.00)A.B.C.D. 解析:13.关于二进制文件说法错误的是 _。(分数:2.00)A.文本文件中,每个字节单元的内容均为字符的 ASCII 码。B.二进制文件中,字符串仍然保存为每个字符的 ASCII 码。C.数 10,在文本文件中表示为 1 和 0 二个字符的 ASCII 码,而在二进制文件中表示为二进制数“0000 10100”D
22、.文本文件中,文件内容在内存中的映像与在磁盘上的映像完全一样。 解析:14.若有 int x=1,2,3,4,5,6,7,8,9,10,*p=x;则值为 4 的表达式是 _。(分数:2.00)A.p+=2,*(p+)B.p+=2,*+pC.p+=3,*p+ D.p+=2,+*p解析:15.以下程序段的输出结果是 _。int a=5,b=4,c=6,d;cout(d=ab?(ac?a:c):b);(分数:2.00)A.5B.4C.6 D.不确定解析:16.软件文档是软件工程实施中的重要部分, 它不仅是软件开发各阶段的重要依据,而且影响软件的 _ 。(分数:2.00)A.可理解性B.可维护性 C.
23、可扩展性D.可移植性解析:17.已知类 A 中的一个成员函数的说明如下:void SetValue(A if(x1+6)cout+yend1;if(x6)cout-yend1;elsecouty+end1;(分数:2.00)A.8B.9C.7 D.编译不成功解析:21.下述关于 break 语句的描述中, _ 是不正确的。(分数:2.00)A.break 语句可用于循环体内,它将退出该循环B.break 语句可用于 switch 语句中,它将退出 switch 语句C.break 语句可用于 if 体内,它将退出 if 语句 D.break 语句在一个循环内可以出现多次解析:22.对于基类型相
24、同的两个指针变量之间,不能进行的运算是 _。(分数:2.00)A.B.C.+ D.解析:23.下列有关虚基类的声明中,语法格式正确的是 _ 。(分数:2.00)A.class virtual B :public AB.virtual class B :public AC.class B :public A virtualD.class B :virtual public A 解析:24.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 _。(分数:2.00)A.地址传递B.单向值传递 C.由实参传给形参,再由形参传给实参D.传递方式由用户指定解析:25.对于顺序存储的队列,存
25、储空间大小为 n,头指针为 F,尾指针为 R。若在逻辑上看成一个环,则队列中元素的个数为 _。(分数:2.00)A.R-F B.n+R-FC.(R-F+1)mod nD.(n+R-F)mod n解析:26.公有继承的情况下,基类成员在派生类中的访问权限 _。(分数:2.00)A.受限制 B.保持不变C.受保护D.不受保护解析:27.当一个类的某个函数被说明为 virtual 时,该函数在该类的所有派生类中 _。(分数:2.00)A.都是虚函数 B.只有被重新说明时才是虚函数C.只有被重新说明为 virtual 时才是虚函数D.都不是虚函数解析:28.下面描述中正确的是 _。(分数:2.00)A
26、.virtual 可以用于声明虚函数 B.含有纯虚函数的类不可以用来创建对象C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化列表来初始化解析:29.若某完全二叉树的深度为 h,则该完全二叉树中至少有 _ 个结点。(分数:2.00)A.2hB.2h-1 C.2h-1-1D.2h-1+1解析:30.数据结构中,通常采用两种方法衡量算法的时间复杂性,即 _。(分数:2.00)A.最大时间复杂性和最小时间复杂性B.最好时间复杂性和最坏时间复杂性C.部分时间复杂性和总体时间复杂性D.平均时间复杂性和最坏时间复杂性 解析:31.某二叉树的中序序列和后序序列正好相反
27、,则该二叉树一定是 _ 的二叉树。(分数:2.00)A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子 D.任一结点无右孩子解析:32.一个教师能开多门课程,一门课程有许多教师会开,实体课程与实体教师间是 _。(分数:2.00)A.一对一的联系B.一对多的联系C.多对多的联系 D.多对一的联系解析:33.在 C+语言中,080 是 _。(分数:2.00)A.十进制数B.八进制数C.十六进制数D.非法数 解析:34.下列不能被重载的运算符是 _。(分数:2.00)A.+B.C.?: D.for(k=1;k3;k+)coutwk“ “;(分数:2.00)A.ABC FGH KLB.ABC
28、 EFG IJ UC.EFG JK 0D.DEFGH IJKL 解析:二、填空题(总题数:13,分数:26.00)36.线性表最常用的操作是存取第 i 个元素及其前趋的值,则采用 1 存储方式节省时间。(分数:2.00)填空项 1:_ (正确答案:双向链表)解析:37.结构化程序设计方法的主要原理的是 2 。(分数:2.00)填空项 1:_ (正确答案:自顶向下,逐步求精)解析:38.对线性表采用折半查找法,该线性表必须 3 。(分数:2.00)填空项 1:_ (正确答案:采用顺序存储结构,且元素按值有序)解析:39.在关系代数运算中,并、笛卡尔积、投影、选择和 4 为基本的运算。(分数:2.
29、00)填空项 1:_ (正确答案:差)解析:40.成本效益分析的目的是从 5 角度评价开发一个项目是否可行。(分数:2.00)填空项 1:_ (正确答案:经济)解析:41.若有:int x=25,y=14,z=19;则在计算表达式 x+=25while(i2);coutsumend1;(分数:2.00)填空项 1:_ (正确答案:30)解析:43.若有 int x5,*p=x;则数组元素 x3可以表示为*(p+ 8 ),也可以表示为 p3。(分数:2.00)填空项 1:_ (正确答案:3)解析:44. 9 是一种特殊的成员函数,户主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的
30、其他内部管理操作。(分数:2.00)填空项 1:_ (正确答案:构造函数)解析:45.下列程序中,先声明一个圆类 circle 和一个桌子类 table,另外声明一个圆桌类 roundtable,它是由 circle 和 table 两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度,面积和颜色。请填空完成程序#includeiostream.h#includestring.hclass circledouble radius;public:circle(double r)radius=r;double get_area()return 3.416*radius*radius;class
31、tabledouble height;public:table(double h)height=h;double get_height()return height;class roundtable:public table,public circlechar *color;public:roundtable(double h,double r,char c): 10 color=new charstrlen(c) +1;11 ;char*get_color()return color;:void main()roundtable rt(0.8,1.0,“白色”);cout“圆桌的高:“rt.
32、 get_height()end1;cout“圆桌面积:“rt.get_area()end1;cout“圆桌颜色:“n.get color()end1;(分数:2.00)填空项 1:_ (正确答案:10 circle(r), table(h) 11 strcpy(color, c))解析:46.派生类中所定义的虚函数的 12 不影响对它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的 13 ,都可以实现运行时多态性。(分数:2.00)填空项 1:_ (正确答案:12访问属性 13任何地方)解析:47.如果要在类的对象上使用运算符,除了运算符=和 14 以外,其它的必须都要被重载。(分数:2.00)填空项 1:_ (正确答案:&)解析:48.所有的函数模板定义都是以关键字 15 开始的。(分数:2.00)填空项 1:_ (正确答案:template)解析: