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

下载本文档

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

文档简介

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

第1套

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

1、下列叙述中正确的是()。

A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D、以上都不正确

标准答案:B

知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所

占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分

为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个

元素的存储序号,称为由针域。所以线性表的链式存储方式比顺序存储方式的存储

空间要大一些。

2、有如下程序:#includeusingnamespacestd;intmain(){intefl=0,f2=1;

for(inti=3;i<=6;i++){f=fl+f2;fl=f2;t2=f)cout<

A、2

B、3

C、5

D、8

标准答案:C

知识点解析:在主函数中for循环语句执行4次,第一次循环结束时•,变量f的值

等于1,fl的值等于1,f2的值等于1;第二次循环结束时,变量f的值等于2,n

的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,fl的值等于

2,我的值等于3;第四次循环结束时,变量f的值等于5,fl的值等于3,的值

等于5;结束循环。

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

A、N—S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典

DD,判定树与判定表,所以选择B。

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

RS_____T

ABBCABC

m113m13

n235

系T,则所使用的运算为()。

A、笛卡尔积

B、交

C、并

D、自然连接

标准答案:D

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

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

有序组可知R与S进行的是自然连接操作。

5、冒泡排序在最坏情况下的比较次数是()。

A、n(n+l)/2

nlog2n

C、n(n-l)/2

D、n/2

标准答案:C

知识点解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经

过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n

—1)/2。

6、下列有关继承和派生的叙述中,正确的是()。

A、如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员

B、派生类的成员函数可以访问基类的所有成员

C、基类对象可以赋值给派生类对象

D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

标准答案:D

知识点解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成

员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类

对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正

确。

7、带链队列空的条件是

A、front=rear=NULL

B、front=rcar=一I

C、front=NULL且rea厂一1

D、front=-l且rear=NULL

标准答案:A

知识点解析:带链队列空的条件有两个:一个是from=lear,一个是他们都等于

空。

8、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

于应用软件的是()。

A、编译程序

13、操作系统

C、教务管理系统

D、汇编程序

标准答案:C

知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有c教务管理系

统才是应用软件。

9、对于循环队列,下列叙述中正确的是()。

A、队头指针是固定不变的

B、队头指针一定大于队尾指针

C、队头指针一定小于队尾指针

D、队头指针可以大于队尾指针,也可以小于队尾指针

标准答案:D

知识点解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作

要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时

也可能小于队尾指针。

10、下列对于软件测试的描述中正确的是()。

A、软件测试的目的是证明程序是否正确

B、软件测试的目的是使程序运行结果正确

C、软件测试的目的是尽可能多地发现程序中的错误

D、软件测试的目的是使程序符合结构化原则

标准答案:C

知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指

很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发

现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正

确功能。

11、下面不属于软件工程过程的4种基本活动

A、软件规格说明

B、软件开发

C、软件演进

D、软件测试

标准答案:D

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

认、软件演进。

12、在数据管理技术发展的三个阶段中,数据共享最好的是()。

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗

余度大;数据库系统管理阶段共享性大,冗余度小。

13、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对

一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对

多联系。

14、有以下程序,在横线应添加()。#include<iostream>usingnamespacestd;

classTestClass{public:TestClass(intn){number=n;}//拷贝构造函数~

TestClass(){)private:intnumber;);TestClassfun(TestClassp){TestClass

temp(p);returntemp;}intmain(){TestClassobjl(lO),obj2(0);TestClass

obj3(objl);obj2=fun(obj3):returnO:}

A、TestClass(TestClass&other){number=other.number;}

B、TestClass(TestClassother){number=other.number;)

C>TestClass(TestClass&other){number:}

D、TestClass(&other){number=other.number;)

标准答案:A

知识点解析:拷贝构造函数也是构造函数,但它只有一个参数,这个参数是本类的

对象,BPother,所以赋值操作将本类的参数other,number赋值给number;而且

采用对象的引用的形式,也就是&odier。

15、下列叙述中正确的是

A、对象具有封装性

B、对象标识可以不唯一

C、对象间的通信是靠方法调用

D、对象是属性名和属性的封装体

标准答案:A

知识点解析:对象的特征有:唯一性、分类性、继承性和多态性(多形性)。对象的

要素有:抽象、封装性(信息隐藏)和共享性。对象标识是唯一的。

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

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

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面

的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系

R,S,丁的结果可知关系T是由关系R和S进行自然连接得到的。

17、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。

A、7

B、8

C、9

D、10

标准答案:B

知识点解析:在具有n个结点的满二叉树,其非叶子结点数为inl(n/2),而叶子结

点数等于总结点数减去非叶子结点数。木题n=15,故非叶子结点数等于int(15/

2)=7,叶子结点数等于15-7=8o

18、下列叙述中,错误的是()。

A、false是一个逻辑型常量

B、b是一个字符型常量

C、365是一个int常量

D、3.1415926是一个double常量

标准答案:B

知识点解析:字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个

字符。或者以开头的包括多个字符的字符序列也符合规定的字符常量。

19、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指

A、数据与程序独立存放

B、不同的数据被存放在不同的文件中

C、不同的数据只能被对应的应用程序所使用

D、以上三种说法都不对

标准答案:D

知识点解析:数据独立性是指数据库中数据独立于应用程序而不依赖于应用程序,

即数据与程序间的互不依赖性。也就是说数据的逻辑结构、存储结构与存取方式的

改变不会影响应用程序。数据的独立性包括物理独立性和逻辑独立性两级。①物

理独立性:数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更

换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起

应用程序的变化。②逻辑独立性:数据库总体逻辑结构的改变,如修改数据模

式、增加新的数据类型、改变数据间联系等,不需要相应的应用程序改变,这就是

数据的逻辑独立性。

20>有如下类定义:classTV{public:Tv(intS=41,stringbr=uTCLM):size(s),

brand(br){}一Tv(){)private:intsize;stringbrand;};若执行语句TVli,

*net[2],company[3]:则Tv类的构造函数被调用的次数是()。

A6次

B4次

c3次

D2次

标准答案:B

知识点解析:本题考查沟造函数和析构函数,题中定义了一个对象以及对象数组,

那么构造函数需要执行4次,而,*nct|2]并不执行沟造函数,所以答案为B。

21、在关系模型中,每一个二维表称为一个

A、关系

B、属性

C、元组

D、主码(键)

标准答案:A

知识点解析:每个二维表代表一个关系,由表框架及表的元组组成。

22、生成派生类对象时,派生类构造函数调用基类构造函数的条件是()。

A、无需任何条件

B、基类中显示定义了构造函数

C、派生类中显式定义了构造函数

D、派生类构造函数明确调用了基类构造函数

标准答案:A

知识点解析:因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所

以当生成派生类对象时,能无条件的调用基类的构造函数。

23、有如下两个类定义:classAA{);classBB{AAvl,*v2;BBv3:

int*v4;):其中有一个成员变量的定义是错误的,这个变量是()。

A、vl

B、v2

C、v3

D、v4

标准答案:c

知识点解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整

型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有

另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的

对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类

BB时,不能包括其对象v30

24、建立一个类对象时,系统自动调用()。

A、析构函数

B、构造函数

C、静态函数

D、友元函数

标准答案:B

知识点解析:建立一个类的对象时,编译程序需要为对象分配存储空间,进行必要

的初始化。在C十十中,这项工作是由构造函数来完成。

25、有如下程序段:inli=O,j=l;int&r=i;//①r二j;//@int*p=&i://

③*p=&r;//④其中会产生编译错误的语句是()。

A、@

B、@

C、②

D、①

标准答案:A

知识点解析:此题考查的是指针和引用.本题中,语句①是一条合法的引用声明

语句,使得变量i被r引用;语句②通过引用r将变量j的值赋给变量i;语句③声

明了指针变量P,并初始化指向变量i;语句④中*p代表了变量i的值,耍将&r赋

给*P,这会使编译器产生类型不符的错误提示。

26、在类声明中,紧跟在“public;''后声明的成员的访问权限是()。

A、私有

B、公有

C、保护

D、默认

标准答案:B

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

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

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

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

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

A^私有

B、公有

C、保护

D、默认

标准答案:B

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

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

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

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

28、如需要向一个二进制文件尾部添加数据,则该文件的打开方式为()。

A、ios_base::app

B、ios_base::binaryIios一base::out

C、ios-base::out

D、ios_base::binaryIios_base::app

标准答案:D

知识点解析:iosbase::binary模式是作为二进制文件打开,iosbase::app模式

是作为添加数据而打开(总是在尾部写)。

29、派生类的成员函数不能访问基类的()。

A、公有成员和保护成员

B、公有成员

C、私有成员

D、保护成员

标准答案:C

知识点解析:此题考查的是派生类对基类成员的访问。派生类对基类的各个成员的

访问能力与继承方式无关.其成员不能访问基类中的私有成员,可以访问基类的公

有成员和保护成员。

30、若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中

访问a时,其书写格式为()。

A、a

B、AA.a

C、a()

D、AA::a{)

标准答案:A

知识点解析:类AA的成员函数直接引用类AA的非静态数据成员。

31、若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正

确的是()。

A、operatorlong()const;

B、operatorlong(bigNumber);

C、longoperatorlong()const;

D、longoperatorlong(BigNumber);

标准答案:A

知识点解析:在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此

不需要返回值类型的声明。

32、有如卜.函数模板:templateTcast(Uu){returnu;}其功能是将U类型数据转

换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是

()。

A、cast(i);

casto(i);

C>cast(i);

D、cast(i);

标准答案:D

知识点解析:此题考查的是模板函数的调用。本题中cast。函数的实参i只能确定

模板参数U的类型为im,而不能确定另外一个模板参数T,故选项A、B错误;

C++语言不允许隐式地将int转化为char*,故选项C错误。

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

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

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

C、类模板描述了一组类

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

标准答案:D

知识点解析:类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成

员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数

的参数和返回值的类型)「一个类模板的格式是:templateVV模板形参表声明>>

V类声明>,<模板形参表声明,是由一个或多个模板形参组成。在定义类模板

时,可以为模板形参表声明的最后若干个参数设置默认值。

34、下列关于C++流的描述中,错误的是()。

A、cout>>,A,表达式可输出字符A

B、eof()函数可以检测是否到达文件尾

C、对磁盘文件进行流操作时,必须包含头文件fstream

D、以ios_base::out模式打开的文件不存在时,将自动建立一个新文件

标准答案:A

知识点解析:cout是一个标准输出流对象。>>称之为提取运算符,它的功能是从

输入流中提取数据赋值给一个变量。〈V为插入运算符,其功能是把表达式的值插

入到输出流中。当系统执行coutVVx操作时,首先根据x值的类型调用相应的插

入运算符重载器函数,型x的值传送给对应的形参,接着执行函数体,把x的值输

出到显示器屏幕上,在当前屏幕光标位置处显示出来,然后返回。stream流,以便

继续使用插入运算符输出下一个表达式的值。对于本题来说,要输出字符,AWJ值

应该写成coutVV,AZ因而选项A)是错误的。

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

A、&&

B、!=

C、.

D、++

标准答案:C

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

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

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

第2套

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

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

A^constintbuffel”=256;

B、constinttemp;

C、constdouble*point;

D^constdouble*rt=newdouble(5.5);

标准答案:B

知识点解析:此题考查的是符号常量的概念。符号常量必须在声明的同时赋初值,

故选项B错误;选项C定义的是一个指向常量的指针变量,即通过指针不能改变

它所指向的内容,而它自己的内容是可以改变的,C选项正确。

2、下列字符串中,不瓦以用做C++标识符的是()。

A、y2006

B、_TEST_H

C、Return

D、switch

标准答案:D

知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识

符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符

不能使用C++已有的关鬟字;③大、小写字母表示不同意义,即代表不同的标识

符。选项C中虽然relurn是关键字,但因首字母大、小写不同,也可用于标识符,

但不建议使用。故答案为D。

3、在面向对象方法中,不属于“对象”基本特点的是()。

A^一致性

B、分类性

C、多态性

D、标识唯一性

标准答案:A

知识点解析:对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独

立性。

下面程序输出的结果为()。#tnclude<lostrcam.h>voidtun(inta,intb)(int

temp;temp=a;a=b;b=temp;)voidmain(){intm,n;m=l;n=2;fun(m,

n);cout<<m<<nH<<n<<endl:}

A、12

B、21

C、22

D、程序有错误

标准答案:A

知识点解析:函数fun中定义的参数a和b为形式参数,它们并不是实际存在的数

据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也

被释放。并且函数fun没有返回值,它做的交换操作,并不能影响实际参数m和

no所以输出值保持不变,仍然是1和2,即输出:12。

5、软件需求规格说明书的作用不包括()。

A、软件验收的依据

B、用户与开发人员对软件要做什么的共同理解

C、软件设计的依据

D、软件可行性研究的依据

