1、二级 C+笔试 46及答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列关于运算符重载的描述中, _ 是正确的。(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构2.两个关系有若干相同属性名等值连接,并去掉重复属性的关系代数运算称为 _。(分数:2.00)A.取列运算B.投影运算C.自然连接D.选择运算3.若有定义“int x=10,y=3,z;”,则语句“cout(z(x%y,x/Y);”的输出结果是 _。(分数:2.00)A.1B.0C.4D.
2、34.以下程序输出结果是 _。 #includeiostream.h void fun(int x,int y,int z)zxy; void main() int a=10; fun (2,2,a); couta; (分数:2.00)A.0B.4C.10D.无定值5.设 char str111=“HELLO,“,str210=“world”;则执行语句 coutstrlen(strcpy(str,str2);后的输出结果是 _。(分数:2.00)A.12B.11C.7D.56.下列程序中说明的私有成员是 _。 class Location int x; public: void init(i
3、nt initX,int initY); private: int y; public: int SetX(); Int SetY();(分数:2.00)A.xB.yC.SetX(),SetY()D.B和 A都是7.下列对类的构造函数和析构函数描述正确的是 _。(分数:2.00)A.构造函数不能重载,析构函数可以重载。B.构造函数可以重载,析构也可以重载。C.构造函数不能重载,析构函数也不能重载。D.构造函数可以重载,析构函数不能重载。8.以下程序的输入结果是 _。 #includeiostream.h void main() int a33=(2,3,4,5,6,, i,j, s=0; fo
4、r(i=1; i3;i+) for(j=1; j=i; j+) s+=aij; couts; (分数:2.00)A.10B.18C.20D.219.在整型指针变量 ptr1、ptr12 的定义中,错误的是 _。(分数:2.00)A.int x, *ptr1, ptr2;B.int*ptrl, x, *ptr2;C.int x,*ptrl=后,*(p+4)的值是 _。(分数:2.00)A.“abcd”B.dC./0D.不能确定17.程序的三种基本控制结构是 _。(分数:2.00)A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移18.对于任意一个类,析构函数的个
5、数最多为 _。(分数:2.00)A.0B.1C.2D.319.假设所有变量均为整型,则表达式(a:2,b=5,b+,a+b) 的值 _。(分数:2.00)A.8B.7C.6D.420.下列关于虚函数调用的描述, _ 是正确的。(分数:2.00)A.一定使用动态联编B.一定使用静态联编C.必须使用动态联编D.不一定使用动态联编21.下面程序段的输出结果是 _。 char *s= “12345“; s+=2; couts;(分数:2.00)A.345B.字符3C.字符3的地址D.无确定的输出结果22.一个函数功能不太复杂,但要求被频繁调用,选用 _。(分数:2.00)A.内联函数B.重载函数C.递
6、归函数D.嵌套函数23.对二叉树从 1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用 _ 遍历实现编号。(分数:2.00)A.无序B.中序C.后序D.从根开始的层次遍历24.一个函数无返回值时,应选择的函数类型是 _。(分数:2.00)A.voidB.intC.不确定D.float25.结构化程序设计的一种基本方法是 _。(分数:2.00)A.归纳法B.逐步求精法C.递归法D.穷尽法26.若有一下程序段 int *ptr,x,y=11; ptr= else if(B) if(!C) d=15; else d=20;
7、cout “d=” dend1;(分数:2.00)填空项 1:_43.下面程序用于计算矩阵的两条对角线上的元素之和。补充下列语句,实现该功能。 #includeiostream.h void main() int a3,3=9,8,7,6,5,4,3,2,1; int sum1=0,sum2=0,i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(i=j)sum1+=aij; for(i=0;i3:i+) for(j=2;U 8 /U;j-) if(i+j=2)sum2+=aij; (分数:2.00)填空项 1:_44.分析下列程序,并写出运行结果U 9 /U。 #in
8、cludeiostream.h void main() int x10: int i=5,*ptr=x; *(ptr+i)=10; coutxiend1;(分数:2.00)填空项 1:_45.以下程序运行后的输出结果是U 10 /U。 #includeiostream.h void main() char s“123456”,*p; for(p=s; ps+2; p+) coutpend1; (分数:2.00)填空项 1:_46.如果要把 viod fun()定义为类 X的友元函数:则应在类 X的定义中加入语句U 11 /U。(分数:2.00)填空项 1:_47.基类的U 12 /U不能被派生
9、类的成员访问,基类的U 13 /U在派生类中的性质和继承的性质一样,而基类的U 14 /U在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。(分数:2.00)填空项 1:_48.ios类中定义的用于控制输入输出的枚举常量中,用于控制对齐方式的常量有 left、right 和U 15 /U。(分数:2.00)填空项 1:_二级 C+笔试 46答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列关于运算符重载的描述中, _ 是正确的。(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先
10、级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构 解析:2.两个关系有若干相同属性名等值连接,并去掉重复属性的关系代数运算称为 _。(分数:2.00)A.取列运算B.投影运算C.自然连接 D.选择运算解析:3.若有定义“int x=10,y=3,z;”,则语句“cout(z(x%y,x/Y);”的输出结果是 _。(分数:2.00)A.1B.0C.4D.3 解析:4.以下程序输出结果是 _。 #includeiostream.h void fun(int x,int y,int z)zxy; void main() int a=10; fun (2,2,a); couta; (分数
11、:2.00)A.0B.4C.10 D.无定值解析:5.设 char str111=“HELLO,“,str210=“world”;则执行语句 coutstrlen(strcpy(str,str2);后的输出结果是 _。(分数:2.00)A.12B.11C.7D.5 解析:6.下列程序中说明的私有成员是 _。 class Location int x; public: void init(int initX,int initY); private: int y; public: int SetX(); Int SetY();(分数:2.00)A.xB.yC.SetX(),SetY() D.B和
12、A都是 解析:7.下列对类的构造函数和析构函数描述正确的是 _。(分数:2.00)A.构造函数不能重载,析构函数可以重载。 B.构造函数可以重载,析构也可以重载。C.构造函数不能重载,析构函数也不能重载。D.构造函数可以重载,析构函数不能重载。解析:8.以下程序的输入结果是 _。 #includeiostream.h void main() int a33=(2,3,4,5,6,, i,j, s=0; for(i=1; i3;i+) for(j=1; j=i; j+) s+=aij; couts; (分数:2.00)A.10 B.18C.20D.21解析:9.在整型指针变量 ptr1、ptr1
13、2 的定义中,错误的是 _。(分数:2.00)A.int x, *ptr1, ptr2;B.int*ptrl, x, *ptr2; C.int x,*ptrl=后,*(p+4)的值是 _。(分数:2.00)A.“abcd”B.dC./0 D.不能确定解析:17.程序的三种基本控制结构是 _。(分数:2.00)A.过程、子程序和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:18.对于任意一个类,析构函数的个数最多为 _。(分数:2.00)A.0B.1 C.2D.3解析:19.假设所有变量均为整型,则表达式(a:2,b=5,b+,a+b) 的值 _。(分数:2.00)A
14、.8 B.7C.6D.4解析:20.下列关于虚函数调用的描述, _ 是正确的。(分数:2.00)A.一定使用动态联编B.一定使用静态联编C.必须使用动态联编 D.不一定使用动态联编解析:21.下面程序段的输出结果是 _。 char *s= “12345“; s+=2; couts;(分数:2.00)A.345B.字符3 C.字符3的地址D.无确定的输出结果解析:22.一个函数功能不太复杂,但要求被频繁调用,选用 _。(分数:2.00)A.内联函数 B.重载函数C.递归函数D.嵌套函数解析:23.对二叉树从 1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左
15、孩子的编号小于其右孩子的编号,则可采用 _ 遍历实现编号。(分数:2.00)A.无序B.中序C.后序 D.从根开始的层次遍历解析:24.一个函数无返回值时,应选择的函数类型是 _。(分数:2.00)A.void B.intC.不确定D.float解析:25.结构化程序设计的一种基本方法是 _。(分数:2.00)A.归纳法B.逐步求精法 C.递归法D.穷尽法解析:26.若有一下程序段 int *ptr,x,y=11; ptr= else if(B) if(!C) d=15; else d=20; cout “d=” dend1;(分数:2.00)填空项 1:_ (正确答案:15)解析:43.下面
16、程序用于计算矩阵的两条对角线上的元素之和。补充下列语句,实现该功能。 #includeiostream.h void main() int a3,3=9,8,7,6,5,4,3,2,1; int sum1=0,sum2=0,i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(i=j)sum1+=aij; for(i=0;i3:i+) for(j=2;U 8 /U;j-) if(i+j=2)sum2+=aij; (分数:2.00)填空项 1:_ (正确答案:j=0)解析:44.分析下列程序,并写出运行结果U 9 /U。 #includeiostream.h void ma
17、in() int x10: int i=5,*ptr=x; *(ptr+i)=10; coutxiend1;(分数:2.00)填空项 1:_ (正确答案:10)解析:45.以下程序运行后的输出结果是U 10 /U。 #includeiostream.h void main() char s“123456”,*p; for(p=s; ps+2; p+) coutpend1; (分数:2.00)填空项 1:_ (正确答案:123456)解析:2345646.如果要把 viod fun()定义为类 X的友元函数:则应在类 X的定义中加入语句U 11 /U。(分数:2.00)填空项 1:_ (正确答案:friend void fun())解析:47.基类的U 12 /U不能被派生类的成员访问,基类的U 13 /U在派生类中的性质和继承的性质一样,而基类的U 14 /U在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。(分数:2.00)填空项 1:_ (正确答案:12私有成员 13公有成员 14保护成员)解析:48.ios类中定义的用于控制输入输出的枚举常量中,用于控制对齐方式的常量有 left、right 和U 15 /U。(分数:2.00)填空项 1:_ (正确答案:internal)解析: