当前位置

首页 > 互联网 > 计算机 > 计算机二级 > 2017年9月计算机二级C++备考试题及答案

2017年9月计算机二级C++备考试题及答案

推荐人: 来源: 文萃屋 阅读: 7.74K 次

同志们在备考计算机二级的文章" target="_blank" >计算机二级考试期间,可以适当放松,同时也要静下心来做好接下来的复习。以下是本站小编搜索整理的一份计算机二级C++备考试题及答案,供参考练习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

2017年9月计算机二级C++备考试题及答案

1[填空题]使用class定义的表中,成员的默认访问权限是 (1) 的;由struct定义的类中,成员的默认的访问权限是 (2) 的。

参考答案:(1)私有、(2)公有

2[单选题]数据管理技术发展的三个阶段中,(  )没有专门的软件对数据进行管理。 Ⅰ.人工管理阶段 Ⅱ.文件系统阶段 Ⅲ.数据库阶段

A.仅ⅠB.仅ⅢC.Ⅰ和ⅡD.Ⅱ和Ⅲ

参考答案:A

参考解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。

3[单选题]下列关于类和对象的叙述中,错误的是(  )

A.一个类只能有一个对象

B.对象是类的具体实例

C.类是对某一类对象的抽象

D.类和对象的关系是一种数据类型与变量的关系

参考答案:A

4[单选题] 下列说法正确的是(  )。

A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方

B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义

参考答案:B

参考解析:本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加in-line关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。

5[单选题]

参考答案:B

6[单选题] 将x+y*z中的“+”用成员函数重载,“*”是友元函数重载应写为(  )。

ator+(operator*(y,z))

ator+(operator*(y,z))

ator+(X*(y,z))

D.x+(operator*(y,z))

参考答案:B

参考解析:在定义了重载运算符后的函数后,函数operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用friend对该函数进行声明,此函数就称为本类的友元函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“*”被改写为“operator*”。“+”为成员函数重载,ator+。所以“x+y*z”被改写为“ator+(operator*(y,z))”。

7[单选题]对于类定义:

classA{

public:

virtualvoidfuncl(){}

voidfunc2(){}

};

classB:publicA{

public:

voidfuncl(){cout<<"classBfunc1"<

virtualvoidfunc2(){cout<<"classBfunc2"

<

};

下面正确的叙述是(  )。

A.A::func2(  )和B::func1(  )都是虚函数

B.A::rune2(  )和B::func1(  )都不是虚函数

C.B::func1(  )是虚函数,而A::fune2(  )不是虚函数

D.B::func1(  )不是虚函数,而A::func2(  )是虚函数

参考答案:C

参考解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl()是虚函数;而类A中的func2()没有被关键字virtual修饰;所以不是虚函数。

8[单选题] 软件详细设计产生的图如下:

该图是( )。

A.N—S图图C.程序流程图D.E—R图

参考答案:C

参考解析:N—S图提出了用方框图来代替传统的程序流程图,所以A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B不对。E—R图是数据库中的用于表示E—R模型的图示工具,所以D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。

9[单选题] 设int a=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为( )。

A.3,3B.3,4C.4,3D.4,4

参考答案:A

参考解析:单目的++运算优先级高于双目的+运算,不过++的结合性是自右向左的,而+是自左向右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。

2[单选题] 若有说明:inta[3][4];则对a数组元素的非法引用是(  )。

A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]

参考答案:D

参考解析:数组的下标从0开始,至n-1为止,因此选项D是正确答案。

3[单选题]下列关于派生类叙述中,错误的是

A.派生类至少要有一个基类

B.派生类中包括了从基类继承的成员

C.一个派生类可以作为另一个派生类的基类

D.基类成员被派生类继承以后访问权限保持不变

参考答案:D

5[单选题] 层次型、网状型和关系型数据库划分原则是( )。

A.己录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

参考答案:D

参考解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。

6[单选题]在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的'函数是

A.友元函数 B.虚函数 C.构造函数 D.析构函数

参考答案:C

7[单选题] 下列关于运算符重载的描述中,错误的是(  )。

A.::运算符不能重载

B.类型转换运算符只能作为成员函数重载

C.将运算符作为非成员函数重载时必须定义为友元

D.重载口运算符应完成“下标访问”操作

参考答案:C

参考解析:除了·、*、→*、::、?:这五个运算符外,其他运算符都可以重载。=、[]、()、→以及所有的类型转换运算符只能作为成员函数重载。口作为成员函数重载时,应完成“下标访问”操作,使得向指定下标处的元素赋值或取值成为可能。

8[单选题] 由于常对象不能被更新,因此(  )。

A.通过常对象只能调用它的常成员函数

B.通过常对象只能调用静态成员函数

C.常对象的成员都是常成员

D.通过常对象可以调用任何不改变对象值的成员函数

参考答案:A

参考解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。

10[简答题]使用VC++6.0打开考生文件夹下的源程序文件,该程序运行时有错,请改正其中的错误,使程序正确运行,其输出的结果为

30

130

注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:

#include

inta=10;

classTC

{

public:

TC()

{

a=b=0:

}

voiddisplay()

{

//******error******

cout<

}

voidfunc(inta)

{

//******error******

a+=a:

}

voidfunc2()

{

//******error******

a+=a:

}

private:

inta,b;

};

voidmain()

{

TCobj;

(3);

lay();

2();

lay();

}

参考解析:

(1)应改为“cout<

(2)应改为“this->a+=a;”。

(3)应改为“a+=::a;”。

【解析】成员函数display打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,第1处的语句应改成“cout