标准答案:D

知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合

同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。

6、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个

共有的()。

A、记录

B、行

C、属性

D、元组

标准答案:C

知识点解析:自然连接要满足两个条件:一是两关系之间有公共域。二是通过共域

的相等值进行连接。

7、下列描述中,不属于面向对象思想主要特征的是()。

A、封装性

B、跨平台性

C、继承性

D、多态性

标准答案:B

知识点解析:封装性、继承性和多态性是面向对象程序设计的三个基本特征。跨平

台性不是面向对象程序没计的特征。

8、下面是类shape的定义:classShape{public:VirtualvoidDraw()=0;};下

列关于Shape类的描述中,正确的是()。

A、类Shape是虚基类

B、类Shape是抽象类

C、类Shape中的Draw函数声明有误

D、语句“Shapes;”能够建立Shape的一个对象S

标准答案:B

知识点解析:因为类Shape中包含纯虚函数Draw。,所以类Shape是抽象类。

9、有如下程序段:inii=4;intj=l;intmain(){inti=8,j=i;cout<<i<<j<<

endl;)运行时的输出结果是().

A、44

B、41

C、88

D、81

标准答案:C

知识点解析:这个程序定义了全局整型对象i和j,其值分别等于4和1。而在主函

数中定义了局部整型对象i和j,i值赋予8,再把i值赋给j,接着输出i和j的

值,所以其结果为88。这个题目要注意的一点是,全局整型对象i和j和主函数中

定义了局部整型对象i和j.在计算机内存中表示的是不同的存储单元.它们的值

是独自存放的,互相不同。

10、计算斐波那契数列第n项的函数定义如下:intfib(intn){if(n==O)return1;

elseif(n=l)return2;elsereturnfib(n-1)+fib(n-2);)若执行函数调用表达式

fib(2),函数fib被调用的次数是()。

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:斐波那契数列是递归函数,所以fib(2)=fib(1)+fib(0)

=2+1=3。因而执行函数调用表达式fib(2)时,函数fib被调用的次是2次。

11、有如下程序段:inti=5;while(imi=0){coutVV'*';i・・;}运行时输出的

个数是()。

A、0

B、1

C、5

D、无穷

标准答案:A

知识点解析:因为while循环中,因为i的值等于0,所以while循环体一次也不执

行。因而运行时输出“”的个数是0。

12、语句ofstream(SALARY.DAT'*,ios_base::app);的功能是建立流对象f,并

试图打开文件SALARYDAT与f关联,而且()。

A、若文件存在,将其置为空文件;若文件不存在,打开失败

B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件

C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

D、若文件存在,打开失败:若文件不存在,建立一个新文件

标准答案:B

知识点解析:此题考查的是文件打开模式。文件打开模式iso_base::app是为添加数

据而打开(总是在尾部写),故只有选项B说法正确.

13、下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。

A、与它们在初始化列表中的顺序相同

B、与它们在类中声明的顺序相同

C、与析构函数的调用顺序相同

D、顺序不确定

标准答案:B

知识点解析:类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是

按照构造函数说明后的号号顺序进行构造的C

14、有如卜程序:#include<iostream>usingnamespacestd;classXA{inta;

public:staticintb;XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::

b=0:intmain()(XAdl(4),d2(5);cout<<dl.getA()+d2.getA()+XA::

b+dl.b<<endl;return0;}运行这个程序的输出结果是()。

A、9

B、11

C、13

D、15

标准答案:C

知识点解析:在类XA的构造函数中,定义了用成员变量a的值初始化变量髓,同

时静态成员变量b值加1。所以当在主main函数中定义类XA的对象dl(4)后,变

量b的等于1,定义对象d2(5)后,变量b的值等于2,所以表达式

dl.getA()+d.2.getA()+XA::b+dl.b等于4+5+1+2+1=13。

15、己知类Myclass的定义如bclassMyclass{public:voidfunclionl(Myclass&

c){cout<<c.data;)staticvoidfunction2(Myclass&c){cout<<c.data;)void

function3()(cout<<data;}staricvoidfunction4(){cout<<data;)private:int

data;);其中有编译错误的函数是()。

A、functionl

B、function?

C、functions

D、function4

标准答案:D

知识点解析:funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非

静态成员,即coutV〈data在编译时会出错。

16、如果派生类以protected方式继承基类,则原基类的protected成员和public成

员在派生类中的访问属性分别是()。

public和public

B、publicprotected

C、protectedpublic

D^protected和protected

标准答案:D

知识点解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能

访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公

有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派

生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;

派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护

成员在派生类中仍然是保护成员。

17、有如下程序:#includeusingnamespacestd:classAA{intk;protected:int

n:voidsetK(intk){this->k=k:}public:voidsetN(intn){this->n=n:}}:class

