1、二级 C+笔试-176 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.若执行语句:coutsetfill(*)setw(10)123“OK“endl 后将输出( )。(分数:2.00)A.*1230KB.123*OKC.*123*OKD.123*OK*2.已知 n 是一个 int 型变量,下列语句中错误的是( )。(分数:2.00)A.long*p=new longn;B.long pn;C.long*p=newl ong(n);D.long p10;3.有下列程序:#includeiostreamusing namespace std;
2、c1ass TestClassprivate;char c;public:TestClass(char n):c(n)TeStClass()coutc;class TestClass1:public TestClassprivate:char c;public;TestClass1(char n):TestClass(n+1),c(n)TestClass1()coutC;int main()TestClass1obj(x);return 0;执行上面的程序将输出( )。(分数:2.00)_4.有如下语句序列:int k=0:dok+=5;cout$; while(k19);while(k-0)
3、cout*执行上面的语句序列输出字符“$”和“*”的个数分别是( )。(分数:2.00)_5.在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。(分数:2.00)A.属性B.事件C.方法D.类6.关于纯虚函数,下列表述正确的是( )。(分数:2.00)A.纯函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0”结束C.派生类必须实现基类的纯虚函数D.含纯虚函数的类不可能是派生类7.有下列程序:#includeiostreamusing namespace std;class TestClasspublic:virtual void fun1()cout“f
4、un1TestClass“;virtual void fun2()cout“fun2TestClass“;class TeStClaSS1:public TestClassvoid fun()cout“fun1TestClass1“;void fun2(tnt x)cout“fun2TestClass1“;int main()TeStClass obj1,*p;TestClaSS1 obj2;p=p-fun1();p-fun2();retrn 0;执行后的输出结果是( )。(分数:2.00)A.fun1TeStClass1 fun2TeStClassB.fun1TestClass1 fun2T
5、estClass1C.fun1TeStClass fun2TeStClassD.fun1TestClaSSfun2TestClaSS18.下列符号中可以用作 C+标识符的是( )。(分数:2.00)A._radiusB.foobarC.elseD.3room9.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性10.关于调用模板函数时模板实参的使用,下列表述中正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它
6、们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略11.有下列程序:#inCludeiostreamusing namespace std;c1ass Apubic:virmal void func1()cout“A1“;void func2()cout“A2“;c1ass B:public ApublIc:void func1()cout“B1“;void func2()cout“B2“;int main()A*p=new B;p-func1();p-func2();return 0;运
7、行此程序后,屏幕上将显示输出( )。(分数:2.00)A.B182B.A1A2C.B1A2D.A18212.阅读下列程序:#includeiostream.hvoid main()int i,row=0,column=0,min;static int a33=100,28,72,-30,2,100;min=a00;for(i=0;i3;i+)for(j=0;j3;j+)if(aijmin)min=aij;row=i;column=j;coutmin“,“row“,“columnendl;该程序的执行结果为( )。(分数:2.00)A.-100,2,3B.-100,1,2C.100,1,1D.1
8、00,0,013.下列关于 C+流的说明中,正确的是( )。(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin 是一个预定义的输出流类D.输出流有一个名为 open 的成员函数,其作用是生成一个新的流对象14.设 R 是一个 2 元关系,S 是一个 3 元关系,则下列运算中正确的是( )。(分数:2.00)A.R-SB.RSC.RSD.RS15.按照“先进后出”原则组织数据的数据结构是( )。(分数:2.00)A.队列B.栈C.双向链表D.二叉树16.结构化程序设计的核心和基础是( )。
9、(分数:2.00)A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法17.有如下类声明:c1ass TeStClassint i;private:int j;protected:int k;public:int m,n;其中,私有成员的数量为( )。(分数:2.00)A.0B.1C.2D.318.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进的操作是否失败的函数名是( )。(分数:2.00)A.failB.eofC.badD.good19.有下列程序:#includeiostream.husing namespace std
10、;classBaseprotected:int i;public:int j;classDerived:public Baseint m;public:intn;int main()Derived d;d.i=0; 1d.j=0; 2d.m=0; 3d.n=0; 4return 0;其中主函数中有两个赋值语句有错,这两个错误的赋值语句是( )。(分数:2.00)A.1和2B.1)和3C.2和3D.2和420.树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1 个B.1 或多于 1C.0 或 1D.至少有 2 个21.有下列二叉树,对此二叉树前序遍历的结果为( )。(分
11、数:2.00)A.B.C.D.22.有如下函数模板定义:templateclass TT func(T x,T y)return x*x+y*y;在下列对 func 的调用中,错误的是( )。(分数:2.00)A.fimc(3,5);B.func(3.0,5.5);C.func(3,5.5);D.funcint(3,5.5);23.常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构24.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查
12、找值为 90的元素时,查找成功的比较次数为( )。(分数:2.00)A.1B.2C.3D.925.假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回相加结果,则该成员数的声明语句为( )。(分数:2.00)A.AB operator+(ABclass Basepublic:Base()cout“BB“; f(); void f()cout“Bf“;class Derived:public Basepublic:Derived()cout“DD“;void f()cout“Dff;int main()Derived d;return 0;执行上面的程序将输出( )
13、。(分数:2.00)A.BBBfDDB.BBDfDDDfC.DDD.DDBBBf27.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1028.有下列程序:#includeiosteram.husing namespace std;class Stackpublic:Stack(unsignedn=10):size(n)rep_=new int
14、size;top=O;Stack(Stackfor(int i=0;isize;i+)rep_i=s.rep_i;top=s.top;Stack()deleterep_;void push(int(分数:2.00)A.rep_top=a;top+;intpop()-top;return rep_top;bool isEmpty()const return top=0;private:int*rep_;unsigned size,top;int main()Stack s1;for(int i=1;i5;i+)s1.push(i);Stack s2(s1);for(int i=1;i3;i+)c
15、outs2.pop(),;s2.push(6);s1.push(7);while(!s2.isEmpty()couts2.pop(),;return 0;执行上面程序的输出结果是( )。A) 4,3,2,1,B.4,3,6,7,2,1,C.4,3,6,2,1,D.1,2,3,4,29.需求分析阶段的任务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能30.有下列程序:#includeiostreamusing namespace Std;class Testpublic:Test() n+=2;Test() n-=3;static int getNu
16、m()return n;private:static int n;int Testn=1;int main()Test*p=new Test;delete p;cout“n=“TestgetNum()endl;return 0;执行该程序的输出结果是( )。(分数:2.00)A.n=0B.n=lC.n=2D.n=331.下列关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明D.派生类中的虚函数与基类中相同原型的虚
17、函数具有不同的参数个数或类型32.要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是( )。(分数:2.00)A.int vect=30,50,-88;B.int vect=30,50,-88,0,0;C.int vect5=30,50,-88;D.int vect5=30,50,-88,0,0;33.下列运算符中全都可以被友元函数重载的是( )。(分数:2.00)_34.重载输入流运算符必须使用的原型为( )。(分数:2.00)A.istreamB.istreamC.istream operator(istrea
18、m,类名D.类名operator(istream35.类模板的使用实际上是将类模板实例化成一个具体的( )。(分数:2.00)A.类B.对象C.函数D.模板类二、填空题(总题数:15,分数:30.00)36.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:2.00)填空项 1:_37.结构化程序设计的 3 种基本结构分别是顺序、选择和 1。(分数:2.00)填空项 1:_38.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是 1。(分数:2.00)填空项 1:_39.一个模块直接调用的其他模块的个数称为 1。(分
19、数:2.00)填空项 1:_40.数据库系统中实现各种数据管理功能的核心软件是 1。(分数:2.00)填空项 1:_41.如果表达式-X 中的“-”是重载的类运算符,采用运算符函数调用格式,及表达式还可以表示为 1。(分数:2.00)填空项 1:_42.虚函数必须是类的 1。(分数:2.00)填空项 1:_43.多态性分为两类:编译时的多态性和 1。(分数:2.00)填空项 1:_44.在下面的程序的横线处填上适当的语句,使该程序的输出结果为 12。#includeiostreamusing namespace std;class TestClasspublic:int a,b;TestCla
20、ss(int i,int j)a=i;b=j;class TestClass1:public TestClassint a;public:TestClass1(int x):TestClass(x,x+1)void show()_;输出基类数据成员 a 的值?coutbendl;int main()TestClass1 d(1);d.show();return 0;(分数:2.00)填空项 1:_45.在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“ 1”。(分数:2.00)填空项 1:_46.请在下列
21、程序的横线处填写正确的语句。#includeiostreamusing namespace std;class Basepublic:void fun()cout“Base fun“endl;class Derivde:public Basepublic:void fun()_ 调用基类的函数 fun()cout“Derived fun“endl;(分数:2.00)填空项 1:_47.己知类 sample 是一个抽象类,其成员函数 display 是无形参、无返回类型的纯虚函数,请完成其声明:class samplepublic:sample();_;(分数:2.00)填空项 1:_48.请将
22、下列程序的横线处补充完整,使得输出结果为 bbaa#includeiostreamusing namespace std;class Apublic:_cout“aa“;class B:public Apublic:B()cout“bb“;int main()B*p=new B;delete p;retum 0;(分数:2.00)填空项 1:_49.请将下列栈类 Stack 的横线处补充完整。class Stackprivate:int pList100; int 数组,用于存放栈的元素int top; 栈顶元素(数组下标)public:Stack():top(0)void Push(cons
23、t int 新元素 item 压入栈int Pop(void); 将栈顶元素弹出栈;void StackPush(const int top+; 栈顶指针增 1_;int StackPop()if(top0) 如果栈空,程序终止exit(1);return pListtop-;(分数:2.00)填空项 1:_50.若要访问指针变量 p 所指向的数据,应使用表达式 1。(分数:2.00)填空项 1:_二级 C+笔试-176 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.若执行语句:coutsetfill(*)setw(10)123“OK“en
24、dl 后将输出( )。(分数:2.00)A.*1230K B.123*OKC.*123*OKD.123*OK*解析:解析 cout.fill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个 fill()函数改变该值为止。setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出效,在完成一次数据的输入或输出后,宽度设置自动恢复为 0。注意:默认为输出数据在指定宽度内右对齐。2.已知 n 是一个 int 型变量,下列语句中错误的是( )。(分数:2.00)A.long*p=new longn;B.long pn; C.long*p=newl
25、ong(n);D.long p10;解析:解析 此题考查的是数组、指针及关键字 new。说明一维数组的一般形式是:数组类型数组名数度;其中数组长度必须是整型常量或常量表达式。选项 B)中,n 是一个变量,不能做数组的长度,故选项 B)错误;其他选项均正确。3.有下列程序:#includeiostreamusing namespace std;c1ass TestClassprivate;char c;public:TestClass(char n):c(n)TeStClass()coutc;class TestClass1:public TestClassprivate:char c;publ
26、ic;TestClass1(char n):TestClass(n+1),c(n)TestClass1()coutC;int main()TestClass1obj(x);return 0;执行上面的程序将输出( )。(分数:2.00)_解析:解析 题目中程序 TestClass 为基类,TestClass1 为派生类。在主函数中定义 TestClass1 对象obj(x),“TestClass1(char n):TestClass(n+1),c(n)4.有如下语句序列:int k=0:dok+=5;cout$; while(k19);while(k-0)cout*执行上面的语句序列输出字符“
27、$”和“*”的个数分别是( )。(分数:2.00)_解析:解析 此题首先执行语句 dok+=5;cout$;5.在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。(分数:2.00)A.属性B.事件C.方法D.类 解析:解析 类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。6.关于纯虚函数,下列表述正确的是( )。(分数:2.00)A.纯函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0”结束 C.派生类必须实现基类的纯虚函数D.含纯虚函数的类不可能是派生类解析:解析 纯虚函数是在声明虚函数时被“初始化”为 0
28、的虚函数。纯虚函数没有函数体,所以选项A)和选项 C)不正确。纯虚函数的作用是在基类中为其派生类保留一个函数名字。所以选项 D)错误。7.有下列程序:#includeiostreamusing namespace std;class TestClasspublic:virtual void fun1()cout“fun1TestClass“;virtual void fun2()cout“fun2TestClass“;class TeStClaSS1:public TestClassvoid fun()cout“fun1TestClass1“;void fun2(tnt x)cout“fun2
29、TestClass1“;int main()TeStClass obj1,*p;TestClaSS1 obj2;p=p-fun1();p-fun2();retrn 0;执行后的输出结果是( )。(分数:2.00)A.fun1TeStClass1 fun2TeStClass B.fun1TestClass1 fun2TestClass1C.fun1TeStClass fun2TeStClassD.fun1TestClaSSfun2TestClaSS1解析:解析 TestClass 为基类,TestClass1 是 TestClass 的派生类。基类中的 fun1 和 fun2 被定义为虚函数,C
30、+规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数,所以派生类中的 fun1 和 fun2 也是虚函数。本题从 main 主函数入手,首先定义了 TestClass 类型的对象 ob1和指针 p,然后又定义了 TestClass1 的对象 obj2。指针指向对象 obj2,然后调用其成员函数 fun1(),即输出“fun1TesClass1”。多态性是在程序运行过程中才动态地确定操作指针指向的对象,“p-fun2();”语句中没有任何参数,并不是调用派生类中的 fun2(int x),而是调用其基类中的 fun2(),所以输出“fun2TestClass”。8.下列符
31、号中可以用作 C+标识符的是( )。(分数:2.00)A._radius B.foobarC.elseD.3room解析:解析 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合这些要求的只有 A)。9.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性 解析:解析 程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程
32、序,因此程设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。10.关于调用模板函数时模板实参的使用,下列表述中正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析 以下情况模板实参不能省略:从模板函数实参表获得的信息有矛盾:需要获得特定类型的返回值,而不管返回值类型如何:虚拟类型的参数没有出现在
33、模板形参表中;函数模板含有常规形参。11.有下列程序:#inCludeiostreamusing namespace std;c1ass Apubic:virmal void func1()cout“A1“;void func2()cout“A2“;c1ass B:public ApublIc:void func1()cout“B1“;void func2()cout“B2“;int main()A*p=new B;p-func1();p-func2();return 0;运行此程序后,屏幕上将显示输出( )。(分数:2.00)A.B182B.A1A2C.B1A2 D.A182解析:解析 程序
34、中 B 为 A 的派生类,由主函数入手,主函数中定义了类 A 的指针 p 指向类 B。根据基类中的“virtual void func1()”知道 A 中的 func1 为虚函数,执行“p-func1();”语句,通过指针变量调用此虚函数,此时调用的就是指针变量指向的同名函数,即派生类的 func1 函数,输出 B1。而fun2 不是虚函数,所以执行“p-func2();”输出为 A2。12.阅读下列程序:#includeiostream.hvoid main()int i,row=0,column=0,min;static int a33=100,28,72,-30,2,100;min=a0
35、0;for(i=0;i3;i+)for(j=0;j3;j+)if(aijmin)min=aij;row=i;column=j;coutmin“,“row“,“columnendl;该程序的执行结果为( )。(分数:2.00)A.-100,2,3B.-100,1,2 C.100,1,1D.100,0,0解析:解析 该程序是找到数组 a 中的最小值,然后输出其数值及行、列。首先将 min 的值赋值为 a 中的第一行第一列的数值。然后在 for 两层循环中利用 if 语句进行大小比较,求出数组最小值,即-100。它的位置为第二行,第三列。标识由 0 开始计数,所以是 1,2。13.下列关于 C+流的
36、说明中,正确的是( )。(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现 B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin 是一个预定义的输出流类D.输出流有一个名为 open 的成员函数,其作用是生成一个新的流对象解析:解析 选项 B)中,从流中获取数据的操作称提取操作,向流中添加数据的操作称为插入操作:选项 C)中,cin 是一个预定义的输入流对象:选项 D)中,open 的成员函数只能打开文件;故只有选项 A)的叙述是正确的。14.设 R 是一个 2 元关系,S 是一个 3 元关系,则下列运算中正确的是( )。(分数:2.00
37、)A.R-SB.RS C.RSD.RS解析:解析 关系的交()、并()和差(-)运算要求两个关系是同元的,显然作为二元的 R 和三元 S 只能做笛卡儿积运算。15.按照“先进后出”原则组织数据的数据结构是( )。(分数:2.00)A.队列B.栈 C.双向链表D.二叉树解析:解析 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,而栈底元素是最后被删除的栈,是按“先进后出”的原则组织数据的。16.结构化程序设计的核心和基础是( )。(分数:2.00)A.结构化分析方法B.结构化设计方法C.
38、结构化设计理论 D.结构化编程方法解析:解析 结构化程序设计的核心和基础是结构化设计理论,其中包括结构化分析方法、结构化设计方法和结构化编程方法。17.有如下类声明:c1ass TeStClassint i;private:int j;protected:int k;public:int m,n;其中,私有成员的数量为( )。(分数:2.00)A.0B.1C.2 D.3解析:解析 首先声明为 private 的“private:intj;”,中 j 为私有成员。然后在类中没有指定,系统默认为私有。即“int i;”中的 i 也是私有成员。所以本题中的私有成员数量为 2。18.在进行了任何 C+
39、流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进的操作是否失败的函数名是( )。(分数:2.00)A.fail B.eofC.badD.good解析:解析 可以用文件流对象的成员函数来判别文件流当前的状态:fail,刚进行的操作失败时返回true,否则返回 false:eof,进行输入操作时,若文件到达文件尾返回 true,否则返回 false;bad,如果进行了非法操作返回 true,否则返回 false;good,刚进行的操作成功时返回 true,否则返回 false。19.有下列程序:#includeiostream.husing namespace std;
40、classBaseprotected:int i;public:int j;classDerived:public Baseint m;public:intn;int main()Derived d;d.i=0; 1d.j=0; 2d.m=0; 3d.n=0; 4return 0;其中主函数中有两个赋值语句有错,这两个错误的赋值语句是( )。(分数:2.00)A.1和2B.1)和3 C.2和3D.2和4解析:解析 此题考查的是类和派生类的访问权限。类 Derived 公有继承类 Base,所以 d 对基类 Base成员的访问权限不变。因数据成员 i 为保护,故不能通过对象访问:派生类 Deri
41、ved 中 m 变量为私有,同样不能通过对象访问,所以1、3错误。20.树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1 个B.1 或多于 1C.0 或 1 D.至少有 2 个解析:解析 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点:当树为空时,树中根结点的数目为 0。21.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D. 解析:解析 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住
42、三种遍历的顺序:前序,访问根按前序遍历左子树按前序遍历右子树:中序,按中序遍历左子树访问根按中序遍历右子树:后序,按后序遍历左子树按后序遍历右子树访问根。22.有如下函数模板定义:templateclass TT func(T x,T y)return x*x+y*y;在下列对 func 的调用中,错误的是( )。(分数:2.00)A.fimc(3,5);B.func(3.0,5.5);C.func(3,5.5); D.funcint(3,5.5);解析:解析 选项 C)中两个实参的实际类型不同而未进行转换,会出现错误。23.常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链
43、式存储结构 B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。24.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为 90的元素时,查找成功的比较次数为( )。(分数:2.00)A.1B.2 C.3D.9解析:解析 根据二分法查找需要两次:首先将 90 与表中间的元素 50 进行比较,由于 90 大于 50,所以在线性表的后半部分查找:第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查找功。25.假定要对类 AB 定
44、义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回相加结果,则该成员数的声明语句为( )。(分数:2.00)A.AB operator+(ABclass Basepublic:Base()cout“BB“; f(); void f()cout“Bf“;class Derived:public Basepublic:Derived()cout“DD“;void f()cout“Dff;int main()Derived d;return 0;执行上面的程序将输出( )。(分数:2.00)A.BBBfDD B.BBDfDDDfC.DDD.DDBBBf解析:解析 此题考查的是类的继承和派
45、生。派生类执行构造函数的一般次序:首先调用基类构造函数;然后调用成员对象的构造函数;最后是派生类构造函数中的内容。题目中定义派生类对象 d 时,先调用基类 Base 的构造函数,输出 BBBf,然后调用派生类 Derived 的构造函数,输出 DD。27.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 此题考查的是 C+语言的数据类型。第一个枚举常量的值为 0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增 1。28.有下列程序:#includeiosteram.husing namespace std;class Stackpublic:Stack(unsignedn=10):