国家二级C机试(选择题)模拟试卷29_第1页
国家二级C机试(选择题)模拟试卷29_第2页
国家二级C机试(选择题)模拟试卷29_第3页
国家二级C机试(选择题)模拟试卷29_第4页
国家二级C机试(选择题)模拟试卷29_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C++机试(选择题)模拟试卷

第1套

一、选择题(本题共31题,每题1.0分,共31分。)

1、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。

A、编码设计

B、测试阶段

C、运行阶段

D、物理设计

标准答案:D

知识点解析:数据库设计目前一般采用牛.命周期法,即将整个数据库应用系统的开

分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶

段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段.在数据库

设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主

线。

2、下列符号中能够作为C++标识符的是()。

A、const

B、2a

C^_shape

D、-count

标准答案:C

知识点解析:此题考查的是C++标识符。标识符是由数字、字母以及下划线构

成,其第一个字符必须是字母或下划线,中间不能有空格:标识符的长度是任意

的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同

的:定义标识符时不能采用系统的保留字。

3、设循环队列的存储空间为Q(l:35),初始状态为front=rcar=35。现经过一系列

入队与退队运算后,front=15;rear=15,则循环队列中的元素个数为()。

A、15

B、16

C、20

D、0或35

标准答案:D

知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数

有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数

为0:第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素

个数为35。

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

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

B、成员函数可以重载

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

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

标准答案:A

知识点解析:因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函

数不一定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可

以是静态的。

5、下列数据结构中,能用二分法进行查找的是()。

A、顺序存储的有序线性表

B、线性链表

C、二叉链表

D、有序线性链表

标准答案:A

知识点解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素

按值非递减排序(即从小到大,但允许相邻元素值相等)的表。

6、下面不属于软件工程的3个要素是()。

A、工具

B、过程

C、方法

D、环境

标准答案:D

知识点解析:软件工程的3个要素是工具、过程和方法。

7、下列选项中不属于软件生命周期开发阶段任务的是()。

A、软件测试

B、概要设计

C、软件维护

D、详细设计

标准答案:C

知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退

役的过程。开发阶段包拈概要设计、详细设计、实现和测试4个阶段。软件维护属

于维护阶段。

8、下列叙述中正确的是

A、程序执行的效率与数据的存储结构密切相关

B、程序执行的效率只取决于程序的控制结构

C、程序执行的效率只取决于所处理的数据量

D、以上都不正确

标准答案:A

知识点解析:影响程序决行效率的冈素有很多,如数据的存储结构、程序处理的数

据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效

率就存在差别。其中,链式存储结构的效率要高一些。

9、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。

A、提高耦合性降低内聚性有利于提高模块的独立性

B、降低耦合性提高内聚性有利于提高模块的独立性

C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D、内聚性是指模块间互相连接的紧密程度

标准答案:B

知识点解析•:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部

各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于

模块的独立性。

10、两个或两个以上模块之间关联的紧密程度称为().

A、耦合度

B、内聚度

C、复杂度

D、数据传输特性

标准答案:A

知识点解析:模块的独立性是指每个模块只完成系统要求的独立的子功能,并且与

其他模块的联系较少且接口简单。衡量软件的模块独立性使用:内聚性和耦合性两

个定性度量标准。内聚性是对…个模块内部各个元素彼此结合的紧密程度的度量;

耦合件是对模块间互相连接的紧密程度的度量「一般较优秀的软件设计,应尽量做

到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高

模块的独立性。

11、在软件开发中,需求分析阶段可以使用的工具是

A、N-S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据

字典(DD)、判断树和判断表。

12、下列关于类和对象的叙述中,错误的是()。

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

B、对象是类的具体实例

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

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

标准答案:A

知识点解析:此题考查的是类和对象的概念。类是用户定义的一种数据类型,可以

使用这个类型来说明一个或多个变量,即对象。

13、设有如下关系表:则下列操作正确的

是()。

A、T=R/S

B、T=RxS

C、T=RAS

D、T=RUS

标准答案:C

知识点解析:T就是关系R中有的,同时S中也有的有序组(4、5、6),即交运算

S)。

14、派生类的构造函数的成员初始化列中,不能包含()。

A、基类的构造函数

B、派生类中子对象的初始化

C、基类的子对象初始化

D、派生类中一般数据成员的初始化

标准答案:C

知识点解析:派生类的陶造函数会调用基类的构造函数。对于基类子对象的初始化

会在基类的构造函数中进行。派生类会为基类提供参数,当基类的构造函数收到参

数时会将参数传递给相应的基类子对象。

15、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是

A、外模式

B、内模式

C、概念模式

D、逻辑模式

标准答案:B

知识点解析:数据库有三层模式结构,逻辑模式是数据的全局逻辑结构的描述,外

模式也称为子模式,是局部数据的逻辑结构描述,而内模式也称为存储模式,是数

据库物理存储结构和存取方法的描述。

16、有如下定义:inta[5]={l,3,5,7,9),*p=a;下列表达式中不能得到数值

5的是()。

A、a|2]

B、a[3]

C、*(p+2)

D、*p+4

标准答案:B

知识点解析:此题考查的是指针引用数组元素。B选项中,a[3]是数组的第四个元

素,即7;其它选项的引用均可得到5。

RT

三rqABC

LZJC32

LZJ□JLZJd32

LZJLZJABC

c32

17、有两个关系R和T如下:□JLDE1则由关系

R得到关系T的操作是

A、选择

B、投影

C、交

D、并

标准答案:A

知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到

关系T。

18、对C++编译器区分重载函数无任何意义的信息是()。

A、参数类型

B、参数个数

C、返回值类型

D、常成员函数关键字const

标准答案:C

知识点解析:如果重载函数只是函数类型不同,而参数个数和类型完全相同,C++

编译器则无法区别它们。

19、已知函数f的原型是voidf(int*a,long&b);,变量vl、v2的定义是:int

vl;loongv2;下列调用语句中正确的是()。

A、f(vl,&v2);

B、f(vl,v2);

C、f(&vl,&v2);

D、f(&vl,v2);

标准答案:D

知识点解析:此题考查的是函数的调用。因为变量的定义是inlvl;longv2,而函数

f。的第一个参数是指针,第二个参数是引用,所以选项D为正确引用。

20、if语句的语法格式可描述为:格式1:if(〈条件〉)V语句〉或格式2:if(V

条件>)V语句l>elseV语句2>关于上面的语法格式,下列表述中错误的是()。

A、V条件>部分可以是一个if语句,例如if(if(a==0-)…)…

B、V语句,部分可以是一个if语句,例如if(…)if(…)…

C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,

语句功能不变

D、V语句,部分可以是一个循环语句,例如if(…jwhile(…).…

标准答案:A

知识点解析:此题考查的是if语句。If语句的条件部分是一个表达式而不是语句,

因此选项A叙述错误。

21、有如下程序:#include<iostream>usingnamespacestd;classtest{private:int

a;public:testO{cout+"constructor"+end1;)test(inta){cout+a+endl;)test(const

test&test){a=test,a;cout+"copyconstructor"+endl;)

test(){Cout+"dcstructor"+end1;));intmain(){testA(3);return0;}运行时输出的

结果是()。

A、3

B、constructordestructor

C、copyDestructor

D、3destructor

标准答案:D

知识点解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但

只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一

个,而在销毁时乂会隐含调用唯一的析构函数。此题中,主函数创建对象A是会

隐含调用tcst(inta)这个构造函数,输出3;接着主函数结束,对象A销毁又隐含调

用~1©S1()析构函数输出destructor0

22、有如下程序:#includeusingnamespacestd:intmain(){intsum:for(inti=0:

i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;)cout<

A、3

B、10

C、12

D、15

标准答案:D

知识点解析:由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不

去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋

值,所以外层第二次循环如下:此时i=3,sum=3内层循环开始如下:j=3,j<6,

sum=6;j=4,j<6,sum=10,j=5,j<6>sum=15,j=6退出内层循环。得到

sum二15。

23>假设函数fun已经定义,其原型为“voidfun(inta,intb=7,char*p="**");"下

列函数调用中错误的是()。

A、fun(5)

B、fun(5,8)

C、fug”##")

D、fun(O,0,1,==*')

标准答案:C

知识点解析:根据函数fun()的定义,其前两个形参为整型变量,第三个形参为字

符型变量。所以在调用时,必须符合形参的数据类型,而选项C)的第二个实参的

数据类型为字符串,不符合第二个形参的数据类型。

24、定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为

()。

A、私有继承

B、非私有继承

C、保护继承

D、公有继承

标准答案:A

知识点解析:继承的方式包括三种:公有继承,保护继承和私有继承。如果不显示

的给出继承方式,缺省的类继承方式是私有继承private。

25、有如卜类定义:classTest{chara;constcharb;public:Test(charc){a=c;

b=c;)//第1行voidf(chara)consl{this—>a=a;)//第2行voidg(charb){this

—>b=b;)//H3Ifcharhoconst{returna;//第4行};编译时没有错误的

行是()。

A、第3行

B、第4行

C、第1行

D、第2行

标准答案:D

知识点解析:类Test中的常成员函数h()返回数据成员a的值。

26、有如下程序:#inc1ude<iostream>usingnamespacestd;classAA{intk;