BB:publicAA{/*类体略*/};intmain(){BBx;x.n=l://lx.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){this->n=n;},对保护成员n进行赋值操作。

18、下列关于运算符重载的描述中,正确的是()。

A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

B、一元运算符只能作为成员函数重载

C、二元运算符重载为非成员函数时,参数表中有一个参数

D、C++中可以重载所有的运算符

标准答案:A

知识点解析:此题考查的是运算符的重载。运算符重载为成员函数时,形参个数一

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

以二元运算符重我为非成员函数时,参数表中应有两个参数,C选项错误:运算符

重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确:一元

运算符中,(取负)、“++”、“一”等均可重载为成员函数:C++语言中,

五个运算符不能重载,

19、要建立文件流并打开当前目录下的文件file,dat用于输入,下列语句中错误

的是()。

A、ifstreamfin=ifstream.open("file.dat");

ifstream*fin=newifstream("file.dat");

CNifstreamfin;fin.opcn("file.dat");

D、ifstream*fin=newifstream();fin->open("file.dat'*);

标准答案:A

知识点解析:在选项A中,在赋值号的左侧表示建立一个输入流对象fin,而在赋

值号的右侧的表达式不正确,因为文件输入流类ifStream不能直接调用其成员函数

open。

20、如果表达式a>_b中的“>=”是作为非成员函数重载的运算符,则可以等效地表

示为()。

A、a.operator>=(b)

B、b.operatotr>=(a)

C、operalor>=(a,b)

D、operator>=(h.a)

标准答案:C

知识点解析:运算符函数作为非成员函数时,没有隐含的mis指针,因此所有的操

作数必须出现在参数表中,对于二元运算符,参数表中有两个参数,分别代表第一

操作数和第二操作数,且顺序不能改变。

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

第3套

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

1、下面程序的运行结果是()。#include<iostream>usingnamespacestd;class

TestClass{staticintn;public:TestClass0{n++;)staticinttest(){for(inti=0;i

<4;i++)n++;returnn;));intTestClass::n=0;intmain(){tout<<

TestClass::teslOVV''";TestClasscl,c2;toul<<TestClass::test()<<

endl;return0:}

A、4,10

B、4,6

C、0,6

D、0,4

标准答案:A

知识点解析:在主函数中首先调用TestClass中的test函数输出,类中的n为静态

数据成员,可以为所有的对象共享这些数据,这里调用后n等于4。定义对象cl,

c2调用构造函数后n=6,所以主函数再次执行“coutVVTeslClass::lesl()VV

end1;”后,n等于10。

2、下列对于线性链表的描述中正确的是

A、存储空间不一定连续,且各元素的存储顺序是任意的

B、存储空间不一定连续,且前件元素一定存储在后件元素的前面

C、存储空间必须连续,且前件元素一定存储在后件元素的前面

D、存储空间必须连续,且各元素的存储顺序是任意的

标准答案:A

知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不

连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表

中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第

一个结点的指针head称为头指针,当hcad=NULL(或0)时称为空表。

3、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正

确的是()c

A、冒泡排序为n/2

B、冒泡排序为n

C、快速排序为n

D、快速排序为n(n—I)/2

标准答案:D

知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2

遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-l)

/2o快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,

因此,称为快速排序法。

4、下列排序方法中,最坏情况下比较次数最少的是

A、冒泡排序

B、简单选择排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数

为:n(n-l)/2。而堆排序法在最坏的情况下需要比较的次数为O(nlog2n)。其中堆

排序的比较次数最少。

5、下列函数原型声明中,错误的是()。

A、intfunction(intm,intn);

intfunction(int,int);

C>intfunction(intm=3,intn);

D^intfunction(int&m,int&n);

标准答案:C

知识点解析:在C++中,函数在使用之前要预先声明。这种声明在标准C++中

称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参

数个数和类型。其语法为:〈返回类型><函数名>(<形参列表>):使用函数原型说

明有两种形式:①直接使用函数定义的头部,并在后面加上一个分号;②在函数

原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及

次序。在选项C中,给出了形参变量m的初值。

6、执行后的输出结果是()。#include<iostream.h>voidmain(){inti(0);

while(++i){if(i==10)break;if(i%3!=l)continue;cout<<i<<endl;}

A、147

B、247

C、432

D、731

标准答案:A

知识点解析:从if(i==10)break;语句了解本循环只到10,输出i的条件是只要1-

10之间的数对3取余为1的输出,所以输出的147V

7、层次型、网状型和关系型数据库划分原则是()。

A、记录长度

B、文件的大小

C、联系的复杂程度

D、数据之间的联系方式

标准答案:D

知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系

型数据库,它们是根据数据之间的联系方式来划分的。

8、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,

BLACK=10);则下列说法中错误的是()。

