【计算机类职业资格】二级C++笔试59及答案解析.doc

上传人:syndromehi216 文档编号:1324794 上传时间:2019-10-17 格式:DOC 页数:13 大小:79KB
下载 相关 举报
【计算机类职业资格】二级C++笔试59及答案解析.doc_第1页
第1页 / 共13页
【计算机类职业资格】二级C++笔试59及答案解析.doc_第2页
第2页 / 共13页
【计算机类职业资格】二级C++笔试59及答案解析.doc_第3页
第3页 / 共13页
【计算机类职业资格】二级C++笔试59及答案解析.doc_第4页
第4页 / 共13页
【计算机类职业资格】二级C++笔试59及答案解析.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、二级 C+笔试 59及答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.软件生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件产品从提出、实现到使用维护的过程C.软件产品从提出到实现的过程D.软件产品从提出、实现到使用的过程2.下面的描述中,( )是正确的。(分数:2.00)A.virtual可以用来声明虚函数B.含有纯虚函数的类是不可以用宋创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化成员列表来初始化3.在 ios ba

2、se类中定义了 3个用于文件流定位的枚举常量,下列枚举常量不属于此类的是( )。(分数:2.00)A.ios_ase:begB.ios_base:curC.ios_base:endD.ios_base:ate4.数据库的数据模型所描述的内容有三个部分,它们是( )。(分数:2.00)A.数据结构、数据操作和数据约束B.概念数据模型、逻辑数据模型和物理数据模型C.现实世界、信息世界和计算机世界D.概念模式、外模式和内模式6.下面有关重载函数的说明中,正确的是( )。(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须具有不同的形参列表D.重载函数名可

3、以不同7.知大写字母 A的 ASCII码是 65,小写 a的;ASCII 码值是 97,则用八进制表示字符常量/101为( )。(分数:2.00)A.字符 AB.字符 aC.字符 eD.非法常量8.若有以下程序: #includeiostream using namespace std; int main() int data4,i,j,temp; for (i=O; idatai; for (i=1; itemp j-; dataj+1 = temp; for(i=O;iA.2843B.2348C.8243D.843210.若有以下程序: #include iostream using na

4、mespace std; class A private: int x; public: int z; void setx(int i) x=i; int getx () return x; ; class B : public A private: int m; public: int p; void setvalue(int a,int b, int C) setx (A) ; z=b; m=c; void display() coutgetx()“,“z“,“mend1; ; int main ( ) B obj; obj.setvalue(2,3,4); obj.display();

5、return 0; 程序运行以后的输出结果是( )。(分数:2.00)A.产生语法错误B.2,3,4C.2,2,2D.4,3,211.在下列排序方法中,平均时间性能为 O(nlogn)且空间性能最好的是( )。(分数:2.00)A.快速排序B.堆排序C.归并排序D.基数排序12.下列虚基类的声明中,正确的是( )。(分数:2.00)A.class virtualB:public AB.virtual classB:public AC.class B:public A virtualD.class B:virtual public A14.若有以下程序: #include iostream us

6、ing namespace std; class sample private: int n; public: sample() sample(int m) n=m; void addvalue(int m) sample s; s.n=n+m; *this=s; void disp() cout“n=“nend1; ; int main() sample s(10); s.addvalue(5); s.disp(); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.n=10B.n=5C.n=15D.n=2015.对于常成员函数,下面描述正确的是( )。(分数:2.00

7、)A.常成员函数只能修改常数据成员B.常成员函数只能修改一般数据成员C.常成员函数不能修改任何数据成员D.常成员函数只能通过常对象调用16.下列关于 C+运算符结合性的说法中,错误的是( )。(分数:2.00)A.赋值运算符是右结合性的B.复合运算符是右结合的C.单目运算符是左结合的D.双目算术运算符是左结合的17.若有以下程序: #include iostream using namespace std; class sample private: int i; public: void setvalue(int m) i=m; void fun(int m) i+=m; void disp

8、() coutiend1; ; int main() sample *ps; ps=new sample; ps-setvalue(20); ps-fun(5); ps-disp(); return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.15B.20C.25D.3018.C+源程序文件的扩展名为( )。(分数:2.00)ACPPBCCDLLDEXE19.采用面向对象技术开发的应用系统的特点是( )。(分数:2.00)A.重用性更强B.运行速度更快C.占用存储量小D.维护更复杂20.用树形结构来表示实体之间联系的模型称为( )。(分数:2.00)A.关系模型B.层次模型C.

9、网状模型D.数据模型21.下列有关算法的描述中,错误的是( )。(分数:2.00)A.所谓算法是指解题方案的准确而完整的描述B.算法的基本特征有:可行性、确定性、有穷性和拥有足够的情报等C.算法的复杂度主要包括时间复杂度和空间复杂度D.算法的时间复杂度是指执行算法程序所需要的时间22.下列叙述中,正确的是( )。(分数:2.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是是线性结构23.以下程序段的输出结果是( )。 int x=5; do coutx-end1; while(!x);(分数:2.00)A.5B.无任何输出C.4D.陷入死循环24.栈是限定

10、在一端进行插入与删除的线性表,那么其组织数据的原则是( )。(分数:2.00)A.FISOB.FIFOC.LILOD.FILO25.下列对基类和派生类关系的描述中,错误的是( )。(分数:2.00)A.派生类是基类的具体化B.派生类是基类的子集C.派生类是基类定义的延续D.派生类是基类的组合26.软件需求分析阶段的工作,可以分为 4个方面:需求获取、需求分析、编写需求分析说明书和( )。(分数:2.00)A.阶段性报告B.需求评审C.总结D.都不正确27.有如下程序: #include iostream using namespace std; class Base private: char

11、 c; public: Base(char n) :c(n) Base ( ) coutc; ; class Derived : public Base private: char c; public: Derived(char n) :Base(n+1),c(n) Derived () coutc; ; int main ( ) Derived obj (x); return 0; 执行上面的程序将输出( )。(分数:2.00)A.xyB.yxC.xD.y28.执行下面的程序段后,变量 k的值为( )。 int k=3,s2; s0=k; k=s1*10;(分数:2.00)A.不定值B.33

12、C.30D.1029.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为( )。(分数:2.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,430.有以下程序: #include iostream using namespace std; class A public: virtual void setx(int i,int j=0) x=i; y=j; virtual void print()=0; protected: int x,y; ; class B : public A public: void print() coutx*x“, “; ; clas

13、s C : public A public: void print() coutx*x*xend1; ; int main() A *pa; B b; C c; pa= pa-setx(5); pa-print (); pa= pa-setx(2); pa-print(); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.25,8B.2,5C.5,2D.8,25二、B填空题/B(总题数:14,分数:28.00)31.已知序列17,18,60,40,7,32,73,65,85,采用冒泡排序法对该序列作降序排序时,第 4趟的结果是U 【1】 /U。(分数:2.00)填空项

14、1:_32.U【2】 /U是按照程序语句行的自然顺序,依次执行语句。(分数:2.00)填空项 1:_33.调试方法中的U 【3】 /U最适合小规模程序的排错。(分数:2.00)填空项 1:_34.实体联系模型是一种常用的高级U 【4】 /U模型,而U 【5】 /U是实体联系模型中的核心。(分数:2.00)填空项 1:_35.若 a=12,b=14,c=0,则表达式“(y=(aB) ?a:B) C) ?y:c”的值为U 【6】 /U。(分数:2.00)填空项 1:_36.求 1100 的和,可写成“for(s=0,i=1;U 【7】 /U;i+) s+=i;”的形式。(分数:2.00)填空项 1

15、:_37.以下程序调用 findmax()函数返回数组中的最大值。请填空完成此函数。 #includeiostream using namespace std; int findmax(int*a,int n) int +p、*s; for(p=a,s=a;p-an;p+) if(u 【8】 /u) *s=*p; return(*S); int main() int x5=12,21,14,16; coutfindmax(X,5)end1; return 0; (分数:2.00)填空项 1:_38.下面程序的输出结果是u 【9】/u。 #include iostream using names

16、pace std; void f(int x) if(x) coutput(0+x%10); f(x10); int main() f(11001); return 0; (分数:2.00)填空项 1:_39.非成员函数只有在声明为类的U 【10】 /U才能访问这个类的所有 private成员。(分数:2.00)填空项 1:_40.有一种特殊的虚函数,重定义时不要求同名,这种虚函数是U 【11】 /U。(分数:2.00)填空项 1:_41.cout是 IO 流库预定义的U 【12】 /U。(分数:2.00)填空项 1:_42.以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类 nod

17、e,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 IMG onClick=over(this) title=放大 src=“tp/jsj/2jc+j28.1.gif“ 下面是实现程序,请填空完成此程序。#include iostream using namespace std; class stack; class node int data; node *prev; public: node(int d, node *n) data=d; prev=n; friend class stack; ; class

18、stack node *top; /栈头 public: stack() top=0; void push(int i) node *n=u 【13】 /u; top=n; int pop() node *t=top; if (top) top=top-prev; int c= t-data; delete t; return c; return 0; int main () stack s; s.push(6); s.push(3); s.push (1); return 0; (分数:2.00)填空项 1:_43.在下面的程序的横线处填上适当的语句,使该程序的输出为 12。 #includ

19、e iostream using namespace std; class Base public: int a; Base(int i) a=i; ; class Derived : public Base int a; public: Derived(int x) : Base(x),b(x+1) void show() u 【14】 /u; /输出基类数据成员 a的值 coutbend1; ; int main() Derived d(1); d.show(); return 0; (分数:2.00)填空项 1:_44.若有以下程序: #includeiostream using nam

20、espace std; class Base public: Base ( ) x=0; int x; ; class Derived1 : virtual public Base public: Derived1() x=10; ; class Derived2 : virtual public Base public: Derived2() x=20; ; class Derived : public Derived1,protected Derived2 ; int main() Derived obj; coutobj.xend1; return 0; 该程序运行后的输出结果是u 【1

21、5】 /u。(分数:2.00)填空项 1:_二级 C+笔试 59答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.软件生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件产品从提出、实现到使用维护的过程C.软件产品从提出到实现的过程D.软件产品从提出、实现到使用的过程解析:解析 软件生命周期是一个重要概念,考生应很好掌握。它是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。2.下面的描述中,( )是正确的。(分

22、数:2.00)A.virtual可以用来声明虚函数 B.含有纯虚函数的类是不可以用宋创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化成员列表来初始化解析:解析 本题考核 C+中各知识点的应用。 virtual 关键词既可以用来声明虚基类,也可以用来声明虚函数。所以选项 A的描述是正确的。 C+规定,含有纯虚函数的类是抽象类,它不能用来定义对象。选项 B的描述中,前半句是正确的,但后半句是错误的。 在 C+中,如果所有的基类和子对象构造函数都不需要参数,派生也不需要参数初始化,则派生类中,可以不定义构造函数。所以选项 C的描述是

23、错误的。 在 C+中,静态数据成员的初始化必须在类体外进行。所以选项 D的描述是错误的。3.在 ios base类中定义了 3个用于文件流定位的枚举常量,下列枚举常量不属于此类的是( )。(分数:2.00)A.ios_ase:begB.ios_base:curC.ios_base:endD.ios_base:ate 解析:解析 C+文件流的定位方式有 3种,被定义为 ios_base:seek_dir 中的一组枚举符号: ios base:beg 相对于文件首 ios base:cur 相对于当前位置(负数表示当前位置之前) ios_base:end 相对于文件尾4.数据库的数据模型所描述的内

24、容有三个部分,它们是( )。(分数:2.00)A.数据结构、数据操作和数据约束 B.概念数据模型、逻辑数据模型和物理数据模型C.现实世界、信息世界和计算机世界D.概念模式、外模式和内模式解析:解析 数据模型是数据特征的抽象,它所描述的内容有三个部分,它们是数据结构、数据操作和数据约束。解析:解析 本题考核静态数据成员的应用。分析程序: 类 visited中,定义了两个私有成员:整型变量 number和指针变量 name。两个公有成员:静态数据变量 glob和函数 set mes()。 在函数 set mes中,把传入的字符串保存在类的私有成员 name中,并把静态数据成员 glob自加,同时赋

25、值给私有成员 number。 通过以上分析可知,函数 set mes()用来记录输入的名字(即来访者的姓名),静态数据变量glob用来记录有多少来访者。 在主函数中,输入 5个字符串(即 5个来访者的姓名)后,用来记录来访者数目的静态数据成员 glob的值变成 5。所以程序最后的输出结果是 5。6.下面有关重载函数的说明中,正确的是( )。(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须具有不同的形参列表 D.重载函数名可以不同解析:解析 所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函数在参数个数上不同,或者参

26、数类型上不同。即重载函数必须具有不同的形参列表。7.知大写字母 A的 ASCII码是 65,小写 a的;ASCII 码值是 97,则用八进制表示字符常量/101为( )。(分数:2.00)A.字符 A B.字符 aC.字符 eD.非法常量解析:解析 此题考核的知识点是转义字符。此题目的关键是八进制的 101对应的十进制数是多少。八进制 101转换为十进制为 65,也就是大写字母 A的 ASCII码。8.若有以下程序: #includeiostream using namespace std; int main() int data4,i,j,temp; for (i=O; idatai; fo

27、r (i=1; itemp j-; dataj+1 = temp; for(i=O;iA.2843B.2348 C.8243D.8432解析:解析 本题属于综合题,考查数组和循环语句两方面的知识。此题看起来很复杂,其实不然,根据程序逐步分析: 在程序第 1个 for语句中,为数组 data赋输入的值,即 2,8,4,3。 第 2个for语句是嵌套式循环,循环次数是 3次,即从 1到 3。第 1次循环时, i=1,执行“j=i-1”后,j=0,然后把 data1的值赋给 temp,再进入 while循环。 while 后的条件表达式“datajtemp class A private: int

28、x; public: int z; void setx(int i) x=i; int getx () return x; ; class B : public A private: int m; public: int p; void setvalue(int a,int b, int C) setx (A) ; z=b; m=c; void display() coutgetx()“,“z“,“mend1; ; int main ( ) B obj; obj.setvalue(2,3,4); obj.display(); return 0; 程序运行以后的输出结果是( )。(分数:2.00

29、)A.产生语法错误B.2,3,4 C.2,2,2D.4,3,2解析:解析 本题考核公有继承中的类成员访问权限。当类的继承方式为公有继承时,基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承来的公有成员。 在本题中,数据成员 z和函数 setx()都是基类 A的公有成员,它们经过公有继承以后,在派生类 B中还是公有成员,而派生类 B中的函数 setValue()和display()都是公有成员,可以通过对象对它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是输出已设置的各成员的值。11.在下列排序方

30、法中,平均时间性能为 O(nlogn)且空间性能最好的是( )。(分数:2.00)A.快速排序B.堆排序 C.归并排序D.基数排序解析:解析 堆排序先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。因此它的平均时间性能为 O(nlogn)且空间性能最好。12.下列虚基类的声明中,正确的是( )。(分数:2.00)A.class virtualB:public AB.virtual classB:public AC.class B:public A virtualD.class B:virtual public A 解析:解析 虚基类说明格式如下:Virtual其中,v

31、irtual 是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即:class:Virtual。解析:解析 本题考查的知识点是递归函数的调用。根据程序代码逐步分析: f(n)用来计算 n+(n-1)+1,在 f(n)定义内部又调用 f(n)自身,这就是递归函数。 f(n)=f(n-1)+1,因此必须先计算出f(n-1),而 f(n-1)=f(n-2)+1,又必须计算 f(n-2)。 由此类推,直到 n=1,返回后可以此计算出 f(n),f(n-1),f(1)。 第 1次调用 f(n)时,形参 n接收的值为 1,进入函数体后,由于满足“n=1”,执行 return语句得到 1

32、。第 2次调用 f(n)时,n 的值为 2,不满足条件“n=1”,执行 return f(n-1)+1,在这条语句中又调用 f(n-1)即 f(1),从而得到 f(2)的返回值为 2。所以 j=1+2=3。14.若有以下程序: #include iostream using namespace std; class sample private: int n; public: sample() sample(int m) n=m; void addvalue(int m) sample s; s.n=n+m; *this=s; void disp() cout“n=“nend1; ; int

33、main() sample s(10); s.addvalue(5); s.disp(); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.n=10B.n=5C.n=15 D.n=20解析:解析 本题考核 this指针的应用。本程序中 sample类定义了一个 addvalue非静态成员函数。addvalue()函数的原型是:void addvalue(sample *this,int m);,该函数的第 1个参数是执行该类对象的一个指针,即 this指针。由于这个参数是系统隐含的,所以在定义该成员函数时并没有看到这样一个参数。在成员函数的定义体中,可以通过 this访

34、问这一参数。程序的最后输出结果是 15。15.对于常成员函数,下面描述正确的是( )。(分数:2.00)A.常成员函数只能修改常数据成员B.常成员函数只能修改一般数据成员C.常成员函数不能修改任何数据成员 D.常成员函数只能通过常对象调用解析:解析 对于常成员函数需要注意以下几点: const 是常成员函数类型的一个组成部分,因此在实现部分也要带 const关键词。 常成员函数不更新对象的数据成员,也不能调用该类中没有用 const修饰的成员函数。 如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数,而不能调用其他的成员函数。 当成员函数是常成员函数时,常对象和一般对象都可以调用它

35、。16.下列关于 C+运算符结合性的说法中,错误的是( )。(分数:2.00)A.赋值运算符是右结合性的B.复合运算符是右结合的C.单目运算符是左结合的 D.双目算术运算符是左结合的解析:解析 运算符的结合方式有两种:左结合和右结合。左结合表示运算符优先与其左边的标识符结合进行运算,如加法;右结合表示运算符优先与其右边的标识符结合,如单目算术运算符+和-。赋值运算符、复合运算符和单目运算符都是右结合的。双目算术运算符是左结合的。所以选项 C是错误的。17.若有以下程序: #include iostream using namespace std; class sample private: i

36、nt i; public: void setvalue(int m) i=m; void fun(int m) i+=m; void disp() coutiend1; ; int main() sample *ps; ps=new sample; ps-setvalue(20); ps-fun(5); ps-disp(); return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.15B.20C.25 D.30解析:解析 本题考核对象指针的应用。程序首先定义了一个类 sample,其中包含一个私有成员 i和 3个公有成员函数。函数 setvalue()的功能是给私有成员 i赋

37、值,函数 fun()的功能是将私有成员 i的值增加 m,函数 disp的功能是输出变量 i的值。在主函数中,先定义了类 sample的一个耐象指针 ps,并申请了一块内存空间。执行 语句 ps-setvalue(20);后,类中 i的值为 20,执行语句“ps-fun(5);”后,类中 i的值为 25。所以程序最后输出 25。18.C+源程序文件的扩展名为( )。(分数:2.00)ACPP BCCDLLDEXE解析:解析 本题考察有关 C+语言中有关 C+程序开发方面的知识点。C+语言源程序的扩展名为CPP,DLL 是动态连接库文件的扩展名,.EXE 是可执行文件的扩展名。19.采用面向对象技

38、术开发的应用系统的特点是( )。(分数:2.00)A.重用性更强 B.运行速度更快C.占用存储量小D.维护更复杂解析:解析 面向对象方法具有很多其他方法不具备的特点,比如多态、继承等。这些特点都决定了面向对象方法支持软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了对象类数据结构和操作代码的软构件复用。可重用性是面向对象思想的一个重要特征。20.用树形结构来表示实体之间联系的模型称为( )。(分数:2.00)A.关系模型B.层次模型 C.网状模型D.数据模型解析:解析 本题考核几种数据模型的表示方法。其中,关系模型采用二维表来表示,简称表:层次模型用树形结构来表示:网状模型是一个不

39、加任何限制的无向图。21.下列有关算法的描述中,错误的是( )。(分数:2.00)A.所谓算法是指解题方案的准确而完整的描述B.算法的基本特征有:可行性、确定性、有穷性和拥有足够的情报等C.算法的复杂度主要包括时间复杂度和空间复杂度D.算法的时间复杂度是指执行算法程序所需要的时间 解析:解析 算法的时间复杂度是指算法执行过程中所需要的基本运算次数。22.下列叙述中,正确的是( )。(分数:2.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是是线性结构解析:解析 一个线性结构需要满足以下两个条件:一是有且只有一个根节点,二是每个节点最多有一个前件,也最多有

40、一个后件。选项中的线性表、栈与队列、线性链表都满足这两个条件,所以它们都是线性结构,而二叉树虽然只有一个根节点,但它的每个节点可以有两个子树,不满足线性结构的每个节点最多有一个前件,也最多有一个后件这一条件。所以它不是线性结构。23.以下程序段的输出结果是( )。 int x=5; do coutx-end1; while(!x);(分数:2.00)A.5 B.无任何输出C.4D.陷入死循环解析:解析 本题考查循环语句 do-while语句的执行情况。根据 do-while循环语句功能特点可得:首先无条件执行循环体,表达式 x-的值为 5,输出为 5,x 的值变为 4,然后检查条件(!x)为假

41、(false),则循环结束。24.栈是限定在一端进行插入与删除的线性表,那么其组织数据的原则是( )。(分数:2.00)A.FISOB.FIFOC.LILOD.FILO 解析:解析 栈中的栈顶元素总是最后被插入的元素,也是最先被删除的元素。所以栈是按照 FILO,即“先进后出”的原则组织数据的。25.下列对基类和派生类关系的描述中,错误的是( )。(分数:2.00)A.派生类是基类的具体化B.派生类是基类的子集 C.派生类是基类定义的延续D.派生类是基类的组合解析:解析 本题考核基类和派生类的关系。派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,而不是基类的

42、子集。26.软件需求分析阶段的工作,可以分为 4个方面:需求获取、需求分析、编写需求分析说明书和( )。(分数:2.00)A.阶段性报告B.需求评审 C.总结D.都不正确解析:解析 本题考核软件需求分析的 4个阶段,分别为需求获取、需求分析、编写需求分析说明书和需求评审。27.有如下程序: #include iostream using namespace std; class Base private: char c; public: Base(char n) :c(n) Base ( ) coutc; ; class Derived : public Base private: char

43、c; public: Derived(char n) :Base(n+1),c(n) Derived () coutc; ; int main ( ) Derived obj (x); return 0; 执行上面的程序将输出( )。(分数:2.00)A.xy B.yxC.xD.y解析:解析 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数结束时,派生类 Derived对象。obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析

44、构函数,输出 x,然后调用基类的析构函数,输出 y。28.执行下面的程序段后,变量 k的值为( )。 int k=3,s2; s0=k; k=s1*10;(分数:2.00)A.不定值 B.33C.30D.10解析:解析 解本题考核数组元素的初值及其引用。若数组为 auto型,且没有进行初始化,其元素的值为不确定。本程序中,虽然给 s0赋了一个初值,但 s1的值依旧是不确定的,所以执行语句“k=s1*10”后,k 的值也不确定的。29.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为( )。(分数:2.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4 D.3,2,1,4解析:解

45、析 队列是指允许在一端进行插入,而在另一端进行删除的线性表。因此队列又称为先进先出的线性表。答案为 C。30.有以下程序: #include iostream using namespace std; class A public: virtual void setx(int i,int j=0) x=i; y=j; virtual void print()=0; protected: int x,y; ; class B : public A public: void print() coutx*x“, “; ; class C : public A public: void print()

46、 coutx*x*xend1; ; int main() A *pa; B b; C c; pa= pa-setx(5); pa-print (); pa= pa-setx(2); pa-print(); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.25,8 B.2,5C.5,2D.8,25解析:解析 该程序中定义了 A类、B 类和 C类共 3个类。其中,类 A是抽象类,它的类体内有一个纯虚函数 pnnt()。抽象类不可以定义对象,但可以定义指向对象的指针。类 B和类 C都是类 A的公有派生类,这些类是具体类,它们对 A类中纯虚函数都有不同的实现。该程序的主函数中,定义一个指向类 A对象的指针 pa,又定义了类 B和类 C的 2个对象,并使指针 pa分别指向这些对象。这里,采用动态联编,在运行时选择 print()函数。所以,执行语句序列“pa= class stack; class node int data; node *prev; public: node(int d, no

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1