1、二级 C+笔试-82 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列程序的运行结果是( )。#includeiostream.hint x5;int fun(int a)int C;C=X*a;return C;void main()int x3,a4;xx+fun(a);cout“x“xendl;(分数:2.00)A.x15B.x17C.x23D.x252.对于语句 coutsetfilll(*)setw(10)1setill(*)setw(2)2;的输出结果是( )。(分数:2.00)A.* * * * * * * * *1*2B.
2、* * * * * * * * 12C.* * * * * * * 1*2D.12* * * * * * * *3.数据库设计的根本目标是要解决( )。(分数:2.00)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护4.函数 swap(a,n)可完成对 a 数组从第 1 个元素到第 n 个元素两两交换。其中 b=1;b12;swap(b,2)。在运行调用函数中的语句后,b0和 b1的值分别为( )。(分数:2.00)A.1,1B.1,2C.2,2D.2,l5.下列程序输出的结果是( )。#includestdio.hun1(char a,char b)char c;ca;
3、a=b;bc;fun2(char*a,char b)char c;c=*a;*a=b;b=c;fun3(char*2,char*b)charc;c=*a;*a=*b;*b=c;void main()char a,b;a=A;b=B;funl(a,b);putchar(a);putchar(b);a=A;b=B;fun2(void main()int x10,y20,z30;fun(x,y,z);coutx,y,zendl;输出结果是( )。(分数:2.00)A.30,20,10B.10,20,30C.456,567,678D.678,567,45619.下列描述中,抽象类的特性是( )。(分数
4、:2.00)A.可以说明虚函数B.可以定义友元函数C.可以进行构造函数重载D.不能说明其对象20.下列关于 C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后+条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式21.在 E-R 图中,用来表示实体的图形是( )。(分数:2.00)A.矩形B.椭圆形C.菱形D.三角形22.下列字符串中可以用作 C+语言标识符的是( )。(分数:2.00)A._1234B.foobarC.virtualD
5、.34var23.有以下程序:main()int a5,b4,c3,d2;if(abc)coutdend1;else if(c-1)=d)=1)toutd+1endl;elsecoutd+2endl;(分数:2.00)A.2B.3C.4D.编译时有错,无结果24.以下程序中调用 cin 函数给变量 a 输入数值的方法是错误的,其错误原是( )。#includeiostream.hvoid main()int*p,*q,a,b;p;class Derived:public Basepublic:void fun()_/显示调用基类的 fun 函数cout“Derived:fun“endl;(分数
6、:2.00)填空项 1:_46._是实现 C+语言编译时多态性的机制,_是实现 C+语言运行时多态性的机制。(分数:2.00)填空项 1:_47.下列程序的运行结果是_。#includeiostream.h)class testprivate:int num;public:test();int TEST()return num+100;test();test:test()num0;test:test()cout“Destructor is active“endl;void main()test x3;coutx1.TEST()end1;(分数:2.00)填空项 1:_48.若下列程序运行时输出
7、结果为1,A,1012,B,35请将程序补充完整。#includeiostreamusing namespace std;int main()void test(mt,char,double_);test(1,A,10.1);test(2,B);return 0;void test(int a,char b,double c)couta,b,cendl;(分数:2.00)填空项 1:_49.友元类的所有成员函数都是另一个类的 1。(分数:2.00)填空项 1:_二级 C+笔试-82 答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列程序的运行
8、结果是( )。#includeiostream.hint x5;int fun(int a)int C;C=X*a;return C;void main()int x3,a4;xx+fun(a);cout“x“xendl;(分数:2.00)A.x15B.x17C.x23 D.x25解析:解析 由主函数 main 入手,首先 x 被赋值为 3,a 被赋值为 4。然后调用 fun 函数,参数为 4,所以在 fun 函数中的 a=4而主程序中的 x 作用域是由它定义开始到 cout 输出,在 fun 函数中无效。而在fun 函数定义首的变量。作用域是整个程序,所以 fun 函数中的 x 值为 5,这
9、样 c 的值就为 20。在主函数中的 x+fun(a)中的 x 为靠近这条语句的 x 定义,即 3,所以最后 x 的值为 20+3=23。2.对于语句 coutsetfilll(*)setw(10)1setill(*)setw(2)2;的输出结果是( )。(分数:2.00)A.* * * * * * * * *1*2 B.* * * * * * * * 12C.* * * * * * * 1*2D.12* * * * * * * *解析:解析 C+语言中 setfill 的意思是在空格的地方填上 setfill 函数中的参数字符,setw 的意思是设置整个输出字符串的字符个数,本题中用*来代替
10、空格。3.数据库设计的根本目标是要解决( )。(分数:2.00)A.数据共享问题 B.数据安全问题C.大量数据存储问题D.简化数据维护解析:解析 从数据库的概念中可以看到,所谓数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。因此进行数据库设计的根本目标还是为了解决数据共享问题。4.函数 swap(a,n)可完成对 a 数组从第 1 个元素到第 n 个元素两两交换。其中 b=1;b12;swap(b,2)。在运行调用函数中的语句后,b0和 b1的值分别为( )。(分数:2.00)A.1,1B.1,2C.2,2D.2,l 解析:解析 如果函数实参是数组名,形参也应为数组名,函数 swa
11、p 中形参进行了交换,实际上也是实参进行了交换。而且数组名代表数组首元素的地址,并不是代表戮组的全部元素。所以,swap(b,2)是数组 b 第一个元素与第二个元素进行交换,即 b0与 b1,根据题干,知道答案为 2,1。5.下列程序输出的结果是( )。#includestdio.hun1(char a,char b)char c;ca;a=b;bc;fun2(char*a,char b)char c;c=*a;*a=b;b=c;fun3(char*2,char*b)charc;c=*a;*a=*b;*b=c;void main()char a,b;a=A;b=B;funl(a,b);putc
12、har(a);putchar(b);a=A;b=B;fun2(void main()int x10,y20,z30;fun(x,y,z);coutx,y,zendl;输出结果是( )。(分数:2.00)A.30,20,10B.10,20,30 C.456,567,678D.678,567,456解析:解析 本题考查函数中变量的作用范围,在主函数中给变量 x,y,z 赋值,然后将其作为实参传递给了函数 fun (),虽然在函数 fun()中改变了这 3 个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数 fun()结束后,主函数 3 个变量的值未改变。19.下列描述中,抽象类
13、的特性是( )。(分数:2.00)A.可以说明虚函数B.可以定义友元函数C.可以进行构造函数重载D.不能说明其对象 解析:解析 带有纯虚函数的类称为抽象类,抽象类中的纯虚函数没有具体的定义,所以不能说明抽象类的对象。20.下列关于 C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后+条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型 D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式解析:解析 内联函数不是定义在另一个函数体内部的函数;而是将 incline 放在函数定义中函数类型之
14、前;函数体的最后一条语句可以是任意的语句;编译器不会根据函数返回值的类型来区分重载形式,选项 D 错误。标准 C+要求在调用一个函数之前,必须先声明其原型。21.在 E-R 图中,用来表示实体的图形是( )。(分数:2.00)A.矩形 B.椭圆形C.菱形D.三角形解析:解析 在 E-R 图中,矩形表示实体,菱形表示联系名,椭圆形表示实体的属性。22.下列字符串中可以用作 C+语言标识符的是( )。(分数:2.00)A._1234 B.foobarC.virtualD.34var解析:解析 C+语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。23.有以下程序:main()i
15、nt a5,b4,c3,d2;if(abc)coutdend1;else if(c-1)=d)=1)toutd+1endl;elsecoutd+2endl;(分数:2.00)A.2B.3 C.4D.编译时有错,无结果解析:解析 本题考查逻辑表达式的结合特性,即左结合性。对于表达式 abc,首先判断 ab 为真,结果为 1,然后判断 1c,为假,故转去判断 c-1):d 是否成立,成立,结果为 1,再判断 1=1,结果为真,因此,执行 d+1,答案为 B。24.以下程序中调用 cin 函数给变量 a 输入数值的方法是错误的,其错误原是( )。#includeiostream.hvoid main
16、()int*p,*q,a,b;p是只能改变*p 的内容,constmt*const p;是指针的地址和*p 的内容都不能改变,Int *ps 是两者都能改变。26.下列叙述中正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据
17、处理效率不同。根据以上分析可知,D 选项为正确答案。27.判断 char 型变量 c 是否为小写字母的正确表达式是( )。(分数:2.00)A.aczB.(cA);class Derived:public Basepublic:void fun()_/显示调用基类的 fun 函数cout“Derived:fun“endl;(分数:2.00)填空项 1:_ (正确答案:Base:fun();。)解析:解析 本题考查的是成员函数的调用。 因为横线处的作用是调用基类的 fun 函数,又因为派生类也碉 tun()函数,所以必须对 fun()函数加以限定,即 Base:fun();。46._是实现 C+
18、语言编译时多态性的机制,_是实现 C+语言运行时多态性的机制。(分数:2.00)填空项 1:_ (正确答案:静态联编、静态绑定 动态联编、动态绑定。)解析:解析 C+语言编译时多态性的机制是静态绑定,实现 C+语言行时多态性的机制是动态绑定。47.下列程序的运行结果是_。#includeiostream.h)class testprivate:int num;public:test();int TEST()return num+100;test();test:test()num0;test:test()cout“Destructor is active“endl;void main()test
19、 x3;coutx1.TEST()end1;(分数:2.00)填空项 1:_ (正确答案:100Destructor is activeDestructor is activeDestructor is active。)解析:解析 本题考查考生基本的类的定义,构造函数以及对象数组的概念。48.若下列程序运行时输出结果为1,A,1012,B,35请将程序补充完整。#includeiostreamusing namespace std;int main()void test(mt,char,double_);test(1,A,10.1);test(2,B);return 0;void test(int a,char b,double c)couta,b,cendl;(分数:2.00)填空项 1:_ (正确答案:=3.5。)解析:解析 本题考查了函数默认参数的应用。本题中第一次调用 test()函数数值 1,A,10.11 第二次调用少了个实参:却要求输出 2,B,3.5,由此分析,应将 test()函数的第三个参数声明为默认参数。且默认为 3.5,才能达到要求输出结果。故应填入=3.5 或者 c=3.5。49.友元类的所有成员函数都是另一个类的 1。(分数:2.00)填空项 1:_ (正确答案:友元函数。)解析:解析 C+语言中友元类中的函数都是另一个类的友元函数。