A、枚举常量YELLOW的值为1

B、枚举常量RED的值为6

C、枚举常量BLACK的值为10

D、枚举常量WHITE的值为1

标准答案:D

知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum

类型名{枚举值表)。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右

分别与整数0、I、2、3…n—1对应:若第i个枚举值赋常量值为m,则其未赋常量

值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结

束。

9、有如下程序:#includeusingnamespacestd;classMedia{public:void

Name();voidShow();protected:intpage;);classBook:private

Media{public:voidPrint(){cout<

A、语句①

B、语句②

C、语句③

D、语句④

标准答案:B

知识点解析:类Book私有继承自类Media,所以类Media中的公有成员函数

Name。在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问

私有成员函数Name()o

10、下面是重载为非成员函数的运算符函数原型,其中错误的是()。

A、Fractionoperator+(Fraction,Fraction);

B、Fractionoperator—(Fraction);

C、Fraction&operator=(Fraction&,Fraction);

D、Fraction&operator+=(Fraction&,Fraction);

标准答案:C

知识点解析:此题考查的是运算符重载0C++语言规定.“=”运算符只能作为成员

函数重载。

11、关于函数重载,下列叙述中错误的是()。

A、重载函数的函数名必须相同

B、重载函数必须在参数个数或类型上有所不同

C、重载函数的返回值类型必须相同

D、重载函数的函数体可以有所不同

标准答案:C

知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相

同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类

型不做要求,返回值类型也不参与区分函数的重载形式。

12、若己经声明了函数原型“voidfun(inta,doubleb=0.0);”,则下列重载函

数声明中正确的是()。

A、voidfun(inta=90,doubleb=0.0);

intfun(inta,doubleB);

C>voidfun(doublea,intB);

D、boolfun(inta,doubleb=0.0);

标准答案:C

知识点解析:函数重载的原则就是至少要在参数个数或参数类型上有所不同,且如

果函数只是函数类型不同的,而其他完全相同,也不能作为重载函数来使用。

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

件打〈语句Aelsev语句2>关于上面的语法格式,下列表述中错误的是()。

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

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

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

能不变

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

标准答案:A

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

因此选项A叙述错误。

14、有如下程序:#include<iostream>usingnamespacestd;classTest{public:

Test(){n+=2;}~Test(){n-=3;}staticintgetNumOfreturnn;}private:staticint

n:);intTest::n=l:intmain(){Test*p=new"rest;deletep:tout<<,,n=,,<

<Test::getNum()<<endl;return0;}执行后的输出结果是()。

A、n=0

B、n=l

C、n=2

D、n=3

标准答案:A

知识点解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所

有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有

叠加性,执行“n+=2”和“n-=3”后n的值为0。

15、下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<

A、cout<

B、cout<

C、cout<

D、cout<

标准答案:B

知识点解析:此题考查的是C++流。selfillO作用是设置填充字符;lefl是使输出数

据在指定宽度内左对齐;setw()的作用是设置输入输出宽度,且只对当前一次有

效。

16、在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();",但无法

通过编译。这说明()。

A、f()是基类的私有成员

B、。是基类的保护成员

C、派生类的继承方式为私有

D、派生类的继承方式为保护

标准答案:A

知识点解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A

正确。在B中,三种继承方式都能访问基类的保护成员,故B不正确。C选项的

情况在D是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样

D也不一定正确。

17、下列关于运算符函数的描述中,错误的是()。

A、运算符函数的名称总是以。peralor为前缀

B、运算符函数的参数可以是对象

C、运算符函数只能定义为类的成员函数

