1、全国计算机等级考试二级 C+真题 2008年 9月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.123456ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA2.下列叙述中正确的是( )。(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指
2、针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定3.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)4.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间5.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制
3、流B.事件驱动C.模块调用D.数据流6.在软件开发中,需求分析阶段可以使用的工具是( )。(分数:2.00)A.N-S图B.DFD图C.PAD图D.程序流程图7.在面向对象方法中,不属于“对象”基本特点的是( )。(分数:2.00)A.一致性B.分类性C.多态性D.标识唯一性8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。(分数:2.00)A.一对一B.一对多C.多对一D.多对多9.在数据管理技术发展的 3个阶段中,数据共享最好的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10.有 3个关系 R、S 和 T如下: (分数:2.00
4、)A.笛卡尔积B.交C.并D.自然连接11.在下列原型所示的 C+函数中,按“传值”方式传递参数的是( )。(分数:2.00)A.void f1(int a);B.void f2(int *a);C.void f3(const int *a);D.void f4(int ”,但无法通过编译。这说明( )。(分数:2.00)A.f()是基类的私有成员B.f()是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护14.下列关于运算符重载的叙述中,错误的是( )。(分数:2.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义C.不得为重载的运算符
5、函数的参数设置默认值D.有的运算符只能作为成员函数重载15.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.调用模板函数时,在一定条件下可以省略模板实参B.可以用 int、double 这样的类型修饰符来声明模板参数C.模板声明中的关键字 class都可以用关键字 typename替代D.模板的形参表中可以有多个参数16.要利用 C+流进行文件操作,必须在程序中包含的头文件是( )。(分数:2.00)A.iostreamB.fstreamC.strstreamD.iomanip17.下列字符串中不能作为 C+标识符使用的是( )。(分数:2.00)A.WHILEB.userC._l
6、varD.9stars18.下列语句中错误的是( )。(分数:2.00)A.const int a;B.const int a=10;C.const int*point=0;D.const int*point=new int(10);19.有如下程序: #includeiostream using namespace std; int main() int sum; for(int i=0;i6;i+=3) sum=i; for(int j=i;j6;j+)sum+=j; coutsumend1; return 0; 运行时的输出结果是( )。(分数:2.00)A.3B.10C.12D.152
7、0.下列语句中,正确的是( )。(分数:2.00)A.char*myString=“Hello-World!“;B.char myString=“Hello-World!“;C.char myString11=“Hello-World!“;D.char myString12=“Hello-World!“;21.若已经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是( )。(分数:2.00)A.void fun(int a=90,double b=0.0);B.int fun(int a,double );C.void fun(doubl
8、e a,int );D.bool fun(int a,double b=0.0);22.有如下程序: #includeiostream using namespace std; class Sample public: Sample() Sample()cout*; ; int main() Sample temp2,*pTemp2; return 0; 执行这个程序输出星号(*)的个数为( )。(分数:2.00)A.1B.2C.3D.423.下列选项中,与实现运行时多态性无关的是( )。(分数:2.00)A.重载函数B.虚函数C.指针D.引用24.下列运算符函数中,肯定不属于类 Value的
9、成员函数的是( )。(分数:2.00)A.Value operator+(Value);B.Value operator-(Value,Value);C.Value operator*(int);D.Value operator/(Value);25.下列模板声明中,有语法错误的是( )。(分数:2.00)A.templatetypename TT fun(T return x;B.templatetypename TT fun(T x,int return x*n;C.templateclass TT fun(T*return *p;D.templateclass TT ClassAT n;
10、26.在语句“coutA;”中,cout 是( )。(分数:2.00)A.类名B.对象名C.函数名D.C+的关键字27.有如下程序: #ncludeiostream using namespace Std; Class MyClass public: MyClass(int i=0)cout1; MyClass(constMyClass MyClass()cout4; ; int main() MyClass obj1(1),obj2(2),obj3(obj1); return 0: 运行时的输出结果是( )。(分数:2.00)A.112444B.11114444C.121444D.11314
11、44428.有如下程序: #ncludeiostream using namespace std; class MyClass public: MyClass(int x):val(x) void Set(int x)Val=x; void Print()constcout“val=“Val/t; private: intval; ; int main() const MyClass obj1(10); MyClass obj2(20); obj1.Print(); /语句 1 obj2.Print(); /语句 2 obj1.Set(20); /语句 3 obi2.Set(30); /语句
12、4 return 0; 其主函数中错误的语句是( )。(分数:2.00)A.语句 1B.语句 2C.语句 3D.语句 429.在类声明中,紧跟在“public:”后声明的成员的访问权限是( )。(分数:2.00)A.私有B.公有C.保护D.默认30.对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是( )。(分数:2.00)A.公有或私有B.私有C.保护或私有D.公有或保护31.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(分数:2.00)A.私有继承B.非私有继承C.保护继承D.公有继承32.建立一个有成员对象的派
13、生类对象时,各构造函数体的执行次序为( )。(分数:2.00)A.派生类、成员对象类、基类B.成员对象类、基类、派生类C.基类、成员对象类、派生类D.基类、派生类、成员对象类33.如果表达式 a=b 中的“=”是作为非成员函数重载的运算符,则可以等效地表示为( )。(分数:2.00)A.operator=(a)B.operatotr=(b)C.operator=(a,b)D.operator=(b,a)34.当使用 ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios base:inB.ios_base:binaryC.ios bas
14、e:in|ios base:outD.ios base:out35.在一个抽象类中,一定包含有( )。(分数:2.00)A.虚函数B.纯虚函数C.模板函数D.重载函数二、B填空题/B(总题数:15,分数:30.00)36.对下列二叉树进行中序遍历的结果 1。 (分数:2.00)填空项 1:_37.按照软件测试的一般步骤,集成测试应在 1 测试之后进行。(分数:2.00)填空项 1:_38.软件工程 3要素包括方法、工具和过程,其中, 1 支持软件开发的各个环节的控制和管理。(分数:2.00)填空项 1:_39.数据库设计包括概念设计、 1 和物理设计。(分数:2.00)填空项 1:_40.在二
15、维表中,元组的 1 不能再分成更小的数据项。(分数:2.00)填空项 1:_41.当使用关键字 1 作为函数返回类型时,该函数不返回任何值。(分数:2.00)填空项 1:_42.已知数组 a中有 n个元素,下列语句将数组 a中从下标 x1开始的 k个元素移动到从下标 x2开始的 k个元素中,其中 O=xlx2n,x2+kn,请将下列语句补充完整。 For(int i=x1+k-1;i=x1;i-) a_=ai;(分数:2.00)填空项 1:_43.有如下程序: #includeiostream using namespace std; int fun1(int x) return+x; int
16、 fun2(int int main() int x=1,y=2; y=fun 1(fun2(x); coutX,y; return 0: 程序的输出结果是_。(分数:2.00)填空项 1:_44.有如下程序: #includeiostream using namespace std; class pumpkin public: pumpkin()+count; pumpkin()-count; static void total_count() coutcount“pumpkin(s)“end1; private: static int count; ; int pumpkin:count=
17、0; int main() pumpkin p110; pumpkin:total_count(); return 0; 这个程序的输出结果是_。(分数:2.00)填空项 1:_45.有如下递归函数: int Fun(int n) if(n=1) return 1; _ 请补充完整,使得函数 Fun能够正确计算形参 n的阶乘。(分数:2.00)填空项 1:_46.请在下列程序中的横线处填写正确的语句: class Sample public: Sample()() Sample() void SetData(int data)/将 Sample类成员变量 data设置成形参的值 _ priva
18、te:int data; ;(分数:2.00)填空项 1:_47.有如下类定义,请将 Sample类的拷贝构造函数补充完整。 class Sample public: Sample() Sample()if(p)delete p;) Sample(const Sample private: int*p; ;(分数:2.00)填空项 1:_48.重载加法运算符“+”,其函数名是 1。(分数:2.00)填空项 1:_49.有如下程序: #includeiostream using namespace std; class Wages /“工资”类 double base; /基本工资 double
19、 bonus; /奖金 double tax; /税金 public: Wages(double CBase,double CBonus,double CTax): base(CBase),bonus(CBonus),tax(CTax) double getPay()const; /返回应付工资额 Wages operator+(Wages w)const; /重载加法 ; double Wages:getPay()constreturn base+bonus-tax; Wages Wages:operator+(Wages W)const return Wages(base+w.base,b
20、onus+w.bonus,tax+w.tax); int main() Wages w1(2000,500,100),w2(5000,1000,300); cout(w1+w2).getPay0end1; return 0; 程序的输出结果是(分数:2.00)填空项 1:_50.有如下程序: #includeiostream using namespace std; class Pet char name10; public: Pet(char*name)strcpy(this-name,name); const char*getName()const return name; virtual
21、 void call()const=0; ; class Dog:public Pet public: Dog(char*name):Pet(name) void call()constcout“汪汪叫“: ; class Cat:public Pet public: Cat(char*name):Pet(name) void call()constcout“喵喵叫“; ; int main() Pet*pet1=new Dog(“哈克“),*pet2=new Cat(“吉米“); coutpet1-getName();pet1-call();coutend1; coutpet2-getNam
22、e();pet2-call();coutend1; return 0; 程序的输出结果是_。(分数:2.00)填空项 1:_全国计算机等级考试二级 C+真题 2008年 9月答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.123456ABCDEB.EDCBA54321 C.ABCDEl2345D.54321EDCBA解析:解析 栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是
23、 EDCBA54321。2.下列叙述中正确的是( )。(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定 解析:解析 循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。3.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n2)C.O(log2n) D.O(nlog2n)解
24、析:解析 对于长度为 n的有序线性表,在最坏情况下,二分法查找只需比较 log2n次,而顺序查找需要比较 n次。4.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:解析 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元中,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。5.数据流图中带有箭头的
25、线段表示的是( )。(分数:2.00)A.控制流B.事件驱动C.模块调用D.数据流 解析:解析 数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。6.在软件开发中,需求分析阶段可以使用的工具是( )。(分数:2.00)A.N-S图B.DFD图 C.PAD图D.程序流程图解析:解析 在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据字典(DD)、判断树和判断表。7.在面向对象方法中,不属于“对象”基本特点的是( )。(分数:2.00)A.一致性 B.分类性C.多态性D.标识唯一性解
26、析:解析 对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。(分数:2.00)A.一对一B.一对多 C.多对一D.多对多解析:解析 两个实体集间的联系可以有以下几种:一对一的联系、一对多或多对一联系、多对多。由于一个宿舍可以住多个学生,所以它们的联系是一对多联系。9.在数据管理技术发展的 3个阶段中,数据共享最好的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:解析 数据管理技术的发展经历了 3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享
27、,冗余度大:文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。10.有 3个关系 R、S 和 T如下: (分数:2.00)A.笛卡尔积B.交C.并D.自然连接 解析:解析 在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察 3个关系 R,S,T 的结果可知,关系 T是由关系 R和 S进行自然连接得到的。11.在下列原型所示的 C+函数中,按“传值”方式传递参数的是( )。(分数:2.00)A.void f1(int a); B.void f2(int *a);C.void f3(const int *a
28、);D.void f4(int ”,但无法通过编译。这说明( )。(分数:2.00)A.f()是基类的私有成员 B.f()是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护解析:解析 此题考查的是派生类对基类成员的访问。基类的成员有公有保护和私有 3种访问属性:类的继承方式也有公有继承、保护继承和私有继承 3种。无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。14.下列关于运算符重载的叙述中,错误的是( )。(分数:2.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义 C.不得为重载的运
29、算符函数的参数设置默认值D.有的运算符只能作为成员函数重载解析:解析 此题考查的是运算符的重载。C+中运算符重载是多态性的一种表现,在 C+语言中,“.”、“.*”、“-”、“:”、“?:”这 5个运算符不能重载,所以选项 B)错误。由于很多符号是一元运算符和二元运算符公用的,为了避免含混,不得为重载的运算符函数设置默认值,调用时也就不得省略实参。其中“=”、“”、“-”及所有的类型转换运算符只能作为成员函数重载:如果允许第一操作数不是同类对象,而是其他数据类型,则只能作为非成员函数重载。15.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.调用模板函数时,在一定条件下可以省略模板
30、实参B.可以用 int、double 这样的类型修饰符来声明模板参数C.模板声明中的关键字 class都可以用关键字 typename替代 D.模板的形参表中可以有多个参数解析:解析 此题考查的是模板的概念。模板的一般说明形式如下: template 类型形参表函数返回值类型函数名(形参表)函数体。其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开)。参数在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。关键字 class除了能用来定义类以外,还能用来声明模板的虚拟类型参数,在用作声明虚
31、拟类型参数时,typename 与 class可以互换,但不能使用 typename来定义类;在模板形参表中除了可以用 typename和 class声明虚拟类型参数外,还可以使用普通类型声明常规函数。16.要利用 C+流进行文件操作,必须在程序中包含的头文件是( )。(分数:2.00)A.iostreamB.fstream C.strstreamD.iomanip解析:解析 iostream 通用 I/O流类和其他 I/O流的基类;fstream 类用来对文件流进行操作,fstream类的头文件是 fstream.h:stxstream 类同时可以支持 C风格的串流的输入输出操作 ioman
32、ip是 I/O流控制头文件,就像 c中的格式化输出一样。17.下列字符串中不能作为 C+标识符使用的是( )。(分数:2.00)A.WHILEB.userC._lvarD.9stars 解析:解析 此题考查的是 C+语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线;标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键宇。18.下列语句中错误的是( )。(分数:2.00)A.const int a; B.const int a=10;C.const int*point=0;D.const int*point=new int(10);解析:解析 此题
33、考查的是符号常量的概念。符号常量必须在声明的同时赋初值,故选项 A)错误。19.有如下程序: #includeiostream using namespace std; int main() int sum; for(int i=0;i6;i+=3) sum=i; for(int j=i;j6;j+)sum+=j; coutsumend1; return 0; 运行时的输出结果是( )。(分数:2.00)A.3B.10C.12D.15 解析:解析 此题考查的是 for循环。首先进入外循环,根据循环条件,i 的初始化值为 0,赋值给sum,进入内循环i 的初值也被赋值为 i 的初始值 0,所以第
34、一次内循环 sum值为 0,判断 j=0,小于6,进行第二次内循环,sum 的值为 1,同理,仍然进行内循环直到 j=6,跳出内循环,sum=15:外循环中i=3,i6,满足循环条件进入第二次外循环,i=3,sum=3,进入内循环,j=3,同理,计算内循环中 sum的值,直到 j=6跳出内循环,此时 sum=15;外循环中 i=6,跳出外循环,执行输出语句,即 sum=15。20.下列语句中,正确的是( )。(分数:2.00)A.char*myString=“Hello-World!“; B.char myString=“Hello-World!“;C.char myString11=“Hel
35、lo-World!“;D.char myString12=“Hello-World!“;解析:解析 选项 A)中 char*myString=“Hello-World!“字符串的长度是 12个字符加上一个尾符,所以是 13,因此选项 C)和选项 D)申请的空间都不够,报数组溢出异常。而选项 B)定义的变量 myString为字符变量,不是用来存放字符串的,所以错误。21.若已经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是( )。(分数:2.00)A.void fun(int a=90,double b=0.0);B.int fun(
36、int a,double );C.void fun(double a,int ); D.bool fun(int a,double b=0.0);解析:解析 此题考查的是函数重载。在 C+语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。选项 A)中参数表相同,返回类型也相同,所以错误。选项 B),选项 D)中相同参数表,不同返回类型所以错误。22.有如下程序: #includeiostream using namespace std; class Sample public: Sample(
37、) Sample()cout*; ; int main() Sample temp2,*pTemp2; return 0; 执行这个程序输出星号(*)的个数为( )。(分数:2.00)A.1B.2 C.3D.4解析:解析 此题考查的是构造函数和析构函数。构造函数在对象被创建时由系统自动调用,而析构函数在对象的生存期即将结束时由系统自动调用。此题中,主程序在创建 Sample类的对象 temp2数组时,调用 Sample类的默认构造函数,在主函数退出时,调用析构函数清除对象 temp2,输出字母*,因为对象是包含两个元素的数组,所以调用两次析构函数,即输出两个*。23.下列选项中,与实现运行时多
38、态性无关的是( )。(分数:2.00)A.重载函数 B.虚函数C.指针D.引用解析:解析 此题考查的是多态性。C 材语言的多态性有两种:函数重载和虚函数。虚函数只有在运行时才能被确定,称为运行时多态。利用虚函数,可在基类和派生类中使用相同的函数名定义函数的不同实现,从而实现“一个接口,多种方式”。当用基类指针或引用对虚函数进行访问时,软件系统将根据运行时指针或引用所指向或引用的实际对象来确定调用对象所在类的虚函数版本。编译时的多态是通过函数重载和模板实现的。24.下列运算符函数中,肯定不属于类 Value的成员函数的是( )。(分数:2.00)A.Value operator+(Value);
39、B.Value operator-(Value,Value); C.Value operator*(int);D.Value operator/(Value);解析:解析 此题考查的是运算符“-”的重载。“-”运算符有一元和二元两种,且均可以重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元素减 1;重载为非成员函数时,形参个数一般和运算符元素相等。所以“-”运算符重载为成员函数时,参数可以是。个或 1个;而重载为非成员函数时,参数个数可以是 1个或 2个。所以选项 B),肯定是重载为非成员函数。25.下列模板声明中,有语法错误的是( )。(分数:2.00)A.temp
40、latetypename TT fun(T return x;B.templatetypename TT fun(T x,int return x*n;C.templateclass TT fun(T*return *p;D.templateclass TT ClassAT n; 解析:解析 此题考查的是函数模板的声明。声明一个函数模板的格式为:template模板形参表声明函数声明,其中的模板形参表声明是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename 参数名;class 参数名;类型修饰参数名。而选项 D)为定义类模板的格式,即template类型形参表
41、,class类模板名;。26.在语句“coutA;”中,cout 是( )。(分数:2.00)A.类名B.对象名 C.函数名D.C+的关键字解析:解析 cout 是在 iostrem文件中定义的全局对象,#include iostream能生成此对象,便可直接使用。27.有如下程序: #ncludeiostream using namespace Std; Class MyClass public: MyClass(int i=0)cout1; MyClass(constMyClass MyClass()cout4; ; int main() MyClass obj1(1),obj2(2),o
42、bj3(obj1); return 0: 运行时的输出结果是( )。(分数:2.00)A.112444 B.11114444C.121444D.11314444解析:解析 此题考查的是函数重载。从主函数入手,定义了 MyClass类的对象 obj1(1),obj2(2)和obj3(obj1)。其中对象 obj1和 obj2中的参数为整型,因此调用构造函数 MyClass(int i=O)cout1小输出 11;对象 obj3中的参数为对象 obj1,所以调用构造函数 MyClass(const MyClass,输出 2。在主函数退出时,调用析构函数MyClassOcout4;,清除对象。obj
43、1,obj2 和 obj3,因此输出 444,即答案为选项 A)。28.有如下程序: #ncludeiostream using namespace std; class MyClass public: MyClass(int x):val(x) void Set(int x)Val=x; void Print()constcout“val=“Val/t; private: intval; ; int main() const MyClass obj1(10); MyClass obj2(20); obj1.Print(); /语句 1 obj2.Print(); /语句 2 obj1.Set
44、(20); /语句 3 obi2.Set(30); /语句 4 return 0; 其主函数中错误的语句是( )。(分数:2.00)A.语句 1B.语句 2C.语句 3 D.语句 4解析:解析 此题考查的是常对象。使用 const关键字修饰的对象称为常对象,它不能被更新。主函数中声明的 obj1是常对象,因此 obj1不能被更新,即语句 3更新。均 1的语句错误。29.在类声明中,紧跟在“public:”后声明的成员的访问权限是( )。(分数:2.00)A.私有B.公有 C.保护D.默认解析:解析 此题考查的是类的访问权限。在 C+语言中,类的访问权限有公有(public)、保护(protec
45、t)和私有(private)3 种。30.对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是( )。(分数:2.00)A.公有或私有B.私有C.保护或私有D.公有或保护 解析:解析 此题考查的是派生类对基类成员的访问。基类的成员有公有、保护和私有 3种访问属性;类的继承方式也有公有继承、保护继承和私有继承 3种。无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。31.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(分数:2.00)A.私有继承 B.非私有继承C.保护继承D
46、.公有继承解析:解析 此题考查的是派生类的基本知识。在声明派生类时,如果不显式地给出继承万式,缺省的类继承方式是私有继承 private。32.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。(分数:2.00)A.派生类、成员对象类、基类B.成员对象类、基类、派生类C.基类、成员对象类、派生类 D.基类、派生类、成员对象类解析:解析 此题考查的是继承中的构造函数。构造函数不能够被继承。派生类构造函数的调用顺序如下:调用基类的构造函数,调用顺序按照它们继承时说明的顺序;调用子对象类的构造函数,调用顺序按照它们在类中说明的顺序;派生类构造函数体中的内容。33.如果表达式 a=b
47、中的“=”是作为非成员函数重载的运算符,则可以等效地表示为( )。(分数:2.00)A.operator=(a)B.operatotr=(b)C.operator=(a,b) D.operator=(b,a)解析:解析 此题考查的是运算符的重载。运算符函数有两种调用形式:第一种是直接用函数名进行调用:另一种是通过运算符构成表达式的形式进行调用。34.当使用 ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios base:inB.ios_base:binaryC.ios base:in|ios base:outD.ios base:out 解析:解析 此题考查的是文件输入输出流的基本知识。对于 ofstream 流,mode 的默认值为ios:out。另外,对于 ifst
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1