ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:82.50KB ,
资源ID:1324791      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324791.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C++笔试56及答案解析.doc)为本站会员(syndromehi216)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、二级 C+笔试 56 及答案解析(总分:84.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.一个类的友元函数或友元类可以通过成员操作符访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.所有成员2.下面的程序段中,有( )处错误和警告。 #includestdioh int main() int x; cinx coutx; (分数:2.00)A.1B.2C.3D.43.有以下程序: #include iostream using namespace std; int f1(int x, int y) return xy ? x:y;

2、 int f2(int x, int y) return xy? y:x; int main ( ) int a = 4,b = 3,c = 5,d,e,f; d = f1(a,b) ; d = f1(d,c) ; e = f2 (a,b) ; e = f2(e,c) ; f = a+b+c-d-e; coutd“, “e“, “fend1; return 0; 执行后的输出结果是 ( )。(分数:2.00)A.3,4,5B.5,3,4C.5,4,3D.3,5,44.若有以下程序 #include iostream using namespace std; class A public: A(

3、int i,int j) a=i; b=j; void move(int x, int y) a+=x; b+=y; void show() cout a “ , “ b end1; private: int a,b; ; class B : private A public: B(int i,int j) :A(i,j) void fun ( ) move (3, 5); void f1 ( ) A:show(); ; int main ( ) B d(3,4); d. fun ( ); d.f1(); return 0; 程序执行后的输出结果是 ( )。(分数:2.00)A.3,4B.6,

4、8C.6,9D.4,35.下面内容不属于使用软件危机的是( )。(分数:2.00)A.软件质量难以保证B.软件的成本不断提高C.软件需求增长缓慢D.软件不可维护或维护程度非常低6.下列关于链式存储的叙述中,正确的是( )。(分数:2.00)A.链式存储结构的空间不可以是不连续的B.数据节点的存储顺序与数据元素之间的逻辑关系必须一致C.链式存储方式只可用于线性结构D.链式存储也可用于非线性结构7.对下列程序的描述中,正确的是( )。 #includeiostream using namespace std; int Fun(int,int); int main() coutFun(5,50)en

5、d1; return 0; int Fun(int x,int y) return x*x+y*y; (分数:2.00)A.该函数定义正确,但函数调用方式错误B.该函数调用方式正确,但函数定义错误C.该函数的定义和调用方式都是正确的D.该函数的定义和调用方式都是错误的8.下列各项特点中,属于线性表的顺序存储结构的是( )。(分数:2.00)A.线性表中所有元素所占的存储空间是不连续的B.线性表的数据元素在存储空间中是随便存放的C.线性表中所有元素所占的存储空间是连续的D.前后件两个元素在存储空间是随便存放的9.关于类型转换的说法中,错误的是( )。(分数:2.00)A.如果 a 为血型变量,b