D、在表达式中使用重载的运算符相当于调用运算符重载函数

标准答案:C

知识点解析:C十十把重载的运算符视为特殊的函数,称为运算符函数。编译系统能

够依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一

运算符的不同含义。运算符函数作为非成员函数时,所有的操作数必须出现在参数

表中。

18、下列关于运算符重载的叙述中,正确的是()。

A、通过运算符重载,可以定义新的运算符

B、有的运算符只能作为成员函数重载

C、若重载运算符+,则相应的运算符函数名是十

D、重载一个二元运算符时.必须声明两个形参

标准答案:B

知识点解析:此题考查的是运算符重载。C++中,“=”、”[广、”()”、“・>”以及所有

的类型转换符只能作为成员函数重载,故B选项正确;运算符重载只是赋予己有

的运算符多重含义,并不是定义新的运算符;运算符函数的函数名就是在运算符前

加上关键字operatoro

19、若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列

MyTemp<double>p2;MyTemp<long>p3|2];编译系统在处理上面的语句序列

时,所生成的模板MyTemp的实例的个数是()。

A、1

B、2

C、3

D、0

标准答案:C

知识点解析:p2是一个double型的MyTemp,p3[2]是一个long型MyTemp数组,

其中包括两个元素。所以共有3个MyTemp的实例。

20、下列关于C++预定义流对象的叙述中,正确的是()。

A、cin是C++预定义的标准输入流对象

B、cin是C++预定义的标准输入流类

C、cout是C++预定义的标准输入流对象

D、cout是C++预定义的标准输入流类

标准答案:A

知识点解析:cin为istrcam流类的标准输入对象,标准输入设备就是指键盘。

21、下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他

三条语句不同,该语句是()。

A、cout<<internal<<12345;

B、cout<<left<<12345;

C、cout<<right<<12345;

D、cout<<setw(6)<<12,345;

标准答案:D

知识点解析:选项A),B),C)都没有指输出数据的宽度,所以在输出时,按

实际字符的宽度输出,而选项D)指定输出字符的宽度为6,而实际输出的宽度等

于5,所以最后一个字符用空格补齐。

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

第4套

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

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

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

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

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

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

标准答案:C

知识点解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返

回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替

换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,

所以就不需要relurn了,如果被调函数在调用函数之前已经定义,那么就不需要声

明,所以C选项错误,正确选项为D。

2、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是()。

A^intx[3]={0,0,0);

B、intx[]={0);

C、staticintx[3]={0};

D、intx[]={0,0,0);

标准答案:B

知识点解析:当数组声明时没有给出数组的大小,但是有初始化列表时,数组的大

小就由列表中元素的个数来确定。对于选项B定义数组x时,没有给出数组的大

小,初始化时只给出了一个元素0。所以数组x只包含一个元素为。的元素。

3、有如下程序#include#includeusingnamespacestd;classMyClass{public:

MyClass(){coutvv'A';)MyClass(charc){cout<*p2;p2=newMyClass(,X,);delete

p2;return();)执行这个程序屏幕上将显示输出()。

A、ABX

B、ABXB

C、AXB

D、AXBB

标准答案:D

知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由

系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题

中,主程序在创建MayClass类的对象pl时,调用MayClass类的默认构造函数,

输出字母A:然后在创建*p2对象时,,调用带字母参数的构造函数,输出字母x;

语句deletep2:调用析构函数,输出字母B;在主函数退出时,调用析构函数清除

对象pl,输出字母B。

4、下列描述中,正确的是()。

A、线性链表是线性表的链式存储结构

R、栈与队列是非线性结构

C、双向链表是非线性结构

D、只有根结点的二叉树是线性结构

标准答案:A

知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结

构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足,下列两

个条件:①有且只有一个根结点:②每个结点最多有一个前件,也最多有一个后

件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表

都是线性结构,而二叉树是非线性结构。

5、下列描述中正确的是

A、软件测试应该由程序开发者来完成

B、程序经调试后一般不需要再测试

C、软件维护只包括对程序代码的维护

D、以上三种说法都不对

标准答案:D

知识点解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从

心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不

同程度地存在障碍的,所以选项A)错误。在程序调试时,修改了一个错误的同时

可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以

选项B)错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断

地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C)错误。

6、下列程序的输出结果是()。#include<iostream>usingnamespacestd;template

<typename1>1tun(1a,lb)(rcturn(a>=b)?a:b;)voidmain()(cout<<tun(3,

6)<<\'VVfun(3.14F,6.28F)<<endl;}

A、6,3.14

B、3,6.28

C、3,3.14.

D、6,6.28

标准答案:D

知识点解析:"?:”为条件运算符,(a>=b)?a:b是当a大于b时取a,否则取b。

所以第一个fun(3,6)调用中,6大于3,所以输出6,同理第二个

fun(3.14F,6.28F)调用中输出6.28。

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

A、12

B、10

C、8

D、6

标准答案:C

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

个字符.

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

5的是()。

a[2]

B、a[3]

C、*(p+2)

D^*p+4

标准答案:B

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

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

9、下列有关内联函数的叙述中,正确的是()。

A、内联函数在调用时发生控制转移

B、内联函数必须通过关键字inline来定义

C、内联函数是通过编译器来实现的

D^内联函数函数体的最后一条语句必须是return语句

标准答案:C

知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样

的展开,将调用表达式用内联函数体来替换所以它没有一般函数的参数压栈和和退

栈操作,所以选项A错误;即使没有使用inline说明,编译器也会将在类的说明部

分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更

高的执行效率,所以选项D错误。

10、有如下程序:#include<iostrcam>#1nc1ude<cstring>usingnamespacestd;

classXCD{char*a;intb;public:XCD(char*aa,intbb){a=new

char[strlen(aa)+l];strcpy(a,aa);b=bb:}char*Geta(){returna;)int

GctbO{returnb;!);intmain(){char*pl=,,abcd,\*p2=''wcirong'';intdl=6»

d2=8;XCDx(pl,dl),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<

endl;return0:}运行前的输出结果是()。

A、12

B、16

C、14

D、11

标准答案:A

知识点解析:由类XCD的定义可知,成员函数Geia()返回的是字符串的长度,

Gctb()返回的是参数b的值。在主函数中strlen(x.Gcta())的值等于4,y.Getb()的

值等于8,所以输出两者的和为12。

11、下列类模板的定义中语法格式错误的是()。

A、template<classT>classBuffer{//}

B、template<lypenameT>classBuffer{/*...*/};

「、template<classT1.classT2>classRuffer{/*...*/):

D、template<T>classBuffer{/*...*/);

标准答案:D

知识点解析:定义类模板的一般形式是:templatev类型名参数名1,类型名参数

名2,…〉class类名{类声明体};模板的类型参数由关键字class或关键字

typename及其后的标识符构成。在模板参数表中关键字class和typename的意义相

同。

12、若已定义了类Vehicle,则下列派生类定义中,错误的是()。

A、classCar:vehicle{/*类体略*/};

B、classCar:publiccar{/*类体略*/);

C、classCar:publicVehicle{/*类体略*/);

D、classCar:virtualpublicVehicle{/*类体略*/};

标准答案:B

知识点解析:类Car不能派生自它奉身。

13、有,如下两个类定义classxx{privaie:dOublexl;protected:doublex2;

public:doublex3;);classYY:protectedXX{private:doubleyl;potected:

doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改

变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,

YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中

都成为保护成员,再加上类YY。中的保护成员y2,因此在派生类YY中保护成员

的个数为3。

14、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。

A、派生类、成员对象类、基类

B、成员对象类、基类、派生类

C、基类、成员对象类、派生类

D、基类、派生类、成员对象类

标准答案:C

知识点解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造

函数,调用的顺序按照基类被继承时候的顺序(自左向右)。然后是执行成员对象

的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是

执行派生类的构造函数。

15、当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成

员,这些成员在基类中原有的访问属性是()。

A、任何

B、公有或保护

C、保护或私有

D、私有

标准答案:B

知识点解析:基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承

类中是保护成员。

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

height:public:Mountain(inth=0):height(h){}virtualchar*GetName()

const{return"ill";|intGctHeight()const{returnheight;});classLushan:public

Mountain!Publie:Lushan(intd):Mountain(d){}Char*GetName。const{returrT庐

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

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

()。

A、庐山海拔1000米

B、庐山海拔。米

C、山海拔1000米

D、山海拔0米

标准答案:A

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

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

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

新定义的GctName。,输出字符字符串“庐山”。

17、有如卜程序:#include<iostream>usingnamespacestd;classToy{public:

T

温馨提示

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

评论

0/150

提交评论