计算机二级考试的C++语言程序设计试题,居然...

发布于 2018-09-14 19:07  编辑:大黎
0
计算机等级考试题库 扫码微信刷题

我从不怀疑自己的能力,只怀疑自己有没有努力。在相同的道理上,学习能力强的你怎么可能会掌握不了计算机二级考试C++语言程序设计试题呢,小编不相信!


1.下列关于成员函数特征的描述中,错误的是(  )。

A.成员函数一定是内联函数

B.成员函数可以重载

C.成员函数可以设置参数的默认值

D.成员函数可以是静态的

答案:A。【解析】成员函数不一定是内联函数。

 

2.考虑以下的函数原型:

voldA(inta,intb=5,charZ=’*’);

下面的函数调用中,不正确的是(  )。

A.A(7)

B.A(3,4)

C.A(16,’#’)

D.A(0,2,’*’)

答案:C。【解析】A、B项中,实参不全,参数默认为函数原型中的初始值,但在C项中,第二个实参(char型)与函数原型中的第二个形参类型不一致,故C项错误。

 

3.关于静态数据成员的描述中正确的是(  )。

A.类的静态数据成员不是类的所有对象共享的数据

B.类的静态数据成员不能被类的成员函数调用

C.类的静态数据成员不能被类的构造函数调用

D.类的静态数据成员必须进行初始化

答案:D。【解析】C++类中的静态成员变量是该类中所有对象所共有的,它能够被类中的任何函数调用,所以选项A,B,C是错误的。而类的静态数据成员是必须要进行初始化才能使用。

 

4.设有以下类和对象的定义:

ClaSSA

{public:

intm;

};

Ak1,k2,*p1,*p2;

则下面针对成员变量m的引用,错误的是(  )。

A.k1.m=1

B.k2→m=2

C.p1→m=3

D.(*p2).m=4

答案:B。【解析】A*p1,A*p2为指向A类对象的指针,故“p1→m=3,(*p2).m=4”是正确的。但k2不是指针,k2→m的表示是错误的。

 

5.有以下程序:

classDate

{

public:

Date(inty,intm,intd);

{

year=Y:

month=m;

day=d;

}

Date(inty=2000)

{

year=y;

month=10;

day=1;

}

Date(Date&d)

{

year=d.year;

month=d.month;

day=d.day;

}

voidprint(  )

{

cout<}

private:

intyear,month,day;

};

Datefun(Dated)

{

Datetemp;

temp=d;

returntemp;

}

intmain(  )

{

Datedatel(2000,1,1),date2(0,0,0);

Datedate3(datel);

date2=fun(date3);

return0;

}

程序执行时,Date类的拷贝构造函数被调用的次数是(  )。

A.2

B.3

C.4

D.5

答案:B。【解析】本题考核拷贝构造函数。上述程序中,拷贝构造函数一共被调用了3次:第1次是在执行语句Datedate3(date1)时,用已经建立的对象date1对正在建立的对象date3进行初始化;第2次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第3次是在执行fun函数中的返回语句returntemp;时,系统初始化一个匿名对象时使用了拷贝构造函数。

 

6.下列关于纯虚函数与抽象类的描述巾,错误的是(  )。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现

B.抽象类是指具有纯虚函数的类

C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类

D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

答案:C。【解析】纯虚函数是在声明虚函数时被“初始化”为0的虚函数。不定义对象而只作为一种基本类型作为继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。

 

7.以下程序的输出结果是(  )。

#include

longfun(intn)

{longs;

if(n=-1‖n==2)s=2;

elses=n-fun(n-l):

returns;

}

voidmain(  ){cout

B.2

C.3

D.4

答案:A。【解析】题中fun函数进行了递归调用,第1次调用时:fun(3)n=3,s=3-fun(2),第二次调用时:fun(2)n=2,s=2,返回第一次调用后,s=3-2=1。

 

8.对于模板定义关键字class和typename说法不正确的是(  )。

A.程序中的class并不能都替换为typename

B.class和typename都可互相替换

C.程序中的typename都能替换为class

D.程序中的部分class可以替换为typename

答案:B。【解析】在C++程序中的typename是都可以替换为class的,但class不能都替换为typename。

 

9.有如下程序:

#include(iostream>

usingnamespacestd;

classCon

{

charID;

public:

Con(  ):ID(’A){cout<<1;}

Con(charID):ID(ID){cout((2;)

Con(Con8Lc):ID(c.getlD(  )){cout<<3;}

chargetID(  )const{returnID;}

};

voidshow(Conc){cout

{

Conc1;

show(c1);

Conc2(’B’);

show(c2);

return0;

执行上面程序的输出结果是(  )。

A.13A23A

B.23A13B

C.13A23B

D.13823A

答案:C。【解析】Concl定义cl对象,调用Con的无参数构造函数,输出1,ID值变为A,执行show(c1)时会调用拷贝构造函数,将cl对象的值复制给show函数的形参,此时输出3,然后在show()中输出cl的lD值A,Conc2(’B’)定义c2对象,调用Con(charID)构造函数,输出2,c2的ID值为B,show(c2)执行时先调用拷贝构造函数输出3,然后输出B。因此程序输出结果为“13A23B”。

 

10.有如下程序

#include(iostream.h>

voidmain(  )

{charch[2][5]={"6937","8254"),*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j])’\0’;j+=2)

s=10*s+p[i][j]一’0’;

cout<该程序的输出结果是(  )。

A.69825

B.63825

C.6385

D.693825

答案:C。【解析】该题主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环“for(i=0;i(2;i++)p[i]=ch[i]”的作用是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向了二维数组ch的第二行字符串,这样,就使指针数组P和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“6937”,第二行ch[1]中的内容为字符串“8254”。③程序中第二个循环中的循环体“s=s*10+p[i][j]-’0’”的功能是这样的,每执行一次,将s中的值乘以10(即将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i][3]>’\0’是指p[i][j]中的字符只要不是字符串结束标志’\0’就继续循环,语句j+=2;是使下标j每次增加2,即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从p[1]所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果s中的值应该是6385。


愚蠢的人总是为昨天悔恨,为明天祈祷,可惜的是少了今天的努力。无论你有没有过这样的想法,都希望在C++语言程序设计试题加把劲!


文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2018年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)

 

 

温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的最新资讯吗?点击进入>>>计算机等级考试题库资讯


本文网址:http://www.k51.com.cn/info/jsjdjks/1809/1447717.html
选择分享到: