1、二级 C+笔试-344 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列选项中,是软件调试技术的是( )。(分数:2.00)A.错误推断B.集成测试C.回溯法D.边界值分析2.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( )关键字来修饰。(分数:2.00)A.constB.staticC.voidD.class3.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB 包括 DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括
2、 DB 和 DBMSD.没有任何关系4.下列关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的5.有如下程序:#includeiostreamusing namespace std;Class Conchar ID;public:Con():ID(A)cout1;Con(char ID) :ID(ID) cout2;Con(Conchar get1D()constreturn ID;void show(Con c)coutc.get1D();int main()Con c1;show
3、(c1);Con c2(B);show(c2);return 0;执行上面程序的输出是( )。(分数:2.00)A.13A23AB.23A13BC.13A23BD.13B23A6.在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用( )。(分数:2.00)A.内联函数B.重载函数C.递归调用D.嵌套调用7.关于模板,下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数8.结构化程序设计主要强调的是( )。(分数:2.00
4、)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性9.下列函数的功能是判断字符串 str 是否对称,对称则返回 true,否则返回 false。请在横线处填上适当内容,实现该函数。Boo1 fun(char*str)int i=0,j=0;while(strjj+;for(j-;iji+,j-);return i _ j;(分数:2.00)A.B.|C.表达式 Wednesday= =Friday 的值是( )。(分数:2.00)A.falseB.trueC.2D.异常11.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为( )。(分数:2.00)A.o
5、perator+(operator*(y,z)B.operator+(operator*(y,z)C.operator+(x*(y,z)D.x+(operator*(y,z)12.类 MyClass 的定义如下,若要对 value 赋值,则下面语句正确的是( )。class MyClasspublic:MyClass()MyClass(int i)value=new int(i);int*value;(分数:2.00)A.MyClass my;my.value=10;B.MyClass my;*my.value=10;C.MyClass my;my.*value=10;D.MyClass my
6、(10);13.下列情况中,不会调用拷贝构造函数的是( )。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时14.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.XZCYABB.XYZABCC.XYABCZD.XYAZBC15.有如下类声明;class SAMPLEint n;public:SAMPLE(int i=0):n(i)void setValue(int n0);下列关于 setValue 成员函数的实现中,
7、正确的是( )。(分数:2.00)A.SAMPLE:setValue(int n0)n=n0;)B.void SAMPLE:setValue(int n0)n=n0;C.void setValue(int n0)n=n0;D.(int n0)n=n0;16.C+语言本身没有定义 I/O 操作,但 I/O 操作包含在 C+实现中。C+标准库 iostream 提供了基本的I/O 类。I/O 操作分别由两个类 istream 和( )提供。(分数:2.00)A.fstreamB.iostreamC.ostreamD.cin17.下列对派生类的表述中,错误的是( )。(分数:2.00)A.一个派生类
8、可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的缺省继承方式是 privateD.派生类只继承了基类的公有成员和保护成员18.已知递归函数 fun 的定义如下:int fun(int n)if(n=1)return 1;/递归结束情况else return n*fun(n-2);/递归则函数调用语句 fun(5)的返回值是( )。(分数:2.00)A.5B.12C.15D.3019.按照“先进先出”组织数据的数据结构是( )。(分数:2.00)A.队列B.栈C.双向链表D.二叉树20.类 MyClass 的定义如下:class MyClasspublic:MyClass()val
9、ue=0;SetVariable(int i)value=i;private:int value;则对下列语句序列正确的描述是( )。MyClass*P, my;p=(分数:2.00)A.语句 p= 是把对象 my 赋值给指针变量 PB.语句 MyClass*p, my; 会调用两次类 MyClass 的构造函数C.对语句*P. SetVariable(5)的调用是正确的D.语句 p-SetVariable(5)与语句 my.SetVariable(5)等价21.有下列程序,在横线添加;#includeiostreamusing namespace std;class TestClasspub
10、lic:TestClass(int n)number=n;_/拷贝构造函数TestClass()private:int number;TestClass fun(TestClass p)TestClass temp(P);return temp;int main()TestClsss obj1(10),obj2(0);TestClass obj3(obj1);obj2=fun(obj3);return 0;(分数:2.00)A.TestClass(TestClass B.TestClass(TestClass other)number=other.number;C.TestClass(Test
11、Class D.TestClass(22.下列程序的输出结果是( )。#includeiostreamusing namespace std;templatetypename TT fun(T a,T b)return(ab)?a:b;void main()coutfun(3,6),fun(3.14F,6.28F)end1;(分数:2.00)A.6,3.14B.3,6.28C.3,3.14D.6,6.2823.将下列程序写成三目运算表达式是( )。if(xy)min=x;else min=y;(分数:2.00)A.min=(xy)?x:yB.min=(xy)?x:yC.min=(xy)x:yD
12、.min=(xy)?x,y24.非成员函数只有在声明为( ),才能访问这个类的所有 private 成员。(分数:2.00)A.内联函数B.纯虚函数C.重载函数D.友元函数25.有如下程序:#includeiostreamusing namespace std;class Apublic:A()cout“A“;A()cout“A“;class B:public AA*p;public:B()cout“B“;p=new A;B()cout“B“;delete p;int main()B obj;return 0;执行这个程序的输出结果是( )。(分数:2.00)A.BAAABAB.ABABAAC
13、.BAABA-AD.ABAABA26.下列有关内联函数的叙述中,正确的是( )。(分数:2.00)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的D.内联函数函数体的最后一条语句必须是 return 语句27.算法的空间复杂度是指( )。(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间28.下列叙述中正确的是( )。(分数:2.00)A.线性链表的各元素在存储空间中的位置必须是连续的B.线性链表的头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中
14、的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的29.下列打开文件的表达式中,错误的是( )。(分数:2.00)A.ofstream ofile;ofile.open(“C:/vc/LabC.txt“,ios:binary);B.fstream iofile;iofile.open(“abC.txt“,ios:ate);C.ifstream ifile(“C:/vc/abC.txt“);D.cout.open(“C:/vc/abC.txt“,ios:binary);30.结构化分析方法是面向( )的自顶
15、向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流D.目标31.若类 A 和类 B 的定义如下:#includemalloc.hclass Aint i,j;public:int geti()return i;class B:public Aint k;public:void make()k=i*j;则上述定义中非法的表达式是( )。(分数:2.00)A.k=i*jB.int k;C.return i;D.void make();32.下列关于纯虚函数与抽象类的描述中,错误的是( )。(分数:2.00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是
16、指具有纯虚函数的类C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出33.有如下程序:#includeiostreamusing namespace std;long fun(int n)if(n2)return(fun(n-1)+fun(n-2);elsereturn 2;int main()coutfun(3)end1;return 0;则该程序的输出结果应该是( )。(分数:2.00)A.2B.3C.4D.534.下列叙述中正确的是( )。(分数:2.00)A.在面向对象的程序设计中,各个对象之间具有密切的关系B.在面
17、向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述三种说法都不对35.最简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序二、填空题(总题数:15,分数:30.00)36.数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为 1。(分数:2.00)填空项 1:_37.在关系模型中,二维表的行称为 1。(分数:2.00)填空项 1:_38.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中, 1 是用户的数据视
18、图,也就是用户所见到的数据模式。(分数:2.00)填空项 1:_39.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 1 和选择排序。(分数:2.00)填空项 1:_40.栈的三种基本运算是入栈、退栈和 1。(分数:2.00)填空项 1:_41.纯虚函数的声明总是以 1 结束。(分数:2.00)填空项 1:_42.下列程序的输出结果为Objectid=OObiectid=1请将程序补充完整。#includeiostreamusing namespace std;class Pointpublic:Point(int xx=0,int yy=0)X=xx;Y=yy;countP
19、+;Point()countP-;int GetX()return X;int GetY()return Y;static void GetC()cout“Object id=“countPend1;private:int X,Y;static int countP;_/静态数据成员的初始化int main()Point:GetC();Point A(4,5);A.GetC();return 0;(分数:2.00)填空项 1:_43.下列程序的输出结果是_。#includeiostreamusing namespace std;Class Testpublic:Test()cnt+;Test(
20、)cnt-;static int Count()return cnt;private:static int cnt;int Test:cnt=0;int main()coutTest:Count()“;Test t1,t2;Test*pT3=new Test;Test*pT4=new Test;coutTest:Count()“;delete pT4;delete pT3;coutTest:Count()end1;return 0;(分数:2.00)填空项 1:_44.执行这个程序的输出结果是( );#includeiostreamusing namespace std;class TestC
21、lass1public:void fun1()cout“TestClass1/n“;virtual void fun2()cout“TestClass1/n“;class TestClass2:public TestClass1public:void fun1()cout“TestClass2/n“;void fun2()cout“TestClass2/n“;void f(TestClass1b.fun2();int main()TestClass2 obj;f(obj);return 0;(分数:2.00)填空项 1:_45.表达式 c3=c1.operator+(c2)或 c3=opera
22、tor+(c1,c2)还可以表示为 1。(分数:2.00)填空项 1:_46.插入排序算法的主要思想:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。Insert 类的成员函数 sort()实现了插入排序算法,请填空。class Insertpublic:Insert(int *b0,int n0):b(b0),n(n0);/参数 b0 是某数组首地址,n 是数组元素个数void sort()/此函数假设已排序序列初始化状态只包含 b0,未排序序列初始为 b1.bn-1for(int i=1;in;+i)int t=bi;int j;for(_;j0;-j)if(tbj-1)br
23、eak;bj=bj-1;bj=t;(分数:2.00)填空项 1:_47.程序中有如下语句:for(int i=0;i5;i+)cout*(p+i)“,“;能够依次输出 int 型一维数组 DATA 的前 5 个元素。由此可知,变量 p 的定义及初始化语句是_。(分数:2.00)填空项 1:_48.已知递归函数 f 的定义如下:int f(int n)if(n1)return 1; /递归结束情况else return n*f(n-2);/递归)则函数调用语句 f(5)的返回值是_。(分数:2.00)填空项 1:_49.有如下定义:class MAint value;public:MA(int
24、n=0):value(n);MA*ta,tb;其中 MA 类的对象名标识符是_。(分数:2.00)填空项 1:_50.有如下程序:#includeiostreamusing namespace std;class Apublic:A()cout“A“;A()cout“A“;class B A a;public:B()cout“B“;B()cout“B“;int main()B b;return 0;程序的输出结果是_。(分数:2.00)填空项 1:_二级 C+笔试-344 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列选项中,是软件调试
25、技术的是( )。(分数:2.00)A.错误推断B.集成测试C.回溯法 D.边界值分析解析:解析 软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。2.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( )关键字来修饰。(分数:2.00)A.constB.staticC.voidD.class 解析:解析 如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用 class 关键字来修饰。3.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB
26、包括 DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括 DB 和 DBMS D.没有任何关系解析:解析 数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员,硬件平台和软件平台 5 个部分组成,可见 DB 和 DBMS 都是 DBS 的组成部分。4.下列关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的解析:解析 选项 A) ,因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一定能是内联函数;成员函数可以重载,可以
27、设置参数的默认值,成员函数可以是静态的,所以其他选项叙述均正确。5.有如下程序:#includeiostreamusing namespace std;Class Conchar ID;public:Con():ID(A)cout1;Con(char ID) :ID(ID) cout2;Con(Conchar get1D()constreturn ID;void show(Con c)coutc.get1D();int main()Con c1;show(c1);Con c2(B);show(c2);return 0;执行上面程序的输出是( )。(分数:2.00)A.13A23AB.23A13
28、BC.13A23B D.13B23A解析:解析 Con c1 定义 c1 对象,调用 Con 的无参数构造函数,输出 1,ID 值变为 A,执行 show(c1)时会调用拷贝构造函数,将 c1 对象的值拷贝给 show()函数的形参,此时输出 3,然后在 show()中输出 c1 的 ID 值 A,Con c2(B)定义 c2 对象,调用 Con(char ID) 构造函数,输出 2,c2 的 ID 值为B,show(c2)执行时先调用拷贝构造函数输出 3,然后输出 B因此程序输出结果为“13A23B”。6.在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,
29、则应该选用( )。(分数:2.00)A.内联函数 B.重载函数C.递归调用D.嵌套调用解析:解析 此题考查的是内联函数的相关知识点。C+引入内联函数是用它来代替 C 语言中的预处理宏函数,内联函数在谓用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。7.关于模板,下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数 C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:解析 类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函敷。C
30、+中可以为类模板的参数设置默认值,所以选项B) 错误。8.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性 解析:解析 程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。9.下列函数的功能是判断字符串 str 是否对称,对称则返回 true,否则返回 false。请在横线处填上适当内容,实现该函数。Boo1 fun(char*str)int i=0,j=0;while(strjj+;for(j-;iji+,j-);ret
31、urn i _ j;(分数:2.00)A. B.|C.表达式 Wednesday= =Friday 的值是( )。(分数:2.00)A.falseB.true C.2D.异常解析:解析 enum枚举类型名枚举元素表;其中关键词 enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成本题中的枚举类型中的数据值Wednesday 为 2,而 Friday 的值赋值为 2,所以判断 Wednesday 等于 Friday 的表达式值为真,即 true。11.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为( )。(分数:2.00)A.oper
32、ator+(operator*(y,z)B.operator+(operator*(y,z) C.operator+(x*(y,z)D.x+(operator*(y,z)解析:解析 在定义了重载运算符后的函数后,函数 operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用 friend 对该函数进行声明,此函数就称为本类的友元函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“*”被改写为“operator*”。“+”为成员函数重载,x.operator+。所以 x+y*z 被改写为“x.operator+(operator*(y,z)”。
33、12.类 MyClass 的定义如下,若要对 value 赋值,则下面语句正确的是( )。class MyClasspublic:MyClass()MyClass(int i)value=new int(i);int*value;(分数:2.00)A.MyClass my;my.value=10;B.MyClass my;*my.value=10;C.MyClass my;my.*value=10;D.MyClass my(10); 解析:解析 因题目中定义的指针 value 是指向变量 i 的,所以直接利用语句 MyClass(int i)value=new int (i);对 Value
34、进行赋值即可。13.下列情况中,不会调用拷贝构造函数的是( )。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时 C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时解析:解析 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式:类名:类名 (const 类名public:SAMPLE(int i=0):n(i)void setValue(int n0);下列关于 setValue 成员函数的实现中,正确的是( )。(分数:2.00)A.SAMPL
35、E:setValue(int n0)n=n0;)B.void SAMPLE:setValue(int n0)n=n0; C.void setValue(int n0)n=n0;D.(int n0)n=n0;解析:解析 此题考查了成员函数的定义格式。在类外部对成员函数定义时的一般格式为:返回类型类名:成员函数名(参数表)函数体。16.C+语言本身没有定义 I/O 操作,但 I/O 操作包含在 C+实现中。C+标准库 iostream 提供了基本的I/O 类。I/O 操作分别由两个类 istream 和( )提供。(分数:2.00)A.fstreamB.iostreamC.ostream D.ci
36、n解析:解析 此题考查的是 C+标准库 iostream 提供的基本 I/O 类。 istream 提供了向流中插入数据的有关操作;ostream 提供了从流中提取数据的操作。17.下列对派生类的表述中,错误的是( )。(分数:2.00)A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的缺省继承方式是 privateD.派生类只继承了基类的公有成员和保护成员 解析:解析 存在多重继承,所以一个派生类可以作为另一个派生类的基类。定义一个派生类时将基类的继承方式指定为 protected,那么继承了基类重的保护成员,所以选项 D) 错误。18.已知递归函数 fun 的定义
37、如下:int fun(int n)if(n=1)return 1;/递归结束情况else return n*fun(n-2);/递归则函数调用语句 fun(5)的返回值是( )。(分数:2.00)A.5B.12C.15 D.30解析:解析 递归函数 fun 被定义为含有参数 int n 返回整型其中 fun 函数递归调用本身,当 n=1 时,fun 返回 1,如果大于 1 那么执行 n*fun(n-2)。所以,当 n 等于 5 时,执行 5*fun(3);当 n 等于 3 时继续调用 fun,3*fun(1),即 fun(5)=5*(3*fun(1),答案为 15。19.按照“先进先出”组织数
38、据的数据结构是( )。(分数:2.00)A.队列 B.栈C.双向链表D.二叉树解析:解析 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织数据的。20.类 MyClass 的定义如下:class MyClasspublic:MyClass()value=0;SetVariable(int i)value=i;private:int value;则对下列语句序列正确的描述是( )。MyClass*P, my;p=(分数:2.00)A.语句 p= 是把对象 my 赋值给指针变
39、量 PB.语句 MyClass*p, my; 会调用两次类 MyClass 的构造函数C.对语句*P. SetVariable(5)的调用是正确的D.语句 p-SetVariable(5)与语句 my.SetVariable(5)等价 解析:解析 选项 A) ,语句 p=class TestClasspublic:TestClass(int n)number=n;_/拷贝构造函数TestClass()private:int number;TestClass fun(TestClass p)TestClass temp(P);return temp;int main()TestClsss obj
40、1(10),obj2(0);TestClass obj3(obj1);obj2=fun(obj3);return 0;(分数:2.00)A.TestClass(TestClass B.TestClass(TestClass other)number=other.number;C.TestClass(TestClass D.TestClass(解析:解析 拷贝构造函数中的赋值构造函数也是构造函数,但它只有一个参数,这个参数是本类的对象,即 other,所以赋值操作将本类的参数 other,number 赋值给 number;而且采用对象的引用的形式,也就是templatetypename TT
41、fun(T a,T b)return(ab)?a:b;void main()coutfun(3,6),fun(3.14F,6.28F)end1;(分数:2.00)A.6,3.14B.3,6.28C.3,3.14D.6,6.28 解析:解析 “?:”为条件运算符,(ab)?a:b 是当 a 大于 b 时取 a,否则取 b。所以第一个fun(3,6)调用中,6 大于 3,所以输出 6,同理,第二个 fun(3.14F,6.28F)调用中输出 6.28。23.将下列程序写成三目运算表达式是( )。if(xy)min=x;else min=y;(分数:2.00)A.min=(xy)?x:yB.min=
42、(xy)?x:y C.min=(xy)x:yD.min=(xy)?x,y解析:解析 题目中给出的程序是求 x,y 中的小值。即如果 x 小于 y,那么 min=x,否则 min=y。条件运算符为“?:”,(xy)?x:y 是当 x 小于 y 时取 x,否则取 y。24.非成员函数只有在声明为( ),才能访问这个类的所有 private 成员。(分数:2.00)A.内联函数B.纯虚函数C.重载函数D.友元函数 解析:解析 此属考查的是非成员函数对类的成员的访问权限,非成员函数只有在声明为类的友元函数才能访问这个类的所有 private 成员,否则是不能访问类的私有成员的。25.有如下程序:#in
43、cludeiostreamusing namespace std;class Apublic:A()cout“A“;A()cout“A“;class B:public AA*p;public:B()cout“B“;p=new A;B()cout“B“;delete p;int main()B obj;return 0;执行这个程序的输出结果是( )。(分数:2.00)A.BAAABAB.ABABAA C.BAABA-AD.ABAABA解析:解析 此题考查的是类的构造函数和析构函数派生类构造函数的执行顺序;首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺
44、序按它们在类中说明的顺序;最后是派生类构造函数中的内容因此本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B, p=new A 再调用类 A 的构造函数输出 A;析构函数的调用顺序和构造函数的调用顺序相反。26.下列有关内联函数的叙述中,正确的是( )。(分数:2.00)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的 D.内联函数函数体的最后一条语句必须是 return 语句解析:解析 此题考查的是内联函数的概念在调用时,内联函数会像宏函数一样地层开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压
45、栈和退栈操作,所以选项 A) 错误;即使没有使用inline 说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项 B) 错误:内联函数只是比普通函数有更高的执行效率。对于类型为 void 的函数,它不需要返回任何函数值,所以在函数体中既可以使用 return 语句,也可以不使用,选项 D) 错误。27.算法的空间复杂度是指( )。(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析:解析 一个算法的空间复杂度一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数
46、据所占用的存储空间及算法执行过程中所需要的额外空间。28.下列叙述中正确的是( )。(分数:2.00)A.线性链表的各元素在存储空间中的位置必须是连续的B.线性链表的头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的 解析:解析 在线性链表中,各元素在存储空间中的位置是任意的,各元素的顺序也是任意的,依靠指针来实现数据元童的前后件关系。29.下列打开文件的表达式中,错误的是( )。(分数:2.00)A.ofstream ofile;ofile
47、.open(“C:/vc/LabC.txt“,ios:binary);B.fstream iofile;iofile.open(“abC.txt“,ios:ate);C.ifstream ifile(“C:/vc/abC.txt“);D.cout.open(“C:/vc/abC.txt“,ios:binary); 解析:解析 选项 D) 中,cout 是标准输出流对象,所以不能用于打开文件。其他选项叙述均正确。30.结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流 D.目标解析:解析 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐步求精,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。31.若类 A 和类 B 的定义如下:#includemalloc.hclass Aint i,j;public:int geti()return i;class B:public Aint k;public:void make(