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

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

1、二级 C+笔试-323 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.若有以下程序:# include iostreamusing namespace std;void sub(int x, int y, int *z)*z = y+x;int main ()int a,b, c;sub8,4.sub (6, a, sub (a.b, couta“ , “b2.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(分数:2.00)A.控制流B.加工C.数据存储D.源和潭3.实现

2、运行时的多态性要使用(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数4.若有定义:int k,*q;,则下列各选项中赋值表达式正确的是(分数:2.00)A.q=(class sampleprivate:int x;static int y;public:sample(int(分数:2.00)A.;static void print(sample s);6.有如下函数模板定义:templatetypename T1,int a2,int a3T1 sum(T1 a1)return(a1+a2+a3);则以下调用中正确的是(分数:2.00)A.sumint,4,3(5);B.sum

3、4,3(5);C.sumint,int,int(5);D.sum(5);7.以下运算符中不能重载的运算符是(分数:2.00)A.newB.sizeofC*D.+8.对建立良好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无9.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对10.下列数据结构中能应用二分查找的是(分数:2.00)A.有序线性链表B.有序顺序表C.

4、顺序存储的栈D.顺序存储的队列11.以下程序段的输出结果是int x=5;do coutx-end1;while(!x);(分数:2.00)A.5B.无任何输出C.4D.陷入死循环12.有如下程序:#includeiostreamusing namespace std;int main()cout. fill(*);cout. width(5);coutscientific314.15 926535end1;return 0;程序运行后,输出的结果是(分数:2.00)A.3.141593e+002B.3.1416e+002C.*3.14e+002D.314.1613.按照标识符的要求,下列选项

5、中,( )符号不能组成标识符。(分数:2.00)A.连接符B.下划线C.大小写字母D.数字字符14.一个函数为 void f(int,charch=a),另一个函数为 void f(int),则它们(分数:2.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载C.可以在同一程序中定义,但不可以重载D.以上说法均不正确15.设有下列二叉树:(分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA16.数据库设计包括两个方面的设计内容,它们是(分数:2.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计1

6、7.运算符函数调用格式的表达式:y/x+与表达式:y. operator/(operator+(x,0)含义相同,由此可看出()。(分数:2.00)A.“/”和“+”都是作为成员函数重载的B.“/”和“+”都是作为非成员函数重载的C.“/”是作为成员函数重载的,“+”是作为非成员函数重载的D.“/”是作为非成员函数重载的,“+”都是作为成员函数重载的18.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算D.以上三种说法都不对19.为完成下面的程序,应

7、在划线处填入的语句是#includeiostreamusing namespace std;class Baseprivate:int x;public:Base(int i)x=i;Base();class Derived:public Basepublic:_ /完成类 Derive 构造函数的定义;int main()Derived obj;return 0;(分数:2.00)A.Derived(inti):Base(i)B.Derived()C.Void Derived (inti):Base(i)D.Denved(inti)Base(i);20.有以下程序:#include iost

8、reamusing namespace std;class sampleprivate:int n;public:sample() sample(int m)n=m;sample add(sample s1,sample s2)this-n-s1.n+s2.n;return (*this);void disp()cout “n=“nend1;int main (sample s1(10),s2(5),s3;s3.add(s1,s2);s3.disp();return 0;程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=1521.若有以下程序:#include

9、iostreamusing namespace std;class Aprivate:int x;public:int z;void setx(int i)x=i;int getx ()return x;:class B : public Aprivate:int m;public:int p;void setvalue(int a, int b, int c) setx((分数:2.00)A.;public:void setc(int x, inc y, int z)c=z;seta (x);setb (y);void showc()showa ();showb ();coutcend1;i

10、nt main ()C c;c. setc(1,2,3);c.showc();return 0;程序执行后的输出结果是(分数:2.00)A.1,2,3B.1,1,1C.2,2,2D.3,3,325.在下面的类定义中,错误的语句是class Samplepublic:Sample(int val); /Sample(): /private:int a=2.5; /Sample(); /;(分数:2.00)A.B.C.D.26.在长度为 n 的有序线性表中进行二分查找,需要的比较次数为(分数:2.00)A.log2nB.nlog2nC.n/2D.(n+1)/227.( )是以一种完全通用的方法来设

11、计函数或类而不必预先说明将被使用的每个对象的类型。(分数:2.00)A.模板B.类C.对象D.函数28.执行语句序列ofstream outfite(“data.dat“);if(.)cout“ok“;else cout“fail“;后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面 if 语句的“”处的表达式是(分数:2.00)A.outfile.fail()或 outfileB.outfile.good()或!outfileC.outfile.good()或 outfileD.outfile.fail()或!outfile29.下面的描述中表达错误的是(分数:2.00

12、)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的C.公有继承时基类中的 protected 成员在派生类中仍是 protected 的D.私有继承时基类中的 public 成员在派生类中是 private 的30.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.MyClass(int n);C.MyClass();D.MyClass();31.下面不属于软件工程 3 个要素的是(分数:2.00)A.工具B.

13、过程C.方法D.环境32.有如下程序:#include iostreamusing namespace std;class sampleprivate:int x,y;public:sample(int i,int j)x=i;y=j;void disp ()cout“disp1“end1;void disp() constcout“disp2“end1;int main ()const sample a(1,2);a.disp();return 0;该程序运行后的输出结果是(分数:2.00)A.disp1B.disp2C.disp1 disp2D.程序编译时出错33.下面关于对象概念的描述中

14、,错误的是(分数:2.00)A.C+中的对象就是 C 语言中的结构变量B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的34.下列数组的定义中,会产生错误的是(分数:2.00)A.int a=(0,1,2,3,4,5,6);B.int a10=0,1,2,3,4,5,6;C.char a5=“hello“;D.char a5=h,e,1,1,o;35.结构化程序设计的主要特点是(分数:2.00)A.每个控制结构要模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控制结构只有一个入口和一个出口二、填空题(总题数

15、:14,分数:28.00)36.设一棵二叉树中有 3 个叶子结点,有 8 个度为 1 的结点,则该二叉树牛总的结点数为 【1】 。(分数:2.00)填空项 1:_37.类是一个支持集成的抽象数据类型,而对象是类的 【2】 。(分数:2.00)填空项 1:_38.结构化设计主要分为系统设计和模块设计, 【3】 的任务是决定系统的模块结构。(分数:2.00)填空项 1:_39.一般来说,数据库的设计过程要经历 3 个大的阶段,即可行性分析与研究阶段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结构设计属于数据库设计的 【4】 阶段。(分数:2.00)填空项 1:_40.数据流

16、图有两种典型的结构形式,它们分别是变换型和 【5】 。(分数:2.00)填空项 1:_41.设有定义语句:double x=2.5, y=4.7;int a=7;那么表达式 x+a%3*(int)(x+ y)%2/4 的值为 【6】 。(分数:2.00)填空项 1:_42.函数 swap(arr,n)可完成对 arr 数组从第 1 个元素到第 n 个元素两两交换。在运行调用函数中的语句后,a0和 a1的值分别为 【7】 。a0=1;a1=2;swap(a,2);(分数:2.00)填空项 1:_43.下列程序的输出结果是 【8】 #includeiostreamusing namespace s

17、td;int main()int num=500;int Base();class Derived : public Basepublic:【10】 /完成类 Derive 构造函数的定义;int main ()Derived Obj;return 0;(分数:2.00)填空项 1:_46.下面是“二维向量”vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x 和 y 对应相加,然后返回作为相加结果的新对象;请填空补充完整。class vector2Ddouble x; /x 分量double y; /y 分量public:vector2D(double x0

18、=0, double y0=0):x(x0),y(y0)void show(cout (,y) ;vector2D operator + (vector2D);【11】 operator + (vector2D a) return vector2D( 【12】 );(分数:2.00)填空项 1:_47.已知:double A(double A) return+a;和 int A(in A) return+a;是一个函数模板的两个实例,则该函数模板定义为 【13】 (分数:2.00)填空项 1:_48.有以下程序:#includeiostream.hclass Aint x;public:A(i

19、nt a) x=a;friend class B;class Bpublic:void print(A a)a. x-;couta.xend1;void main()A a(10);B b;b.print(a) ;程序执行后的输出结果是 【14】 。(分数:2.00)填空项 1:_49.下面程序的输出结果是 【15】 。#include iostreamusing namespace std;class baseprotected:int a;public:base()cout“0“:;class basel: virtual public basepublic:base1() cout“1“

20、;class base2 : virtual public basepublic:base2()cout“2“;class derived : public base1,public base2public:derived () cout“3“; int main ()derived obj;coutend1;return 0;(分数:2.00)填空项 1:_二级 C+笔试-323 答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.若有以下程序:# include iostreamusing namespace std;void sub(int

21、x, int y, int *z)*z = y+x;int main ()int a,b, c;sub8,4.sub (6, a, sub (a.b, couta“ , “b解析:解析 本题考核对指针作为函数的参数的理解程度。分析程序:函数 sub 为 void 型。函数的形参中,z 是一个 int 型的指针变量,因此它只能从实参接收一个 int 型变量的地址。在函数 sub 体中,语句:*z=y +x;的功能是把形参 y 与 x 的和值放入形参 z 所指的存储单元中。在主函数中,3 次调用 sub 函数。第一次调用时,把 8 和 4 分别传递给形参 x 和 y,把主函数中变量 a 的地址传递

22、给形参 z,这样形参就指向了主函数中的变量 a,在 sub 函数中执行语句*z=y/x;后,把 12 放入 z 所指的存储单元中,即变量 a被赋值 11。以此类推,最后 b 被赋值 18,c 被赋值 30。所以最后输出是 12,18,30。2.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(分数:2.00)A.控制流 B.加工C.数据存储D.源和潭解析:解析 数据流图由 4 种基本成分构成:数据流,数据处理(即加工),数据存储,外部实体(即源和潭)而控制流是程序流程图中的图符,它不属于数据流图的合法图符。选项 A 正确。3.

23、实现运行时的多态性要使用(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:解析 本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。4.若有定义:int k,*q;,则下列各选项中赋值表达式正确的是(分数:2.00)A.q=(class sampleprivate:int x;static int y;public:sample(int(

24、分数:2.00)A.;static void print(sample s);解析:解析 本题考核静态数据成员和静态成员函数的应用。类 sample 中定义两个私有成员 x 和 y,其中 y 为静态数据成员。并定义函数 print()为静态成员函数。在主函数中,定义对象 s1(10)时,通过构造函数使对象 s1 的私有成员 x=10,静态数据成员 y=10。定义 s2(20)时,通过构造函数使对象 s2 的私有成员 x=20,静态数据成员 y=10+20=30。程序最后调用静态成员函数 print 输出对象 s2 的私有成员 x 的值20,对象 s1、s2 共享的静态数据成员 y 的值 30。

25、6.有如下函数模板定义:templatetypename T1,int a2,int a3T1 sum(T1 a1)return(a1+a2+a3);则以下调用中正确的是(分数:2.00)A.sumint,4,3(5); B.sum4,3(5);C.sumint,int,int(5);D.sum(5);解析:解析 本题考核函数模板的使用。C+中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模

26、板函数的形参中;函数模板含有常规形参。题中定义的函数模板中含有常规形参,常规形参的信息无法从模板函数的实参表中获得,因此在调用时必须显式地给出对应于常规参数的模板实参。注意,sum 的第一个模板实参的信息可以从模板函数的实参表中获得,但由于它位于不可省略实参的前面,因此不能省略,所以只有 A 选项的调用格式是正确的。7.以下运算符中不能重载的运算符是(分数:2.00)A.newB.sizeofC* D.+解析:解析 本题考核运算符的重载。C+不能重载的运算符包括:“.”、“.*”、“:”、“?:”。8.对建立良好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好

27、B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析 符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。所以,选项 B 错误。程序设计风格强调“清晰第一,效率第二”,而不是效率第一。所以,选项 C 错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。所以,选项 D 错误。本题的正确答案为 A。9.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C

28、.关系模型属于格式化模型D.以上三种说法都不对 解析:解析 实体集之间一对一的联系不一定是一一对应的关系如在图书馆,“学生”与“座位”之间是一对一的联系,但学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。选项 A 错误。在关系模型中,由于使用表格数据来表示实体之间的联系,所以,可以直接描述多对多的实体联系。选项B 错误。关系模型是与格式化模型完全不同的数据模型,它与层次模型,网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。选项 C 错误。本题的正确答案是 D。10.下列数据结构中能应用二分查找的是(分数

29、:2.00)A.有序线性链表B.有序顺序表 C.顺序存储的栈D.顺序存储的队列解析:解析 二分查找的具体过程为:将 x 与线性表的中间项进行比较,若中间项的值等于 x,则说明查到,查找结束;若 x 小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若 x 大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找。这个过程一直进行到查找成功或子表长度为 0(说明线性表中没有这个元素)为止。由此可知,有序线性表顺序存储时才能采用二分查找。所以,本题的正确答案为 B。11.以下程序段的输出结果是int x=5;do coutx-end1;while

30、(!x);(分数:2.00)A.5 B.无任何输出C.4D.陷入死循环解析:解析 本题考查循环语句 do-while 语句的执行情况根据 do-while 循环语句功能特点可得:首先无条件执行循环体,表达式 x-的值为 5,输出为 5,x 的值变为 4,然后检查条件 (!x)为假(false),则循环结束。12.有如下程序:#includeiostreamusing namespace std;int main()cout. fill(*);cout. width(5);coutscientific314.15 926535end1;return 0;程序运行后,输出的结果是(分数:2.00)

31、A.3.141593e+002 B.3.1416e+002C.*3.14e+002D.314.16解析:解析 本题考核格式控制数据的输入输出函数 setfill (char c) 用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满,设置的填充符一直有效,直到再次设置填充字符为止,如题中调用函数 setfill(*)将填充字符设置为*,后又调用函数 setfill(#)将填充字符设置为#。函数 setw(int n)用于设置输入输出宽度,当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出, 如题中数据 314. 15926535 的宽度大于 5,所以将会按实

32、际输出。关键字scientific 将浮点数按指数格式(科学表示法)输出。13.按照标识符的要求,下列选项中,( )符号不能组成标识符。(分数:2.00)A.连接符 B.下划线C.大小写字母D.数字字符解析:解析 本题考核 C+的标识符定义。C+规定标识符由大小写字母、数字字符 (09)和下划线组成,并且以字母或下划线开始,后跟 0 个或多个字母,数字字符或下划线。由此可知 A) 选项中的连接符不能用于组成标识符。14.一个函数为 void f(int,charch=a),另一个函数为 void f(int),则它们(分数:2.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载C.

33、可以在同一程序中定义,但不可以重载 D.以上说法均不正确解析:解析 本题函数的调用。只要满足参数列表不同的条件,就可以在同一程序中对同名的函数进行定义。但是由于其中一个函数有默认值,因此当程序中出现语句“x=f(10);”时,就会产生二义性,不能确定调用函数 f(10)还是调用函数 f(10,a),此时这两个函数不能重载。15.设有下列二叉树:(分数:2.00)A.ABCDEFB.DBEAFC C.ABDECFD.DEBFCA解析:解析 二叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,其遍历顺序应该为:中序遍历左子树访问根结点中序遍历右子树。按照定义,中序遍历序列是 DBEAF

34、C,故答案为B。16.数据库设计包括两个方面的设计内容,它们是(分数:2.00)A.概念设计和逻辑设计 B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计解析:解析 数据库设计包括两个方面的设计内容:概念设计和逻辑设计。选项 A 正确17.运算符函数调用格式的表达式:y/x+与表达式:y. operator/(operator+(x,0)含义相同,由此可看出()。(分数:2.00)A.“/”和“+”都是作为成员函数重载的B.“/”和“+”都是作为非成员函数重载的C.“/”是作为成员函数重载的,“+”是作为非成员函数重载的 D.“/”是作为非成员函数重载的,“+”都是

35、作为成员函数重载的解析:解析 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且 c1、c2都是该类的对象,则 c1. operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与 c1+c2 含义相同。所以通过题目给出的两个表达式可看出“/”是作为成员函数重载的,“+”是作为非成员函数重载的。18.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算 D.以上三种说法都不

36、对解析:解析 在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择,连接等运算前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。周此,选项 A 与 B 错误,选项 C 正确。19.为完成下面的程序,应在划线处填入的语句是#includeiostreamusing namespace std;class Baseprivate:int x;public:Base(int i)x=i;Base();class Derived:public Basepublic:_ /完

37、成类 Derive 构造函数的定义;int main()Derived obj;return 0;(分数:2.00)A.Derived(inti):Base(i) B.Derived()C.Void Derived (inti):Base(i)D.Denved(inti)Base(i);解析:解析 本题考核派生类中的构造函数。程序中,类 Derived 是基类 Base 的公有派生。在类Derived 的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。20.有以下程序:#include iostreamusing namespace std;class sampleprivate:

38、int n;public:sample() sample(int m)n=m;sample add(sample s1,sample s2)this-n-s1.n+s2.n;return (*this);void disp()cout “n=“nend1;int main (sample s1(10),s2(5),s3;s3.add(s1,s2);s3.disp();return 0;程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=15 解析:解析 本题考核 this 指针的应用。上述程序中,sample 类的 add 成员函数中使用了 this 指针,th

39、is 指针指向当前对象自身,该成员函数中的语句:this-n=s1. n+s2.n;,用于修改当前对象的数据成员 n 的值,语句:return(*this);用于返回当前对象自身,即对当前对象进行了修改。对于 main()函数调用 add 成员函数语句“s3.add(s1,s2);”。此时,this 指针指向的是对象 s3,执行该语句前,s3 的数据成员 n 未赋值,执行完该语句后,就修改了 s3 的私有成员 n 的值,使其为 15。21.若有以下程序:#includeiostreamusing namespace std;class Aprivate:int x;public:int z;v

40、oid setx(int i)x=i;int getx ()return x;:class B : public Aprivate:int m;public:int p;void setvalue(int a, int b, int c) setx((分数:2.00)A.;public:void setc(int x, inc y, int z)c=z;seta (x);setb (y);void showc()showa ();showb ();coutcend1;int main ()C c;c. setc(1,2,3);c.showc();return 0;程序执行后的输出结果是(分数:

41、2.00)A.1,2,3 B.1,1,1C.2,2,2D.3,3,3解析:解析 本题考核派生类的应用。本题中类 A 和类 B 都是基类。而类 C 从类 A 公有派生,从类 B 处私有派生所以类 C 中的函数成员可以访问类 A 和类 B 中的公有成员。在类 C 的函数成员 setc 中,调用基类 A 的函数成员 seta 对 A 的数据成员 a 赋值,还调用了基类 B 的函数成员 setb 对类 B 的数据成员 b 赋值,然后对类 C 自己的数据成员 c 赋值。在类 C 的函数成员 showc 中,调用基类 A 的函数成员 showa 显示数据成员 a 的值,还调用基类 B 的函数成员 show

42、b 显示数据成员 b 的值,然后输出类 C 自己的数据成员 c的值在主函数 main 中,先定义派生类的对象 c,然后调用 setc 对 c 中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。25.在下面的类定义中,错误的语句是class Samplepublic:Sample(int val); /Sample(): /private:int a=2.5; /Sample(); /;(分数:2.00)A.B.C. D.解析:解析 本题考核类的定义。 C+不能类的定义中给数据成员赋初值。26.在长度为 n 的有序线性表中进行二分查找,需要的比较次数为(分数:2.00)A.

43、log2n B.nlog2nC.n/2D.(n+1)/2解析:解析 在长度为 n 的有序线性表中进行二分查找,需要的比较次数为 log2n。选项 A 正确。27.( )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。(分数:2.00)A.模板 B.类C.对象D.函数解析:解析 本题考核模板的概念。模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。28.执行语句序列ofstream outfite(“data.dat“);if(.)cout“ok“;else cout“fail“;后,如果文件打开成功,显示“ok”,否则显示“fail”。

44、由此可知,上面 if 语句的“”处的表达式是(分数:2.00)A.outfile.fail()或 outfileB.outfile.good()或!outfileC.outfile.good()或 outfile D.outfile.fail()或!outfile解析:解析 本题考核 C+的文件流。文件流对象中的成员函数 good()用于判定刚进行的操作是否成功,成功时返回 true,否则返回 false。成员函数 fail()用于判定刚进行的操作是否失败,失败时返回true,否则返回 false。29.下面的描述中表达错误的是(分数:2.00)A.公有继承时基类中的 public 成员在派生

45、类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的 C.公有继承时基类中的 protected 成员在派生类中仍是 protected 的D.私有继承时基类中的 public 成员在派生类中是 private 的解析:解析 C+中,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。所以 B) 选项是错误的。派生类中的成员不能访问基类的中私有成员,但可以访问基类中的公有成员和保护成员。此时派生类对基类中各个成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访

46、问控制属性,基类中公有和保护成员在派生类中的访问控制属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员,派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍然为保护成员所以,A) 、C) 和 D) 选项都是正确的。30.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.MyClass(int n);C.MyClass();D.MyClass()

47、; 解析:解析 本题考核类的析构函数。在 C+中,析构函数名为符号“”加类名,析构函数没有参数和返回值。根据以上知识可知, MyClass 类的正确析构函数的说明为MyClass()。31.下面不属于软件工程 3 个要素的是(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具是指支持软件的开发、管理、文档生成;过程是支持软件开发的各个环节的控制、管理。环境不属于软件工程的 3 个要素之一。本题的正确答案为 D。32.有如下程序:#include iostreamusing namespace std;class sampleprivate:int x,y;public:sample(int i,int j)x=i;y=j;void disp ()cout“disp1“end1;void disp() constcout“disp2“end1;int main ()const sample a(1,2);a.disp();return 0;该程序运行后的输出结果是(分数:2.00)A.disp1B.disp2 C.disp1 disp2D.程序编译时出错解析:解析 本题考核常对象、常数据和常函数。C+中,在定义常对象时必须进行初始化,而且不能

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

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

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