计算机二级C++试题(3)

发布于 2019-01-18 11:41  编辑:simi
0
计算机等级考试题库 扫码微信刷题


有些二级C++试题你必须要去做,做了才知道自己行不行,光在那里想是没用的。


1.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD(  )。

#include

usingnamespacestd

classA

{

public:A(){cout<<’A’;}

}

classB

{

public:B(){cout<<’B’;}

}

classC:virtualpublicA

{

public:C(){cout<<’C’;}

}

classD:publicB,publicD

{

public:D(){cout<<’D’;}

}

voidmain(){D04;}

A.publicA

B.privateA

C.protectedA

D.virtualpublicA

 

2.有如下程序:

#include

usingnamespacestd

classAA{

intn

public

AA(intk):n(k){}

intget(){returnn;}

intget()const{returnn+1;}

}

intmain()

{

AAa(5)

constAAb(6)

cout<  return0;

}

执行后的输出结果是()。

A.55

B.57

C.75

D.77

 

3.有如下程序:

#include

usingnamespacestd

classDemo

{

public

Demo(){cout<<"defaultconstructor\n";}

Demo(constDemo&x){cont<<"copyconstruc-

tor\n";}

}

DemouserCode(Demob){Democ(b);returnC;}

intmain()

{

Demoa;d;

cout<<"callinguserCode()\n"

d=userCode(a)

return0

}

执行上面程序的过程中,构造函数Demo(  )和Demo(constDem0&x)被调用的次数分别是(  )。

A.1和1

B.1和2

C.2和3

D.2和4

 

4.有如下程序:

#include

usingnamespacestd

classDA{

intk

public

DA(intx=1):k(x){}

~DA(){cout<  };

intmain(){

DAd[]={DA(3),DA(3),DA(3));

DA+p=newDA[2]

delete[]p

return()

}

这个程序的输出结果是(  )。

A.111

B.333

C.11333

D.11133

 

35.有如下程序:

#include

usingnamespacestd

classMyClass{

public

MyClass(intx):val(x){}

voidPrint()const{cout<<"const:val="<<  voidPrint(){cout<<"val="<  private:

intval

}

intmain(){

constMyClassobj1(10)

MyClassobj2(20)

obj1.Print()

obj2.Print()

return0

}

 

5.程序的输出结果是(  )。

A.va1=10const:va1=20

B.const:va1=10const:va1=20

C.const:va1=10val=20

D.val=10va1=20

 

6.关于函数中的<返回类型>。下列表述中错误的是(  )。

A.<返回类型>中有可能包含关键字int

B.<返回类型>中有可能包含自定义标识符

C.<返回类型>中衣可能包含字符*

D.<返回类型>中可能包含[]

 

7.Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是(  )。

Samplea[2],*p=newSample;

A.0

B.1

C.2

D.3

 

8.有如下两个类定义:

classXX{

private

doublex1

protected

doublex2

public

doublex3

}

claseYY:protectedXX{

private

doubley1

protected

doubley2

public

doubley3

}

在类YY中保护成员变量的个数是(  )。

A.1

B.2

C.3

D.4

 

9.下列关于运算符重载的描述中,错误的是(  )。

A.可以通过运算符重载在C++中创建新的运算符

B.赋值运算符只能重载为成员函数

C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象

D.重载类型转换运算符时不需要声明返回类型

 

10.下列关于类模板的描述中,错误的是(  )。

A.类模板的成员函数都是模板函数

B.可以为类模板参数设置默认值

C.类模板描述了一组类

D.类模板中只允许有一个类型参数

 

1.D。【解析】由主函数main入手,定义了类D对象obi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。

 

2.B。【解析】所谓函数重载,是指同一个函数名可以对应着多个函数的实现,类AA中定义了两个9et()函数,一个为普通成员函数,另一个为常成员函数。一般对象a既可以调用普通成员函数get,也可以调用常成员函数get,但是由于常成员函数不能更新对象的数据成员,所以题中通过对象a调用的函数为普通成员函数get(),返回值为5。常对象b只能调用常成员函数,所以题中通过对象b调用的函数为常成员函数get(),返回值为7。

 

3.C。【解析】函数Demo()为构造函数,而Demo(constDemo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句"Demoa,d;"将调用函数Demo()2次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句d=userCode(a);调用拷贝构造函数3次。

 

4.C。【解析】本题考查的是析构函数和对象的生存期。在主函数中,首先定义了一个DA类对象数组d,从初始化列表中可以看出,它包含三个对象;然后通过new运算符动态创建了一个DA类的对象数组,并将首地址赋给DA类指针P;接着通过delete[]运算符销毁指针P所指向的数组,故此时会输出11。最后函数结束,销毁前面定义的对象数组d,会输出333。故最后的输出结果是11333。

 

5.D。【解析】在建立类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承的声明顺序;执行成员对象的构造函数,调用顺序按照各个成员在类中的声明顺序;执行自身的构造函数。根据以上总结以及题意可知答案选择D选项。

 

6.B。【解析】<返回类型>又称函数类型,表示一个

函数所计算(或运行)的结果值类型,这里的类型可以是预定义类型(如int)、复合类型(如double*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等操作,则该函数返回类型为void类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。

 

7.D。【解析】构造函数在对象被创建时由系统自动调用,本题共创建3个对象。

 

8.C。【解析】派生类从基类保护继承classYY:pro-tectedXX时,基类的公有成员在派生类中变为保护成员,基类的保护成员在派生类中仍然是保护成员;本题中YY本身有一个保护成员y2,再加上基类XX的x2和x3,故选C。

 

9.A。【解析】运算符的重载是针对C++中原有运算符进行的,不能通过重载创造新的运算符。

 

10.D。【解析】类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选D。



考无忧小编tips

只要一直走下去,一直坚持复习以上的二级C++试题,蓦然回首,你会发现,坚持的每一处,都是曾经想要放弃时以为到达不了的地方!



文章推荐:

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

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

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


温馨提示:

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

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

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


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