6、 为 char 型变量,则 a+b 的值为血型B.如果 a 为 float 型变量,b 为 int 型变量,则 a-b 的值为 float 型C.如果 a 为 double 型变量,b 为 float 型变量,则 a*b 的值为 double 型D.如果 a 为血型变量,b 为血型变量,则 a(doublb 的值为 int 型10.下面对静态数据成员的描述中,正确的是( )。(分数:2.00)A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以通过类的对象调用C.静态数据成员不能受 private(私有)控制符的作用D.静态数据成员可以直接通过类名调用11.下列各项中不属于算法基本特征

7、的是( )。(分数:2.00)A.可行性B.递归性C.确定性D.有穷性12.数据字典(DD) 是定义以下哪种系统描述工具中的数据的工具( )。(分数:2.00)A.数据流程图B.系统流程图C.程序流程图D.软件结构图13.对于输入输出,在设计和编程时都应该考虑的原则是( )。(分数:2.00)A.对部分输入数据检验数据的合法性B.不允许默认值C.输入一批数据时,最好使用输入结束标志D.输入数据时,不允许使用自由格式14.有如下程序: #include iostream using namespace std; int getSum(int num); int main () int i; fo

8、r (i=1; i4; i+) coutgetSum(i); return 0; int getSum(int hum) static int sum=O; sum+=num; return sum; 上述程序执行后的输出结果是( )。(分数:2.00)A.136B.248C.123D.13515.以下各项说法中,正确的是( )。(分数:2.00)A.当通过引用传递参数时,函数创建一个变量以存储参数的值B.当通过引用传递参数时,函数无法访问参数的值C.当通过引用传递参数时,调用程序创建一个临时变量以容纳参数的值D.当通过引用传递参数时,函数访问调用程序中参数的原始值16.有以下程序: #inc

9、lude iostream using namespace std; int main ( ) char s110,s210; char *p=s1,*q=s2; cins1s2; while (*p ! = /0 ) p+; while (*q!=/0) *p+=*q+; *p=/0; couts1end1; return 0; (分数:2.00)A.abcd0ghijB.abcd0ghij0C.abcdD.abcdghij17.以下程序执行结果是 ( )。 #include iostream.h class Base public virtual void fun() cout“B“; ;

10、 class Derived public: Derived() cout“D“; virtual void fun() Base:fun(); cout“C“; int main () Base *ptr; Derived obj; ptr= p-fun ( ); return 0; (分数:2.00)A.DBCB.DCBC.BDCD.CBD18.下列描述中,( )是抽象类的特性。(分数:2.00)A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说明其对象19.对待排序文件的初始状态不作任何要求的排序方法有( )。(分数:2.00)A.直接插入和快速排序B.直接插入和归

11、并排序C.归并和快速排序D.归并和直接选择排序20.一个关系数据库文件中的各条记录( )。(分数:2.00)A.前后顺序不能任意颠倒,一定要按照输入的顺序排列B.前后顺序可以任意颠倒,不影响库中数据的数据关系C.前后顺序可以任意颠倒,但排列顷序不同,统计处理的结果就可能不同D.前后顺序不能任意颠倒,一定要按照关键词段值的顺序排列21.有如下程序: #include iostream using namespace std; class sample private: int x, y; public: sample(int i,int j) x=i; y=j; void disp() cout

12、“displ“end1; void disp() const cout“disp2“end1; ; int main () const sample a(i,2); a.disp (); return 0; 该程序运行后的输出结果是( )。(分数:2.00)A.disp1B.disp2C.disp1 disp2D.程序编译时出错22.下列关于栈的叙述中,不正确的是( )。(分数:2.00)A.在栈中能插入数据B.在栈中能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表23.若有定义“int k,*q;”,则下列各选项中,赋值表达式正确的是( )。(分数:2.00)A.q=( ; cla

13、ss Base2 public: void fun() cout“Base2“end1; class Derived : public Basel,public Base2 ; void main() Derived Obj; Obj.fun(); (分数:2.00)A.BaselB.Base2C.BaselBase2D.程序产生二义性26.执行语句序列 ofstream outfile(“data.dat“); if(.) cout“ok“;else cout“fail“; 后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面 if 语句“.”处的表达是 ( )。(分数:

14、2.00)A.outfilfail() 或 outfileB.outfilgood()或!outfileC.outfilgood()或 outfileD.outfilfail()或!outfile27.若有以下程序: void g(int *q) (*q) +; (*q) +; void main() int line 5; int *p=line; for (i=0; i5; i+) *p=i; g( for (i=0; i5; i+) coutlinei; coutend1; 该程序运行后的输出结果为( )。(分数:2.00)A.12345B.01234C.11111D.5555528.下

15、列对派生类的描述中,错误的是( )。(分数:2.00)A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的默认继承方式是私有派生D.派生类只继承了基类的公有成员和保护成员29.有以下程序: #include iostream using namespace std; class A private: int x,y; public: void set (int i,int j) x=i; y=j; int get_y() return y; ; class box private: int length,width; A label; public: void set(

16、int 1,int w, int s,int p) length=1; width=w; label.set(s,p); int get_area() return length*width; ; int main() box small; small.set(2,4,1,35); coutsmall.get_area()end1; return 0; 运行后的输出结果是( )。(分数:2.00)A.8B.4C.35D.7030.下列叙述中,正确的是( )。(分数:2.00)A.while 语句构成的循环不能用其他语句构成的循环来代替B.do-while 语句构成的循环只能用 break 语句

17、退出C.用 while 语句构成的循环,只有在 while 后的表达式为非 0 时才执行循环D.do-while 语句构成的循环,只有在 while 后的表达式为 0 时才结束循环二、B填空题/B(总题数:12,分数:24.00)31.对于长度为 n 的线性表,若进行顺序查找,则时间复杂度为U 【1】 /U。(分数:2.00)填空项 1:_32.已知某序列为49,38,65,97,76,13,27,试采用该序列的第一个元素为枢轴进行快速排序,则经过一趟快速排序之后所得到的序列为:U 【2】 /U。(分数:2.00)填空项 1:_33.软件生命周期一般可分为以下阶段:问题定义、可行性研究、U 【

18、3】 /U、设计、编码、U【4】 /U、运行与维护。(分数:2.00)填空项 1:_34.在选择运算所得到的结果关系中,所含的元组数不合U 【5】 /U原关系中的元组数。(分数:2.00)填空项 1:_35.当输入 10,11,12 时,下面程序运行结果是U 【6】 /U。 #include iostream using namespace std; int main() int a,b,c,max; cinabc; max=a; if (maxB) max=b; if (maxC) max=c; coutmaxend1; return 0; (分数:2.00)填空项 1:_36.下面程序的功

19、能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变。请填空完成此程序。 #include iostream #include string using namespace std; int main ( ) char a=“changuage“,t,m; int i,j,k; k=strlen(A) ; for (i=0; i=k-2; i+=2) m=i; for (j=i+2; j=k;U 【7】 /U) if (am a j m=j; if(U 【8】 /U) t=ai; ai=am; a m =t; coutaend1; return 0; (分数:2.00)填空项

20、1:_37.阅读下面程序: #include iostream using namespace std; int fun( int a, int b) int c; c = a * b; return c; int main ( ) int a = 3, b = 5, c = 4, x = O; x = fun( fun( a, b ), c ); coutxend1; return 0; 其运行结果是U 【9】 /U。(分数:2.00)填空项 1:_38.在 C+语言中,每个类都有一个隐含的指针叫U 【10】 /U指针。该指针指向U 【11】 /U。(分数:2.00)填空项 1:_39.经常

21、和一个运算符连用,构成一个运算符函数名的 C+关键词是U 【12】 /U。(分数:2.00)填空项 1:_40.若有以下程序: #include iostream using namespace std; template class T T min(T x,T y) if(xy) return x; else return y; int main() int n1=2,n2=10; double d1=1.5;d2=5.6; coutmin(n1,n2)“,“; coutmin(d2,d2)end1; return 0; 程序运行后的输出结果是U 【13】 /U。(分数:2.00)填空项 1

22、:_41.以下程序运行后的输出结果是U 【14】 /U。 #include iostream #include string using namespace std; class Y; class X int x; char *strx; public: X(int a,char *str) x=a; strx=new charstrlen(str)+1; strcpy(strx,str); void show(Y ; class Y private: int y; char *stry; public: Y(int b,char *str) y=b; stry=new charstrlen(

23、str)+1; strcpy(stry, str); friend void X:show(Y ; void X:show(Y coutob.stryend1; int main() X a(10,“stringX“); Y b(20,“stringY“); a. show (b) ; return O; (分数:2.00)填空项 1:_42.有如下的程序: #include iostream #include fstream using namespace std; int main() ofstream outf(“D:/temp.txt“,ios_base:trunc) ; outf“W

24、orld Wide Web“; outf.close(); ifstream inf(“D:/temp.txt“); char s20; infs; inf.close(); couts; return 0; 执行后的输出结果是U 【15】 /U。(分数:2.00)填空项 1:_二级 C+笔试 56 答案解析(总分:84.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.一个类的友元函数或友元类可以通过成员操作符访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.所有成员 解析:解析在 C+中,如果想让类中的成员数据可以被其他函数访问,可

25、以通过友元函数声明来分享类中的资源。除了友元函数外,还有友元类。类的友元函数对类的属性和方法的访问能力等同于类的成员函数。2.下面的程序段中,有( )处错误和警告。 #includestdioh int main() int x; cinx coutx; (分数:2.00)A.1B.2C.3D.4 解析:解析 本题考核 C+程序的基本结构。 第 1 处错误:头文件stdioh应改为iostreamh。因为在 C+语言中,输入输出流的流类库是在iostreamh头文件中定义的。 第2 处错误:主函数缺少左大括号“”。 第 3 处错误:语句 cinx 后面缺少“;”。 第 4 处错误:由于已设定主

26、函数的返回类型是血型,因此,在程序结束后,必须给出返回值或者将主函数的返回类型更改为 void 型。3.有以下程序: #include iostream using namespace std; int f1(int x, int y) return xy ? x:y; int f2(int x, int y) return xy? y:x; int main ( ) int a = 4,b = 3,c = 5,d,e,f; d = f1(a,b) ; d = f1(d,c) ; e = f2 (a,b) ; e = f2(e,c) ; f = a+b+c-d-e; coutd“, “e“,

27、“fend1; return 0; 执行后的输出结果是 ( )。(分数:2.00)A.3,4,5B.5,3,4 C.5,4,3D.3,5,4解析:解析 本题考核函数的调用和条件运算符(?)。解此题前,先来复习一下条件运算符的运算规则。 对于表达式:表达式 1?表达式 2:表达式 3,它的运算方式为:先计算表达式 1 的值,如果其值为真(true),则表达式 2 的值就是整个表达式的最终结果,否则表达式 3 的值就是整个表达式的值。 在了解条件运算符的运算规则后,来看函数 f1()和 f2()。根据条件运算符的运算规则,可得到函数 f1()的功能是返回两数中的较大值,函数 f2()的功能足返回两

28、数中的较小值。再分析主函数,由于a=4,b=3,d 经过第 1 次赋值后得到值为 4,即 d=4。d 的 第 2 次赋值表达式为“d=f1(d,C) ”,由于此时 d=4、c=5,故经过两次赋值后得到 d=5。同样 e 经过两次赋值后可得 e=3。再把a=4、b=3、c=5、d=5、e=3 代入表达式 f=a+b+c-d-e,最后得到 f=4。4.若有以下程序 #include iostream using namespace std; class A public: A(int i,int j) a=i; b=j; void move(int x, int y) a+=x; b+=y; vo

29、id show() cout a “ , “ b end1; private: int a,b; ; class B : private A public: B(int i,int j) :A(i,j) void fun ( ) move (3, 5); void f1 ( ) A:show(); ; int main ( ) B d(3,4); d. fun ( ); d.f1(); return 0; 程序执行后的输出结果是 ( )。(分数:2.00)A.3,4B.6,8C.6,9 D.4,3解析:解析 本题考核派生类的应用。本题中,类 B 是类 A 的私有派生类,在类 B 的成员函数 f

30、un()中调用基类 A 的成员函数 move(),并传入实参 3 和 5。在类 B 的成员函数 f1()中调用基类 A 的成员函数show(),来显示基类数据成员 a 和 b 的值。主函数中,定义了派生类 B 的对象 d,并赋初值 3 和 4。然后调用对象 d 的成员函数 fun()和 f1(),通过上述对函数 fun()和 f1()的功能的描述可知,程序最后输出 6和 9。5.下面内容不属于使用软件危机的是( )。(分数:2.00)A.软件质量难以保证B.软件的成本不断提高C.软件需求增长缓慢 D.软件不可维护或维护程度非常低解析:解析 所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到

31、的一系列严重问题。选项A、B、D 都属于软件危机的一种表现,软件危机还包括软件需求的增长得不到满足、软件开发成本和进度无法控制和软件开发生产率的提高赶不上硬件的发展和应用需求的增长。6.下列关于链式存储的叙述中,正确的是( )。(分数:2.00)A.链式存储结构的空间不可以是不连续的B.数据节点的存储顺序与数据元素之间的逻辑关系必须一致C.链式存储方式只可用于线性结构D.链式存储也可用于非线性结构 解析:解析 链式存储结构不同于顺序存储结构,它的存储空间可以是不连续的,并且数据节点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系是由指针域来确定的。链式存储方式可用于线性结构

32、链式存储也可用于非线性结构,在表示复杂的非线性结构时,指针域的个数要多一些。7.对下列程序的描述中,正确的是( )。 #includeiostream using namespace std; int Fun(int,int); int main() coutFun(5,50)end1; return 0; int Fun(int x,int y) return x*x+y*y; (分数:2.00)A.该函数定义正确,但函数调用方式错误B.该函数调用方式正确,但函数定义错误C.该函数的定义和调用方式都是正确的 D.该函数的定义和调用方式都是错误的解析:解析函数定义时要给出函数类型、函数名、函数

33、参数表和函数体。本程序的 Fun()都做到了,所以此函数的定义也是正确的。该函数的定义和调用方式都是正确的。8.下列各项特点中,属于线性表的顺序存储结构的是( )。(分数:2.00)A.线性表中所有元素所占的存储空间是不连续的B.线性表的数据元素在存储空间中是随便存放的C.线性表中所有元素所占的存储空间是连续的 D.前后件两个元素在存储空间是随便存放的解析:解析 线性表的顺序存储结构要求:线性表中所有元素所占的存储空间是连续的,并且线性表的数据元素在存储空间中是按逻辑顺序依次存放的。因此,选项 A、B 是错误的。在线性表的顺序存储结构中,前后件两个元素在存储空间中是紧邻的,因此,选项 D 也是

34、错误的。9.关于类型转换的说法中,错误的是( )。(分数:2.00)A.如果 a 为血型变量,b 为 char 型变量,则 a+b 的值为血型B.如果 a 为 float 型变量,b 为 int 型变量,则 a-b 的值为 float 型C.如果 a 为 double 型变量,b 为 float 型变量,则 a*b 的值为 double 型D.如果 a 为血型变量,b 为血型变量,则 a(doublb 的值为 int 型 解析:解析 C+中数据类型转换有两类,即隐式类型转换和显式类型转换。 隐式类型转换是由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相

35、同类型后再进行运算。赋值时,会把所赋值的类型转换为与被赋值变量类型一样。隐式类型转换按从低到高的顺序进行。 显式类型转换是由程序员显式指出的类型转换,使用显式类型转换的好处是,编译器不必自动进行两次转换,而由程序员负责类型转换的正确性。 由此可知选项 D 中 a(double)b 的值应为 double型。10.下面对静态数据成员的描述中,正确的是( )。(分数:2.00)A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以通过类的对象调用C.静态数据成员不能受 private(私有)控制符的作用D.静态数据成员可以直接通过类名调用 解析:解析对于选项 A,C+规定对静态数据成员的初始

36、化应该在类体外进行初始化。所以选项 A 是错误的。 对于 B 选项,C+规定静态数据成员可由任意访问权限许可的函数或对象访问,所以选项 B 是错误的。 对于选项 C,在 C+中,静态数据成员也可以定义为私有的静态数据成员,所以选项 C 的描述是错误的。 对于选项 D,在 C+中,静态数据成员是类的所有对象共享的成员,即可以通过类名访问,也可以通过对象访问。但通过类名访问更方便、更高效。所以选项 D 的描述是正确的。11.下列各项中不属于算法基本特征的是( )。(分数:2.00)A.可行性B.递归性 C.确定性D.有穷性解析:解析 一个算法所必须具有的基本特征是:可行性、确定性、有穷性和拥有足够

37、的情报。B 选项是指算法设计基本方法。12.数据字典(DD) 是定义以下哪种系统描述工具中的数据的工具( )。(分数:2.00)A.数据流程图 B.系统流程图C.程序流程图D.软件结构图解析:解析 本题考查数据字典的作用,数据字典是对数据流程图中出现的被命名的图形元素的确切解释。13.对于输入输出,在设计和编程时都应该考虑的原则是( )。(分数:2.00)A.对部分输入数据检验数据的合法性B.不允许默认值C.输入一批数据时,最好使用输入结束标志 D.输入数据时,不允许使用自由格式解析:解析 输入输出信息是用户直接关心的,输入输出方式和格式应尽可能方便用户的使用,因为系统能否被用户接受,往往取决

38、于输入输出的风格。好的输入输出风格对所有输入数据检验数据的合法性,允许默认值,并且在输入数据时,允许使用自由格式。14.有如下程序: #include iostream using namespace std; int getSum(int num); int main () int i; for (i=1; i4; i+) coutgetSum(i); return 0; int getSum(int hum) static int sum=O; sum+=num; return sum; 上述程序执行后的输出结果是( )。(分数:2.00)A.136 B.248C.123D.135解析:解

39、析 在函数 getSum()中,局部变量 sum 被声明为 static,并且初始化为 0。该程序使用getSum()函数计算并报告当前计算所得结果。由于 sum 是 static 变量,因此它在函数调用过程中始终保持其值,即使函数调用结束,其空间也不会被释放,下次再调用时,上次运行结果仍然保留。15.以下各项说法中,正确的是( )。(分数:2.00)A.当通过引用传递参数时,函数创建一个变量以存储参数的值B.当通过引用传递参数时,函数无法访问参数的值C.当通过引用传递参数时,调用程序创建一个临时变量以容纳参数的值D.当通过引用传递参数时,函数访问调用程序中参数的原始值 解析:解析本题考核函数

40、参数传递中的引用传递。先来理解引用的概念: “引用”实际上是给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操作。 C+中的变量名对应着内存的存储位置,可以使用一个特定的内存地址访问到它,引用则引入变量的另一个名字,它和这个变量具有同一内存地址。 当通过引用传递参数时,只是把请求调用的程序中实参的引用传递给函数(实际上是实参的内存地址被传递了)。16.有以下程序: #include iostream using namespace std; int main ( ) char s110,s210; char *p=s1,*q=s2; cins1s2; while (*p ! = /

41、0 ) p+; while (*q!=/0) *p+=*q+; *p=/0; couts1end1; return 0; (分数:2.00)A.abcd0ghijB.abcd0ghij0C.abcdD.abcdghij 解析:解析 程序定义两个字符串指针 p 和 q,并使指针分别指向字符串数组 s1 和 s2。数组 s1 和 s2 通过输入的字符串赋初值。程序中第 1 个 while 语句,用来计算 s1 的长度,并把指针 p 移到数组 s1 的最后一个元素。第 2 个 while 语句,是将数组 s2 中的字符串合并到数组 s1 的后面。语句“*p/0;”,是合并后的字符串 s1 的结束标志

42、。所以最后 s1 中的字符串为 abcdghij。17.以下程序执行结果是 ( )。 #include iostream.h class Base public virtual void fun() cout“B“; ; class Derived public: Derived() cout“D“; virtual void fun() Base:fun(); cout“C“; int main () Base *ptr; Derived obj; ptr= p-fun ( ); return 0; (分数:2.00)A.DBC B.DCBC.BDCD.CBD解析:解析 本题考核虚函数的应用

43、。主函数中创建派生类 Derived 的对象。obj 时,调用其构造函数首先输出字符D。然后调用 fun()函数,由于派生 Derived 已对基类的虚函数 fun()进行了重定义,所以语句“p-fun();”调用的是派生类中的函数 fun(),即输出 BC。所以答案为 A 选项。18.下列描述中,( )是抽象类的特性。(分数:2.00)A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说明其对象 解析:解析本题考核抽象类的特性。 抽象类是指至少有一个纯虚函数的类。它往往表示一些抽象的概念,它的成员函数没有什么意义。 抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,

44、它处于继承层次结构的上层。抽象类的主要作用是将有关的类组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。 对于抽象类的使用有几点规定:抽象类只能用作其他类的基类,不能建立抽象类对象;抽象类不能用作参数类型、函数返回类型或显式转换的类型;可以说明指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。 由此可知,抽象类区别于其他类的最根本的特征是不能定义对象。因此也一般将抽象类的构造函数说明为保护的访问控制。19.对待排序文件的初始状态不作任何要求的排序方法有( )。(分数:2.00)A.直接插入和快速排序 B.直接插入和归并排序C.归并和快速排序

45、D.归并和直接选择排序解析:解析 只有归并排序要求待排序文件“部分排序” (把待排序的文件分成若干个子文件,每个子文件内的记录是己排序的)。20.一个关系数据库文件中的各条记录( )。(分数:2.00)A.前后顺序不能任意颠倒,一定要按照输入的顺序排列B.前后顺序可以任意颠倒,不影响库中数据的数据关系 C.前后顺序可以任意颠倒,但排列顷序不同,统计处理的结果就可能不同D.前后顺序不能任意颠倒,一定要按照关键词段值的顺序排列解析:解析 关系数据库的逻辑性强而物理性少,因此关系数据库中的各条记录前后顺序可以任意颠倒,不影响库中数据的数据关系。21.有如下程序: #include iostream

46、using namespace std; class sample private: int x, y; public: sample(int i,int j) x=i; y=j; void disp() cout“displ“end1; void disp() const cout“disp2“end1; ; int main () const sample a(i,2); a.disp (); return 0; 该程序运行后的输出结果是( )。(分数:2.00)A.disp1B.disp2 C.disp1 disp2D.程序编译时出错解析:解析 C+中,在定义常对象时必须进行初始化,而且不能被更新。如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。题中,对象 a 被定义成类 sample 的常对象,所以通过对象 a 只能调用其常成员函数 disp()。所以程序最后输出 disp2。22.下列关于栈的叙述中,不

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