protected:intn;voidsetK(intk){this->k=k;)public:voidsetN(intn){this—>

n=n;}};classBB:publicAA{/*类体略*/};intmain(){BBX;x.ri=l;//I

x.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在标注号码的四条语句中正

确的是()。

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:因为类BB公有继承自类AA,所以AA中的保护成员和公有成员在

类BB中仍是保护成员和公有成员。在选项B中调用了公有成员函数setN(intn)

{tliis—>n=n,),对保护成员n进行赋值操作。

27、有如卜.程序:#includeusingnamespacestd;classBase{intx;public;

Base{intn=0);x(n){cout<

A、375

B、357

C、0375

D、0357

标准答案:C

知识点解析:此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数

的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺

序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明

的顺序->执行自身的构造函数。此题中,执行语句Deriveddl(3)首先调用基类的构

造函数,输出0;接着调用自身的构造函数输出3。执行语句Derivedd2(5,7)时,

会调用基类的Base(n)函数输出7;然后执行继承类中的Derived(in[m,inin)的

y(m)输出5o

28、若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成

员函数时,下列原型声明正确的是()。

A、XVoperator*(XV,XV);

B、XV*(XV);

C、operator*(XV);

D^XVoperator*(XV);

标准答案:D

知识点解析”是一个二元运算符,在作为成员函数重载时参数表中只有一个参

数.对应于第二个操作数.而第一个操作数就是对象本身,仅以this指针的形式隐

藏在参数表中。

29、若耍重载+、=、<<、=和口运算符,则必须作为类成员重载的运算符是()。

+和二

B、二和VV

C、==和<<

D、=和口

标准答案:D

知识点解析:=、口、()、->以及所有的类型转换运算符只能作为成员函数重载,

而且不能是针对枚举类型操作数的重载。

30、下列运算符中,不能被重载的是()。

A、&&

B、!=

c、.

D^++

标准答案:C

知识点解析:此题考查的是运算符重我。在C++中,只

有::这五个运算符不能重载。

31、下列运算符不能重载为友元函数的是()。

A、=()||->

B、+-++--

C、><>=<=

D、+=-=*=/=

标准答案:A

知识点解析:此题考查的是运算符重载的概念。cl++语言规定,=、[]、()、・>以

及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重

载为非成员函数。

国家二级C++机试(选择题)模拟试卷

第2套

一、选择题(本题共34题,每题1.0分,共34分。)

1、下列符号中,正确的C++标识符是()。

A、enum

B、lOObit

C、s—1

D、_int

标准答案:D

知识点解析:此题考查的是C++语言中标识符的概念。标识符是由数字、字母以

及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长

度是任意的,但由于编译系统的限制一般不超过31个字符:标识符中的大小写字

母是不同的:定义标识符时不能采用系统的保留字。

2、下列符号中,正确的C++标识符是()。

A、enum

B、lOObit

C、s-1

D、int

标准答案:D

知识点解析:此题考查的是C++语言中标识符的概念。标识符是由数字、字母以

及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长

度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字

母是不同的:定义标识符时不能采用系统的保留字。

3、下列选项中,正确的C++标识符是()。

A、6_group

B、group〜6

C、age4-3

D、—group_6

标准答案:D

知识点解析:C++中标识符的命名遵循如下规则:不能是C++关键字,第一个

字母必须是字母或下划线,中间不能有空格,变量名中不能包括

一之类的特殊符号。总之标识符中除了能使用26个英文大小写字

母和数字外,只能使用下划线“一”。

4、下列选项可以做C++标识符的是()。

A、_256

B、fat/pig

C^delete

D、5char

标准答案:A

知识点解析:标识符的命名规则:①所有标识符必须由一个字母(a~z或A〜z)或下

划线0开头;②标识符的其他部分u丁以用字母、F划线或数字(0〜9)组成;③大

小写字母表示不同意义,即代表不同的标识符,如coin和Cout。

5、下列语句中错误的是()。

A、constinta;

B、constinta=10;

C、constint*point=0;

D、constintpoint=newint(10);

标准答案:A

知识点解析:由关键字const声明符号常量的同时必须为其赋初值。

6、下列关于线性链表的叙述中,正确的是

A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C、进行插入与删除时,不需要移动表中的元素

D、以上都不正确

标准答案:C

知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据

结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可

以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

7、某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()。

A、n+1

B>n-1

C、2n

D、n/2

标准答案:A

知识点解析:在任意一喋二叉树中,度为0的结点(即叶子结点)总是比度为2的

结点多一个。所以该二叉树的叶子结点数等于n+1。

8、设某棵树的度为3,其中度为3、2、1的结点个数分别为3、0、4。则该树中

的叶子结点数为

A、7

B、8

C、6

D、不可能有这样的树

标准答案:A

知识点解析:树的度是有一棵树中,最大的结点的度称为“树的度根据题目可知

本树中没有度为2的结点。树的总结点=(度1*个数+度2*个数…)十1,这里我们设

总结点数为n,那么『3*3+2*0+1*4+1=14。树的叶子结点数等于总结点减去所有

度不为0的结点,也就是14—3—4=7。

9、在面向对象方法中,实现信息隐蔽是依靠()。

A、对象的继承

B、对象的多态

C、对象的封装

D、对象的分类

标准答案:C

知识点解析•:对象的封装性是指从外部看只能看到对象的外部特征,即只需知道数

据的取值范围和可以对该数据施加的操作,而不需要知道数据的具体结构以及实现

操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外

面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只

能由其自身改变。

10、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。

A、提高耦合性降低内聚性有利于提高模块的独立性

B、降低耦合性提高内聚性有利于提高模块的独立性

C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D、内聚性是指模块间互相连接的紧密程度

标准答案:B

知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部

各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于

模块的独立性。

11、数据库系统的核心是()。

A、数据模型

B、软件开发

C、数据库设计

D、数据库管理系统

标准答案:D

知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库

的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一

管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过

DBMSo另外,DBMS还承担着数据库的安全保护工作,按照。DBA所规定的要

求,保证数据库的完整性和安全性。

12、由于常对象不能被更新,因此()。

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

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

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

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

标准答案:A

知识点解析:此题考查的是常对象与常成员函数的概念。使用consl关键字修饰的

对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其它

成员函数;使用const关键字声明的成员函数是常成员函数,它也不能被更新,常

成员函数只能调用常成员函数而不能调用其它函数。

13、下歹U代码段声明了3个类classPerson{卜classStudent:publicPerson{};

classUndergraduate:Student1};下列关于这些类之间关系的描述中,错误的是

()o

A、类Person是类Undergraduate的基类

B、类Undergraduate从类student公有继承

C、类student是类Person的派生类

D、类Undergraduate是类Person的派生类

标准答案:B

知识点解析:Sludent类公有继承白Person类,Undergraduale类私有继承自Student

类。所以LJndcrgraduate类是从Student类私有继承的。

14、下列各组类型声明将中,含义相同的一组是(),

A、unsignedlongint和long

B、signedshortint和short

C、unsignedshort和short

D、shortint和ini

标准答案:B

知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其

取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选

项中,unsignedlongint的省略形式为unsignedlong:选项B中,signedshortint的

省略形式是short:选项C中,unsignedshort的省略形式是unsignedshort:选项D

中,shortint的省略形式是shorto

15、有如下程序:includeusingnamespacestd;classXX{intx;public:XX(int

xx=0):x(xx){)intgetX(){returnx;));classYY:publicXX{inty;public:

YY(intXX,intyy):XX(xx),y(yy){)intget(){returngetXO+y;));intmain(){YY

c(3,4);cout<

A、3

B、4

C、7

D、10

标准答案:D

知识点解析:由于类YY公开继承自类xx,所以执行表达式c.gctV()+c.gctX()

的值等于3+3+4=10。

16、若一个函数的原型为“int*Xfiml(intx,int&y,charz);”,则该函数的返回值

类型为()。

A、int*

int

C、int&

D、char

标准答案:A

知识点解析:由“int*Xfunl(intx,int&y,charz);”的定义可知,其返回值为指

向int指针的函数。

17、有如下函数定义:voidfunc(inta,int&b){a++:b++;}若执行代码段:int

x=0,y=l;func(x,y);则变量x和y的值分别是()。

A、0和1

B、1和1

C、0和2

D、1和2

标准答案:C

知识点解析:此题考查的是函数参数的传递方式。此题中形参a是普通参数,即传

值调用,函数中对a增1不会影响到实参x的值;形参b是传址调用,函数中对b

增1同时会改变实参y的值。故最终结果是0和2。

18、有如下类定义:classMyClass)intb;chara;doublec;public:MyClass():

c(0.0),b(0),af,^{j};创建这个类的对象时,数据成员的初始化顺序是()。

A、a,b,C

B、c,b,a

C、b,a,C

D、c,a,b

标准答案:c

知识点常析:类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,

只与成员变量在类中定义的先后顺序有关。

19、下列符号中不属于C++关键字的是()。

A、friend

B、namespace

C、continue

D、byte

标准答案:D

知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时

用到的关键字:namespace是定义或使用名字空间时用到的关键字:continue是终

止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C十十

语言中的关键字。

20、有如下类定义:classMyClass{intx;public:MyClass():x(0),y(0){}int

GctX(){returnx;}voidSctX(intxx){x=xx;)inty;);已知obj是类MyClass的对

象,下列语句中违反类成员访问控制权限的是()。

A^obj.x

B、obj.y

C、obj.GetX()

D、ohj.SetX(O)

标准答案:A

知识点解析:由类MyClass的定义可知,数据成员x属于私有成员,所以只能在类

的内部访问。类MyClass的对象obj不能访问类MyClass的私有成员X。

21、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态

公有成员函数,功能是返回a的值。如果x为该类的一个对象,耍在类外访问x对

象中a的值,正确的访问格式为()。

A、AA.getA()

B、x.getA()

C>x.a

D、AA::a

标准答案:B

知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数

getA()o

22、使用输入输出操作符selw,可以控制()。

A、输出精度

B、输出宽度

C、对齐方式

D、填充字符

标准答案:B

知识点解析:此题考查的是C++流的操作符。在C++流中,操作符sclw的作

用是设置输入输出宽度。

23、字符串、'a+b=12\n\t”的长度为()。

A、12

B、10

C、8

D、6

标准答案:C

知识点解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8

个字符。

24、下列关于this指针的描述中,正确的是().

A、类的成员函数都有this指针

B、类的友元函数都有this指针

C、任何与类相关的函数都有this指针

D、类的非静态成员函数都有this指针

标准答案:D

知识点常析:this是成员函数所属对象的指针,它指向类对象的地址。成员函数通

过这个指针可以知道自己属于哪一个对象。它隐藏于每个类的非静态成员函数

中,。

25、下列关于this指针的叙述中,正确的是()。

A、任何与类相关的函数都有this指针

B、类的成员函数都有Ihis指针

C、类的友元函数都有this指针

D、类的非静态成员函数才有this指针

标准答案:D

知识点解析•:此题考查的是this指针的使用。类的每一个成员函数都有一个隐含的

常量指针,即this指针,类的静态成员函数小能含有ihis指针,因为ihis指针是一

个指向本对象的指针。

26、下列关于C++函数的说明中,正确的是()。

A、内联函数就是定义在另一个函数体内部的函数

B、函数体的最后一条语句必须是return语句

C、标准C*要求在调用一个函数之前,必须先声明其原型

D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式

标准答案:C

知识点解析:此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字

inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A错误;无

返回值的函数在执行完最后一条语句后,会白动返回而不必加入return语句,故选

项B错误;如果函数只是返回值类型不同,而其它完全相同,则不能作为函数重

载来使用,故选项D错误。

27、由于常对象不能被更新,因此()。

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

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

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

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

标准答案:A

知识点解析:此题考查的是常对象与常成员函数的概念。使用const关键字修饰的

对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其它

成员函数;使用const关键字声明的成员函数是常成员函数,它也不能被更新,常

成员函数只能调用常成员函数而不能调用其它函数。

28、己知在一个类体中包含如下函数原型:VOLUMEoperator—(VOLUME)

const;,下列关于这个函数的叙述中,错误的是()。

A、这是运算符.的重载运算符函数

B、这个函数所重载的运算符是一个一元运算符

C、这是一个成员函数

D、这个函数不改变类的任何数据成员的值

标准答案:B

知识点解析:此题考查的是运算符的重载。运算符“一”有一元和二元两种,在本题

中它作为…个二元运算符,所以它不能更新对象的数据成员,也不能调用该类中没

有const修饰的成员函数。

29、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。

A、intoperator-(FunNumber);

B、PunNumberoperator-();

C、FunNumberoperator-(int);

D、intoperator-(FunNumber,FunNumber);

标准答案:D

知识点解析:此题考查的是运算符的重载。“-”运算符有一元和二元两种,且均

可以重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运

算符元数减1;重载为非成员函数时,形参个数一般和运算符元数相等。所以,

运算符重载为成员函数时,参数可以是0个或1个;而重载为非成员函数时,参数

个数可以是1个或2个,所以D选项,肯定是重载为非成员函数。

30、有如下的运算符重载函数定义:doubleoperator+(inti,inik){return

double(i+k);)但定义有错误,对这个错误最油确的描述是()。

A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B、两个im型参数的和也应该是int型,而这里将+的返回类型声明为double

C、没有将运算符重载函数声明为某个类的友元

D、C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

标准答案:D

知识点常析:此题考查的是运算符的重载。C++语言规定,不能作为非成员函数重

载的运算符有二、小()、一〉以及所有的类型转换运算符,故选项A错误;运算

符重我对返回值类型没有限制,故选项B错误;C-+并不强制要求非成员重载的运

算符一定是某个类的友元,所以C选项错误;题目中重载的运算符的两个参数

都是int类型,而C++已经提供了求两个int型数据之和的运算符+,编译器无法区

分应该调用哪一个,.所以应该选择D选项。

31、下列关于模板的叙述中,错误的是()。

A、模板声明中的第一个符号总是关键字template

B、在模板声明中用〈和〉括起来的部分是模板的形参表

C、类模板不能有数据成员

D、在一定条件下函数模板的实参可以省略

标准答案:c

知识点露析:此题考查模板的概念。模板的一般说明形式如下:template类型形参

表函数返回值类型函数名(形参表){函数体},所以选项A、B正确。函数模板的

实参在一定条件下是可以省略的,所以选项C错误。

32、下列关于C++流的说明中,正确的是()。

A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现

B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作

C、cin是一个预定义的输入流类

D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象

标准答案:A

知识点解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,

把表达式插入到输出流中的操作称为插入操作,故选项B错误:cin是一个预定义

的输入流对象而不是流类,故选项C错误:输入输出流中没有open成员函数,故

选项D错误。

33、有如下的运算符重载函数定义:doubleoperator+(inti,intk){return

double(i+k);}但定义有错误,对这个错误最准确的描述是()。

A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B、两个im型参数的和也应该是im型,而这里将•+的返回类型声明为double

C、没有将运算符重载函数声明为某个类的友元

D、C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

标准答案:D

知识点解析:此题考查的是运算符的重载。C++语言规定,不能作为非成员函数重

载的运算符有=、小()、,以及所有的类型转换运算符,故选项A错误;运算符重

载对返回值类型没有限制,故选项B错误:C++并不强制要求非成员重载的运算符

一定是某个类的友元,所以C选项错误;题目中重载的运算符的两个参数都是

ini类型,而C++己经提供了求两个int型数据之和的运算符+,编译器无法区分应

该调用哪一个,所以应该选择D选项。

34、在C++中,cin是一个()。

A、类

B、对象

C、模板

D、函数

标准答案:B

知识点解析:cin为istream流类的对象。

国家二级C++机试(选择题)模拟试卷

第3套

一、选择题(本题共35题,每题1.0分,共35分。)

1、下列语句中错误的是()。

A^constinta:

B、constinta=10;

C、constint*point=0;

D^constint*point*newint(10);

标准答案:A

知识点解析:由关键字consi声明符号常量的同时必须为其赋初值。

2^有如下类的定义,横线处的语句是()。classTestClass{intx,y;public:

TestClass(inta=0,intb=0){x=a;y=b;)staticvoidchange(){y-=10;y-

=10;!);

A、public

B、private

C、static

D、protected

标准答案:C

知识点解析:因为sialicvoidchange。为静态函数,静态函数主要访问静态数据,

不访问非静态数据。所以函数中访问了数据y,所以下划线的数据类型应对应为

statico

3、下面不属于软件工程过程的4种基本活动()。

A、软件规格说明

B、软件开发

C、软件演进

D、软件测试

标准答案:D

知识点解析:软件工程过程的4种基本活动足:软件规格说明、软件开发、软件确

认、软件演进。

4、将前缀运算符“一一”重载为非成员函数,下列原型中能正确用于类中说明的是

()。

A^Deer&operator-----(int);

B、Dccroperator-----(Dccr&,int);

C、friendDeer&operator-----(Deer&);

D、friendDeeroperator一—(Deer&,int);

标准答案:D

知识点解析:非成员函数重载用友元函数的形式实现,"一一''运算符重载分为前置

和后置两种重载方式。用友元函数来实现“一一”运算符的重载时,前置“一一”运算

符的重载的一般格式为:fricndopcrator-----(ClassNamc&);后置++运算符的重载

的一般格式为:friendoperator-----(ClassName&,im)。所以答案为D。

5、下面不属于软件需求分析阶段主要工作的是()。

A、需求变更申请

B、需求分析

C、需求评审

D、需求获取

标准答案:A

知识点解析:在软件开发的过程中,应该尽早的制定测试计划,其中在需求分析阶

段制定系统测试计划,在概要设计阶段制定集成测计划,在详细设计阶段制定单元

测试计划。

6、数据库系统在其内部具有3级模式,用来描述数据库中全体数据的全局逻辑结

构和特性的是()。

A、外模式

B、概念模式

C、内模式

D、存储模式

标准答案:B

知识点解析:概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描

述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软

件环境也无关。

7、必须用一对大括号括起来的程序段是()。

A、switch语句中的clise标号语句

B、if语句的分支

C、循环语句的循环体

D、函数的函数体

标准答案:D

知识点解析:本题考查C++基本控制结构,A、B、c三个选项中的大括号不是必须

的,而D选项中的函数体必须使用大括号。

8^有如下程序:#includc#includcusingstd::cout:classPoint{public:friend

doubledistance(constPoint&p);||p距原点的距离Point(intxx=0,intyy=0):

x(xx),y(yy))II(T)private:intx,y;}:doubledistance(constPoint&p){||@return

sqrt(p.XP.x+p.yP.y);}intmain(){Pointpl(3,4);cout<

A、程序编译正确

B、程序编译时语句①出错

C、程序编译时语句②出错

D、程序编译时语句③出错

标准答案:A

知识点解析:这段程序是正确的,计算p距离原点的距离。语句①是类Point的构

造函数,在构造函数中给变量xx和yy赋初值0。语句②是计算点p距原点的距离

的函数distanceo语句③是计算点pl距离原点的距离并输出。

9、检查软件产品是否符合需求定义的过程称为()。

A、确认测试

B、需求测试

C、验证测试

D、路径测试

标准答案:A

知识点解析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需

求规格说明中确定的各种需求。

10、下列存储类标识符中,可见性与存在性不一致的是()。

A、外部类

B、自动类

C、内部静态类

D、寄存器类

标准答案:c

知识点露析:可见性是函数内部,存在整个程序中,第二次调用值不变。

RT

ABC

c32

d32

ABC

c32

则由关系R得到关系T的操作是()。

A、选择

B、投影

C、交

D、并

标准答案:A

知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到

关系T。

T

ADABCD

c4c314

12、有三个关系R、S和T如下:则由

关系R和S得到关系T的操作是()。

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可

以判断R和S做的是自然连接操作。

13、()提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界

访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接

口。

A、公有成员

B、私有成员

C、私有成员函数

D、保护成员

标准答案:A

知识点解析:此题考查的是公有成员的特点。公有成员允许可使用者访问,提供了

类对外部的接口。

14、字面常量42、4.2、42L的数据类型分别是()。

A、long,double,int

B、long,float,int

C^int»double>long

D、int,float,long

标准答案:c-

知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过

C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字

面常量后添加u或1来指定无符号整数或长整数来存储;对于实型字面常量,C++

将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度

数存储。

15^有如下程序:intx=3;do{x-=2;cout<<x;}while(l(—x));执行这个程

序的输出结果是()0

A、1

B、30

C、1-2

D、死循环

标准答案:C

知识点解析:此题考查的是do-whilc循环语句。do-whilc循环首先执行do语句中

的循环体,再判断是否需要继续执行循环。题目中do语句“x・=2",while语句中

x”即x为0,取反为非0,循环继续执行;执行“x-=2”和“--X”取反后,循环结束程

序退出。

RST

BCDBCDBCD

a0klf3h2a0kl

b1nia0kl

16、有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为

A、并

B、自然连接

C、笛卡尔积

D、交

标准答案:D

知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的

有序组组成的,记为RCS。

17、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50.

—88,0和0,则下列定义语句中错误的是()。

A、intvect[]={30,50—88);

B、intvect|l={30,50,—88,0,0};

C、intvect[5]={30,50—88);

D、intvect[5]=(30,50—88,0,0);

标准答案:A

知识点解析:此题考查的是一维数组定义时的初始化。当数组声明时没有给出数组

的大小但是有初始化列表时,数组的大小就由列表中元素的个数来确定。所以选项

A中数组只定义3个元素,不符合题目。

18、字符串“a+b=12\n\t”的长度为()。

A、12

B、10

C、8

D、6

标准答案:c

知识点0析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8

个字符。

19、有如下函数定义:voidfunc(inta,ini&b){a++:b++;}若执行代码段:int

=>产

XA-1;func(x,y);则变量x和y的值分别是()。

0和

B、1

1和

、I

c0和

D1和

标准答案:C

知识点解析:此题考查的是函数参数的传递方式C此题中形参a是普通参数,即传

值调用,函数中对a增1不会影响到实参x的值;形参b是传址调用,函数中对b

增1同时会改变实参y的值。故最终结果是0和2o

20、学院的每名教师只能属于一个系,则实体系和实体教师间的联系是

A、一对多

B、多对多

C、多对一

D、一对一

标准答案:A

知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个

表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可

以与第一个表中的一个行相关。本题中一个是体系有多个老师,但老师只能属于一

个系,因此是一对多关系。

21、有如下类定义:classFoo{public:Foo(inlv):value(v){}//(T)Foo(){)11(2)

private:F00(){}||③intvalue=0;//④};其中存在语法错误的行是()。

A①

B②

c③

D@

标准答案:D

知识点解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的

数据成员进行初始化。

22、有如下头文件:staticintf2();classMA{public:int13();staticint

f4(););在所描述的函数中,具有隐含的this指针的是()。

A、fl

B、f2

C、f3

D、f4

标准答案:c

知识点谒析:此题考查的是this指针。this指针是一个隐含的指针,它隐含于每个

类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。

题目电,只有f3()满足“类的非静态成员函数''的要求,故应选C选项。

23、有如下类定义:classAA{inta:public:intgetRef()const{return.&a;}/

/①intgctValucoconst|returna:}//②voidset(intn)const{a=n;}//③friend

voidshow(AAaa)const{cout<

A、①

B、②

C、@

D、④

标准答案:B

知识点解析:此题考查了常成员函数和友元函数的概念。选项A中,getRef()函数

的返回值和函数函数类型不符,故错误;C选项中set()常成员函数改变了数据成员

的值,这是不允许的;D选项中show()函数被同时定义成友元函数和常成员函数是

错误的。

24、在类声明中,紧跟在“public:”后声明的成员的访问权限是()。

A^私有

B、公有

C、保护

D、默认

标准答案:B

知识点解析:类中提供了3种访问控制的权限:公有,私有和保护。其中公有类型

定义了类的外部接口,任何一个外部的访问都必须通过外部接口进行。私有类型的

成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的,保护类型介

于公有类型和私有类型之间,在继承和派生时可以体现出其特点。

25>有如下程序:#include<iostream>usingnamespacestd;classMountain{int

height;public:Mountain(inth=0):height(h){)virtualchar*GetNameO

const)return"ll]H;}intGetHeight()const{returnheight;}};classLushan:public

Mountain)Publie:Lushan(intd):Mountain(d){)Char*GetNameOconst{returnJp

山";));intmain(){Mountain*p=newLushan(1000);cout<<p->GetName()<

<“海拔Vp->GetHeight()VV”米":return0:}运行这个程序的输出结果是

()。

A、庐山海拔1000米

B、庐山海拔0米

C、山海拔1000米

D、山海拔0米

标准答案:A

知识点解析:在基类Mountain中定义了虚函数GotName。输出字符串“山”,而在

派生类Lushan中对虚函数GetNameO进行了重新定义,输出字符串“庐山在主

函数中对派生类中的虚函数GetNameO进行了多态调用,此时调用的是派生类中重

新定义的GetNameO,输出字符字符串“庐山

26、有如下类定义:classAA{inta;public:intgetRef()const{return&a;}//

(T)intgetValueoconst{returna;)//@voidset(intn)const{a=n;)//(3)friend

voidshow(AAaa)const{cout<

A①

B②

c③

D④

标准答案:B

知识点解析:此题考查了常成员函数和友元函数的概念。选项A中,gctRcf()函数

的返回值和函数类型不符,故错误;C选项中set()常成员函数改变了数据成员的

值,这是不允许的:D选项中show。函数被同时定义成友元函数和常成员函数是错

误的。

27、已知Value是一个类,Value是Vahe的一个对象。下列以非成员函数形式重

载的运算符函数原形中,正确的是()。

A、Valueopcrator+(Valuev,inti);

B、Valueoperalor+(Valuev=value;inti);

C^Valueoperator+(Valuevinti=0);

D、Valueopcrator+(Valuev=valuc,inti=0);

标准答案:B

知识点解析:此题考查的是重载加法运算符"+”是二元运算符,其第一操作数

是对象本身,i为第二操作数,由此可知选项B正确。

28、下列关于运算符重我的描述中,错误的是()。

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

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

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

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

标准答案:A

知识点解析:运算符重载应尽可能保持其原有的基本语义,而不是创建新的运算

符。重载的运算符应该体现为原运算符的功能在新数据类型上的延伸,它的使用应

当使程序中算法的表达式显得更流畅、自然,使阅读程序的人在不借助于其他说明

资料的情况下就能够正确理解。

29、已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的

语句序列能够正确执行:MyClockcl,c2;//.......c2=cl+10;由此可知:为类

MyClock重载的运算符函数的声明是()。

friendMyClockoperator+(MyClock,int);

B、friendMyClockopcrator+(MyClock,MyClock);

C、friendMyClockoperator+(int,MyClock);

D^MyClockoperator+(MyClock);

标准答案:A

知识点解析:由表达式c2=cl+10可知,在对进行重载时,第一操作数是

MyClock类的对象,而第二操作数是一个整型数据。

30、虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样

的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支

持多态调用。有如下程序:#include<iostream>usingnamespacestd:classBase

{public:virtualvoidf(“coutVV"fO+'‘;}voidg(){cout<<,,g04->,;));class

Derived:publicBase{public:voidf(){coutV<''什'';}voidgo{cout<

<.''g+'':}};intmain{Derivedd:Rase*p=&d:p->f():p->g():return0:)

运行时输出的结果是()c

A、f+g+

fO+g+

C、f+gO+

D、m+g0+

标准答案:c

知识点解析:此题考查的是虚函数和多态性。此题中,因为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论