1、二级 C+笔试-349 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.关于静态数据成员的描述中正确的是( )。(分数:2.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化2.已知 int a,*pa= sub2(char*a,char b) char c:c=*a;”a=b;b=c;sub3(char*a,char*b) char c;c=*a;”a=*b;*b=c;void main()char a,b;a=A;b=
2、B:sub1(a,b);putchar(a):putchar(b):a=A;b=B; sub2( sub3(if(a=b+c)cout“*“endl:else cout“$“endl;下列选项叙述正确的是( )。(分数:2.00)A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$7.下列关于 C+函数的描述中正确的是( )。(分数:2.00)A.主函数是程序的入口,它由用户定义的函数调用B.函数在调用之前必须先被声明C.每个用户定义的函数只能被其他函数调用一次D.函数是 C+中面向对象程序设计框架的基本组成单元8.流程控制语句的基本控制结构有三种,不属于这一种结构的是(
3、 )。(分数:2.00)A.顺序结构B.选择结构C.循环结构D.计算结构9.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为( )。(分数:2.00)A.(operator+(x).operator/(y)B.(operator+(0).operatr/(y)C.operator/(operator+(x,0),y)D.operator/(operator+(0),y)10.以下对模板的说明,正确的是( )。(分数:2.00)A.templateTB.templateclassT1,T2C.templateclass T1,class T2D.templ
4、ateclass T1;class T211.磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。(分数:2.00)A.inB.outC.appD.ate12.下列的各类函数中,( )不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.发元函数D.拷贝初始化构造函数13.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列说中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的
5、值为 1014.下述关于数据库系统的叙述中正确的是( )。(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据15.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同16.包容类 Contain 和内嵌类 Embed 定义如下:#includeiostream.hclass Containprivate:int X;protected:int z;public:class Embedpr
6、ivate:int y;public:Embed()y=100;int Embed_Fun();MyEmbed;int Contain_Fun();对上面的定义,正确的描述是( )。(分数:2.00)A.定义类 Embed 对象的语句是:Contain?Embed embed;B.类 Contain 的成员函数 Contain_Fun()中可以用 MyEmbeD.y 的方式访问类 Embed 的私有成员 yC.类 Embed 的成员函数 Embed_Fun()中可以直接访问 Contain 的私有成员 xD.类 Embed 的成员函数 Embed_Fun()中可以直接访问 Contain 的保
7、护成员 Z17.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需“要使用的存储类别是( )。(分数:2.00)A.externB.registerC.autoD.static18.两个变量定义不能同名,是因为( )。(分数:2.00)A.这两个变量定义在同一文件中B.这两个变量定义在同一作用域中C.一个定义在 main 函数中,一个定义在子函数中D.以上说法均不正确19.下列表达式中,错误的是( )。(分数:2.00)A.coutsetw(5);B.coutfill(#);C.cout.setf(ios:uppercase);D.cin.fill(#);20.下列对基类和派生类关
8、系的描述中,错误的是( )。(分数:2.00)A.派生类是基类的具体化B.派生类是基类的子集C.派生类是基类定义的延续D.派生类是基类的组合21.若要把函数 void f()定义为 aClass 的友元函数,则应该类 aClass 的定义中加入的语句是 ( )。(分数:2.00)A.void f();B.static void f();C.friend f();D.friend void f();22.下列运算符中,( )运算符在 C+中不能重载。(分数:2.00)A. sub2(char*a,char b) char c:c=*a;”a=b;b=c;sub3(char*a,char*b) c
9、har c;c=*a;”a=*b;*b=c;void main()char a,b;a=A;b=B:sub1(a,b);putchar(a):putchar(b):a=A;b=B; sub2( sub3(if(a=b+c)cout“*“endl:else cout“$“endl;下列选项叙述正确的是( )。(分数:2.00)A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$ 解析:7.下列关于 C+函数的描述中正确的是( )。(分数:2.00)A.主函数是程序的入口,它由用户定义的函数调用B.函数在调用之前必须先被声明 C.每个用户定义的函数只能被其他函数调用一次D.函
10、数是 C+中面向对象程序设计框架的基本组成单元解析:8.流程控制语句的基本控制结构有三种,不属于这一种结构的是( )。(分数:2.00)A.顺序结构B.选择结构C.循环结构D.计算结构 解析:9.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为( )。(分数:2.00)A.(operator+(x).operator/(y) B.(operator+(0).operatr/(y)C.operator/(operator+(x,0),y)D.operator/(operator+(0),y)解析:10.以下对模板的说明,正确的是( )。(分数:2.00)A
11、.templateTB.templateclassT1,T2C.templateclass T1,class T2 D.templateclass T1;class T2解析:11.磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。(分数:2.00)A.inB.outC.app D.ate解析:12.下列的各类函数中,( )不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.发元函数 D.拷贝初始化构造函数解析:13.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列说中错误的是( )。(
12、分数:2.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:14.下述关于数据库系统的叙述中正确的是( )。(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余 C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据解析:15.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作 D.数据元素的物理顺序与逻辑顺序相同解析:16.包容类 Contain 和内嵌类 Embe
13、d 定义如下:#includeiostream.hclass Containprivate:int X;protected:int z;public:class Embedprivate:int y;public:Embed()y=100;int Embed_Fun();MyEmbed;int Contain_Fun();对上面的定义,正确的描述是( )。(分数:2.00)A.定义类 Embed 对象的语句是:Contain?Embed embed; B.类 Contain 的成员函数 Contain_Fun()中可以用 MyEmbeD.y 的方式访问类 Embed 的私有成员 yC.类 Em
14、bed 的成员函数 Embed_Fun()中可以直接访问 Contain 的私有成员 xD.类 Embed 的成员函数 Embed_Fun()中可以直接访问 Contain 的保护成员 Z解析:17.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需“要使用的存储类别是( )。(分数:2.00)A.externB.registerC.autoD.static 解析:18.两个变量定义不能同名,是因为( )。(分数:2.00)A.这两个变量定义在同一文件中B.这两个变量定义在同一作用域中 C.一个定义在 main 函数中,一个定义在子函数中D.以上说法均不正确解析:19.下列表达式中
15、,错误的是( )。(分数:2.00)A.coutsetw(5);B.coutfill(#); C.cout.setf(ios:uppercase);D.cin.fill(#);解析:20.下列对基类和派生类关系的描述中,错误的是( )。(分数:2.00)A.派生类是基类的具体化B.派生类是基类的子集 C.派生类是基类定义的延续D.派生类是基类的组合解析:21.若要把函数 void f()定义为 aClass 的友元函数,则应该类 aClass 的定义中加入的语句是 ( )。(分数:2.00)A.void f();B.static void f();C.friend f();D.friend v
16、oid f(); 解析:22.下列运算符中,( )运算符在 C+中不能重载。(分数:2.00)A.&B.C.: D.new解析:23.下述静态数据成员的特性中,( )是错误的。(分数:2.00)A.说明静态数据成员时前边要加修饰符 staticB.静态数据成员要在类体外进行初始化 C.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符D.静态数据成员不是所有对象所共用的解析:24.对于语句 const int x=10;的描述正确的是( )。(分数:2.00)A.该语句不允许定义为 int const x=10;B.在程序中可以重新对 X 赋值C.变量 X 不能使用+运算符 D.co
17、nst 关键字只能用来修饰常量解析:25.以下程序的输出结果是 #includeiostream.hlong fun(int n)long s;if(n=1|n=2) s=2;else s=n-fun(n-1):return s;void main()coutfun(3);=(分数:2.00)A.1 B.2C.3D.4解析:26.下面对于友元函数描述正确的是( )。(分数:2.00)A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封闭性和隐藏性 D.友元函数不能访问类的私有成员解析:27.C+语言类体系中,不能被派生类继承的有( )。(分数:2.00)A.转
18、换函数B.构造函数 C.虚函数D.静态成员函数解析:28.在 C+语言中,main 函数默认返回一个( )类型的值。(分数:2.00)A.int B.floatC.charD.void解析:29.下列描述中,( )是抽象类的特性。(分数:2.00)A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说明其对象 解析:30.在 C+中,关于下列设置参数默认值的描述中,正确的是( )。(分数:2.00)A.不允许设置参数的默认值B.设置参数默认值只能在定义函数时设置C.设置参数默认值时,应该是先设置右边的再设置左边的 D.设置参数默认值时,应该全部参数都设置解析:31.在类中定义
19、和实现的函数称为( )。(分数:2.00)A.静态成员函数B.内联函数 C.常成员函数D.虚函数解析:32.C+语言中关于构造函数的说法正确的是( )。(分数:2.00)A.构造函数的函数名不必和类名相同B.构造函数只能有一个C.每个类必定有构造函数 D.构造函数必有返回值解析:33.以下程序的输出是( )。struct stint x;int*y;*p;int dt4=10,20,30,40;struct st aa4=50,&dt0,60,&dt0,60,&dt0,60,&dt0,;main()p=aa; cout+(p-x);(分数:2.00)A.10B.11C.51 D.60解析:34
20、.C+源晚间中包含的输入/输出头文件为( )。(分数:2.00)A.stdio.hB.stdafx.hC.iostream.h D.stream.h解析:35.以下程序的输出结果是( )。#includeiostream.hmain() in(b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0,i3:i+)for(j=i;j=i;j+)t=t+bibjj;coutt;(分数:2.00)A.3B.4 C.1D.9解析:二、填空题(总题数:15,分数:30.00)36.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 1 的构造函数,再执行调用子对象类的构
21、造函数,最后执行派生类的构造函数体中的内容。(分数:2.00)填空项 1:_ (正确答案:基类)解析:37.当使用带参数的操作子时,程序中必须包含头文件 1。(分数:2.00)填空项 1:_ (正确答案:iomani p.h)解析:38.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 1。(分数:2.00)填空项 1:_ (正确答案:上溢)解析:39.函数模板既可以与_重载,也可以与_重载。(分数:2.00)填空项 1:_ (正确答案:函数模板 非函数模板)解析:40.、*、-、:、?:这五个运算符 1 重载。(分数:2.00)填空项 1:_ (正确答
22、案:不能)解析:41.下列程序运行后的输出结果是_。#includeiostream.hvoid main()int s=0,k;for(k=7;k=O;k-)switch(k)case 1:case 4:case 7:s+;break;case 2:case 3:case 6:break:case 0:case 5:s+=2;break:cout“s=“sendl;(分数:2.00)填空项 1:_ (正确答案:s=7)解析:42.表达式 x=operator-(y,z)其可以表示 1 为。(分数:2.00)填空项 1:_ (正确答案:x=y-z)解析:43.C+中的输入输出是以节字 1 的形
23、式实现的。(分数:2.00)填空项 1:_ (正确答案:流)解析:44.类 ostream 的成员函数 1 用于执行无格式输出,成员函数 2 用于输出单个字符。(分数:2.00)填空项 1:_ (正确答案:write)填空项 1:_ (正确答案:put)解析:45.以下程序的输出结果_。#includeiostream.hvoid main()int a=0 a+=(a=8);couta;(分数:2.00)填空项 1:_ (正确答案:16)解析:46.利用成员函数对双目运算符重载,其左操作数为_,右操作数为_。(分数:2.00)填空项 1:_ (正确答案:this 指针 成员函数参数)解析:47.作为非成员函数重载的运算符,所有操作数都必须以 1 的形式出现在参数表中。(分数:2.00)填空项 1:_ (正确答案:参数)解析:48.浮点数的默认精度值是 1。(分数:2.00)填空项 1:_ (正确答案:6 位)解析:49.为解决在多重继承环境中因公共基类带来的 1 问题,C+语言提供了虚基类机制。(分数:2.00)填空项 1:_ (正确答案:二义性)解析:50.可以把具有相同属性的一些不同对象归类,称为 1。(分数:2.00)填空项 1:_ (正确答案:对象类)解析: