2019年6月全国计算机二级C语言试题

发布于 2019-05-16 08:57  编辑:simi
0
计算机等级考试题库 扫码微信刷题


二级C语言试题.jpg


通往成功的道路上有一门功课叫做刷题:刷计算机等级考试题库-二级C语言试题


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

#include

usingnamespacestd;

classA

{

publicA(){cout<<A;}

};

classB

{

publicB(){cout<<B;}

};

classCvirtualpublicA

{

publicC(){cout<<C;}

};

classDpublicBpublicD

{

publicD(){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.11

B.12

C.23

D.24

 

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

 

5.有如下程序:

#include

usingnamespacestd;

classMyClass{

public

MyClass(intx)val(x){}

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

intval;

};

intmain(){

constMyClassobj1(10);

MyClassobj2(20);

obj1.Print();

obj2.Print();

return0;

}

程序的输出结果是(  )

A.va1=10constva1=20

B.constva1=10constva1=20

C.constva1=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;

};

claseYYprotectedXX{

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为类BC的公有继承,AC的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明AC的虚基类,同样也要声明AB的虚基类。

 

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

 

3.C。【解析】函数Demo()为构造函数,而Demo(constDemo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句"Demoad;"将调用函数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。【解析】派生类从基类保护继承classYYpro-tectedXX时,基类的公有成员在派生类中变为保护成员,基类的保护成员在派生类中仍然是保护成员;本题中YY本身有一个保护成员y2,再加上基类XXx2x3,故选C

 

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

 

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




考无忧小编tips

开始努力刷二级C语言试题吧!在备考这个过程中你必须放弃很多东西,但你要明白它们都不是你最终想要的,你要相信在你成功以后,总有一天它们会再回来,而且比现在更美好!



文章推荐:

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

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

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


温馨提示:

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

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

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


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