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

付费下载

下载本文档

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

文档简介

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

第1套

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

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

A、冒泡排序

B、简单选择排序

C、直接插入排序

D、堆排序

标准答案:D

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

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

排序的比较次数最少。

2、结构化程序设计的基本原则不包括()。

A、多元性

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,

模块化和限制使用GOTO语句,其中不包括多态性。

3、数据流图中带有箭头的线段表示的是()。

A、控制流

B、事件驱动

C、模块调用

D、数据流

标准答案:D

知识点解析•:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的

移动变换过程.其中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般

在旁边标注数据流名。

4、数据库管理系统是(:)。

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中

的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

5、数据库设计的根本目标是要解决()。

A、数据共享问题

B、数据安全问题

C、大量数据存储问题

D、简化数据维护

标准答案:A

知识点解析•:数据库应用系统中的一个核心问题就是设计一个能满足用户要求、性

能良好的数据库,这就是数据库设计。数据库设计是在一定平台制约下,根据信息

需求与处理需求设计出性能良好的数据模式。数据库设计的根本目标是要解决数据

共享的问题。

6、有三个关系R、S和T如下:1一~匚」।

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

A、自然连接

B、差

C、交

D、并

标准答案:B

知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过

差运算得到的。

7、在黑盒测试方法中,设计测试用例的根据是

A、数据结构

B、程序调用规则

C、模块间的逻辑关系

D、软件要完成的功能

标准答案:D

知识点解析:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常

使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构

和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格

说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功

能进行测试。

8、有如下类声明:classBaselprotected;intmount;public:Base(intn=0):

amount(n){)intgetAmount()const{returnamount;}};classDerived:public

Base{protected:intvalue;public;Derived(intm,intn):value(m).Base(n)()Int

getData()const(returnvalue4-amount;)):已知x是一个Derived对象,则下列表

达式中正确的是()。

A、x.value4-x.getAmount。

B>x.gctData()—x.gctAmount()

C、x.getData()-x.amount

D、x.value4-x.amount

标准答案:B

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

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

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

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

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

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

9、字面常量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来指定按单精度

数存储。

10、一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联

系是

A>1:1联系

B、1:m联系

C>m:I联系

D、m:n联系

标准答案:D

知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师

和课程的联系是多对多的联系。

15^有如卜程序:#include#includeusingnamespacestd;intmain(){cout<

A、***123***456

B、***123456***

C、***123456

D、123456

标准答案:C

知识点解析:在主函数中第一次输出时调用函数setflll,*,)设置填充字符为调

用函数setw(6)设置每次输出的宽度为6,所以第一次输出123时,多余的三个空位

用填充,即结果为**町23,第二次从输出流中输出456。

16、下面关于C++流的叙述中,正确的是()。

A、cin是一个输入流对象

B>可以用ifstrcam定义一个输出流对象

C、执行语句序列char木y="PQMy”;cout<

D、执行语句序列charx[80];cin.getline(x,80);时,若键入Happynewyear则

x中的字符串是“H叩py”

标准答案:A

知识点露析:此题考查的是C++流的概念和I/O的格式化。cin是类的对象,亦即

输入流对象;iofstl―eam是输入文件流类,不能定义一,个输出流对象;C选项中

最后输出的是字符串“PQMN”;D选项中x中字符串应该是“Happynewyear”。

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

A、Valueoperator+(Value);

B、Valueoperator-(Value,Value);

C>Valueoperator*(int);

D、Valueoperator/(Value);

标准答案:B

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

数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函

数,但是对于其他三个选项,有可能都是耍求两个操作数的成员函数。

18、通过派生类的对象可直接访问其()。

A、公有继承基类的公有成员

B、公有继承基类的私有成员

C、私有继承基类的公有成员

D、私有继承基类的私有成员

标准答案:A

知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误

的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类

中进行访问,而通过派生类的对象不能访问,所以选项C也是错误的。基类的公

有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。

19^有如下类模板定义:temp1ate<typenameT>classBigNumber{longn;

public:BigNumber(Ti):n(i){}BigNumberoperator+(BigNuinberb){return

BigNumbcr(n+b.n);}}已知bl、b2是BigNumber的两个对象,则下列表达式中

错误的是()。

A、bl+b2

B、bl+3

C、3+bl

D、3+3

标准答案:C

知识点解析:C++运算符的重载有两个方式,一种是做为成员函数,另一种是做为

友元函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的

参数都要写全。比如对加法的重载:成员方式为COperatoroperator

+(COperator&op);,在调用的过程中我们可以理解为result二opcrator+(op):友元方式

为friendCOperatoroperator—(COperator&op1,COperator&op2);,在调用的过程

中我们可以理解为result=operator—(opl,op2);。对于本题来说,整数3与bl相

加时,3是ini型,bl是BigNumberVT>型,int型不能和别的型做运算。

20、下面是一个模板声明的开始部分:tempiute<typenameT>double由此可

知()。

A、这可能是一个函数模板的声明

B、这可能是一个类模板的声明

C、这既可能是一个函数模板的声明,也可能是一个类模板的声明

D、这肯定是一个错误的模板声明

标准答案:A

知识点解析:此题考查的是函数模板的声明。声明一个函数模板的格式是:

lemplateV模板形参表声明,函数声明;定义类模板的格式是:templateV类型形参

表》classV类模板名>{);。

21、下列关于模板的叙述中,正确的是()。

A、如果一个类中存在纯虚函数,这个类就是类模板

B、函数模板不能有形式参数表

C、类模板是一种参数化类型的类,是类的生成器

D、类模板中不能包含构造函数

标准答案:C

知识点解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函

数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类

的生成器。

22、在语句cin>>data;中,cin是()。

A、C++的关键字

B、类名

C、对象名

D、函数名

标准答案:C

知识点解析:此题考查的是预定义流对象。C++有4个预定义的流对象:cin—标准

输入;cout—标准输出;cerr—标准出错信息输出:clog一带缓冲的标准出错信息输

出。

23、有如下程序:#include<iostream>#include<iomanip>usingnamespacesid;

intmain(){cout<<setw(10)<<setfill(,x,)<<setprecision(8)<<left;cout<<

12.3456793<<<<98765;return0;}若程序的输出是

12.345679x98765xxxxx,则划线处缺失的部分是()。

A、setw(10)

B、setfill('x')

C、setprccision(8)

D、right

标准答案:A

知识点解析:根据程序输出的结果最后5个位置用x进行填充,又因为sctw(10)设

置输出的宽度效果只对一次输出有效。所以划线处应该填写setw(IO)0

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

第2套

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

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

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

A、cast(i);

B、casto(i);

C^cast(i);

D、cast(i);

标准答案:D

知识点解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建

立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这

个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就

可以省略实参,函数模板的实例就是一个函数的定义。所以木题答案为D。

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

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:因为一一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个

学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

3、有如下程序:#includeusingnamespacestd;intmain(){inta[6]==23,15,64,

33,40,58);intsbs2;sl=s2=a|0];for(inl*p=a-l;p<a+6;p++)

{if(sl>*p)sl=*p;if(s2<*p)s2=*p:)cout<<sl+s2<<endl;return0:)运行时

的输出结果是()。

A、23

B、58

C、64

D、79

标准答案:D

知识点解析:变量si和s2的初值都等于23,那么在执行第一次for循环时,次p的

值等于15,它小于23,所以把15赋给变量si;执行第二次for循环时,*p的直等

于64,它大于23,所以把64赋给变量s2;而数组a中a[2]后面的元素的值都大于

15,小于64,囚而变量si,s2的值不会再发生变化,最终值为15+64=79。

4、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结

点在第1层)

A、3

B、6

C、8

D、12

标准答案:D

知识点解析:根据二义树的性质.度为0的结点(即叶子结点)总是比度为2的结点

多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二

叉树为12层,每层只有一个结点。

5、有以下程序段:#include<iostream.h>#defineMAX(x»y)(x)>(y)?(x):(y)

voidmain(){inti,j,k;i=10;j=l5;k=MAX(i>j)*10;cout<<k<<end1;}

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

A、15

B、100

C、150

D、10

标准答案:C

知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>

y)?(x):(y)是当x大于y时取x,否则取y。当i=10,j=15时,"MAX(i,i)”的值为

15,所以“k=MAX(i,j)打0;”答案为:150。

6、有如卜程序:#includeusingnamespacestd;classPair{intm,n;public:

Pair(intj,intk):m(j),n(k)(|intget(){returnm;)intget()const{returnm+n;));

intmain(){Paira(3,5);constPairb(3,5);cout<

A、33

B、38

C、83

D、88

标准答案:B

知识点解析:在主函数中定义了类Pair的一个实例变量a,并分别对实例变量a的

数据成员m,n赋初值3,5。所以调用a.gel()成员函数时,输出3。又定义类

Pair的一个常实例变量b,并分别对实例变量b的数据成员m,n赋初值3,5。所

以调用成员函数b.gct()时,输出8。

7、算法的空间复杂度是指()。

A、算法在执行过程中所需要的计算机存储空间

B、算法所处理的数据量

C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的临时工作单元数

标准答案:A

知识点谕析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选

择A。

8、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>l;i-

=2)cout«'*';

A、24

B、25

C、26

D、50

标准答案:B

知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么

只有50到2之间的偶数才能输出“*”,所以总共输出25次。

9、有如下程序:#includeusingnamespacestd;classPart)public:Part(intx=0):

val(x){cout<

A、123321

B、213312

C、213

D、123123

标准答案:B

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

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

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

序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个

Part类的成员pl和p2,根据它们定义的顺序,先构造pl再构造p2。所以,首先被

构造的是pl(y),输出2;第二个被构造的是p2(x),输出1:最后调用析构函数,

输出val的值3;析构函数调用顺序与构造函数相反。故最后输出213312。

10、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于定义阶段任务

的是

A、软件设计

B、软件测试

C、可行性研究

D、数据库设计

标准答案:C

知识点解析:定义阶段包括:问题定义、可行性研究和需求分析。问题定义:要

求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题''然后提出关于

“系统目标与范围的说明“,提交用户审查和确认;可行性研究:一方面在于把待开

发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进

行可行性分析;需求分析:弄清用户对软件系统的全部需求,编写需求规格说明书

和初步的用户手册,提交评审。

II、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。

A、0

B、0.7

C>0.66667

D、0.66666667

标准答案:A

知识点解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数

据。

12、下列语句中,与语句“ln=(a>b?(l)>c?l:0):0);”的功能等价的是()。

A、if(a<=b)n=0;

B、if((a>b)Il(b>c))n=l;elsen=0;

C^if(a>b)if(b>c)n=l:elsen=0;elsen=0;

D、if(a>b)n=l;elseif(<=c)n=l;elseif(b>c)n=l;elsen=0;

标准答案:C

知识点解析:条件表达式(a>b?(b>c?l:0):0)的含义是,如果a>b成立,则此

表达式的值等于条件表达式(b>c?l:0)的值,否则其值等于0。而条件表达式(b>

c?l:0)的含义是,如果b>c成立,其值等于1,否则其值等于0。

13、在对函数进行原型声明时,下列语法成分中,不需要的是()。

A、函数返回类型

B、函数参数列表

C、函数名

D、函数体

标准答案:D

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

函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类

型。

14>有如下程序:#include<iostream>usingnamespacestd;void

fl(int&x){x++;)voidf2(intx){++x;)intmain(){intx=10>y=12;fl(x);f2(y);

cout<<x+y<<endl;return0:)运行这个程序的输出结果是()。

A、22

B、23

C、24

D、25

标准答案:B

知识点解析:在函数fHint&x){x++;}中,是对变量x的引用,所以当在main函

数中执行“fl(x);”语句后,变量x的值等于11,而在函数void的(intx){++x;}中,

对变量x的传递调用,在main函数中执行“f2(y);”语句后,变量y的值仍然等于

12,所以输出x+y的值等于23。

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

A、函数重载就是用相同的函数名定义多个函数

B、重载函数的参数列表必须不同

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

D、重载函数的参数可以带有默认值

标准答案:C

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

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

回值类型不做要求,返同值类型也不参与区分函数的重载形式.故选项C错误.

16、下列关于赋值运算符“=”重载的叙述中,正确的是()。

A、赋值运算符只能作为类的成员函数重载

B、默认的赋值运算符实现了“深层复制”功能

C、重载的赋值运算符函数有两个本类对象作为形参

D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符

标准答案:A

知识点解析:赋值运算符只能作为成员函数重载。

17、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。

A、内联函数

B、重教函数

C、递归函数

D、函数模板

标准答案:A

知识点解析:C++引入内联函数的原因是用它来取代C中的预处理宏函数。两者的

区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现

的。内联函数在调用时像宏函数一样展开,所以它没有一股函数的参数压栈和退栈

操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。

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

A、constinta;

B、constinta=10;

C、constint*point=0;

D、constint*point=newint(l0);

标准答案:A

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

19、在下列函数原型中,可以作为类从构造函数的是()。

A^voidAA(int);

B、intAAO;

C、AA(inl)const;

D、AA(int):

标准答案:D

知识点解析:此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,

它与类同名,并且没有返回值。选项A、B不符合要求。选项C中函数AA,会更

新对象的数据成员。

20、执行下列语句段后,输出字符“*”的个数是()。for(inli=50;i>l;I-=2)cout<

V,*,;

A、24

B、25

C、26

D、50

标准答案:B

知识点解析:此题考查的是for循环语句。执行循环语句,变量i从50递减,每次

减2,所以循环会执行25次,输出25个

21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assTest{public:

TestO{n+=2:}-TestO{n―=3;}staticintgetNumO{returnn;}private:staticint

n;};intTest::n=l;intmain())Test*p=newTest;deletep;cout<<"n="<

Test::getNumO<<end1;return0;)执行后的输出结果是()。

A、n=0

B、n=l

C、n=2

D^n=3

标准答案:A

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

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

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

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

A、派生类不能访问基类的保护成员

B、作为虚基类的类不能被实例化

C、派生类应当向基类的构造函数传递参数

D、虚函,数必须在派生类中重新实现

标准答案:c

知识点3析:此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员

都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选

项A错误:C++中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以

选项B错误;在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新

定义,故选项D错误。

23、下列选项中,与实现运行时多态性无关的是(),

A、重载函数

虚函数

C、指针

D、引用

标准答案:A

知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态

性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数

体现的。

24、有如下程序:#inc1ude<ioslream>usingnamespacestd;intmain()

{cout.cout.width(6);cout.cout<<123<<end1;return0;}

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

A、##123

B、123##

C、***123

D、123***

标准答案:A

知识点解析:此题考查的是I/O格式化输出。函数widlh(intn)设置输入输出宽度,

当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据宽度

大于设置的宽度时,仍充实际宽度输出;函数fill(charc)用来设置填充字符。

25、有如下类模板定义:template<typenameT>classBigNumber{longn:

public:BigNumber(Ti):n(i){}BigNumberoperator+(BigNumberb){return

BigNtmaber(n+b.n);)}已知bl、b2是,BigNumber的两个对象,则卜列表达式

中错误的是()。

A、bl+b2

B、bl+3

C、3+bl

D、3+3

标准答案:c

知识点》析:C++运算符的重载有两个方式,一种是做为成员函数,另一种是做为

友元函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的

参数都要写全。比如对加法的重载:成员方式为Coperalor

operator+(Coperator&op);,在调用的过程中我们可以理解为result=operator+(op);

友元方式为friendCopcratoroperator.(Copcrator&op1,Copcrator&op2);,在调用

的过程中我们可以理解为resull=operalor-(opl,op2);0对于本题题来说,整数3

与bl相加时,3是诚型,bl是BigNumberVT>型,int型不能和别的型做运算。

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

第3套

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

1、算法的有穷性是指

A、算法程序的运行时间是有限的

B、算法程序所处理的数据量是有限的

「、算法程序的长度是有限的

D、算法只能被有限的用户使用

标准答案:A

知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能

在执行有限个步骤之后终止。

2、下列叙述中正确的是

A、算法就是程序

B、设计算法时只需要考虑数据结构的设计

C、设计算法时只需要考虑结果的可靠性

D、以上三种说法都不对

标准答案:D

知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算

顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下

终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的

运算和操作,还要考虑算法的控制结构。

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

A(){cout<<,,A'^;}~A(){coutVV"〜A";}};classB:publicA{A*p;

public:B(){cout<<"B";p=newA;}~B(){cout<<"〜B";deletep;}};int

main(){Bobj;returnO:}执行这个程序的输出结果是()。

A、BAA〜A~B〜A

B、ABA~B~A〜A

C、BAA〜B〜A〜A

D、ABACA〜B〜A

标准答案:B

知识点解析:此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序

为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子

对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的

内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输

出B,p=newA再调用类A的构造函数输出A;析构函数的调用顺序和构造函数的

调用顺序相反。

4、在长度为n的有序线性表中进行二分查找,最切情况下需要比较的次数是

A、0(n)

B、O(n2)

C、O(log2n)

D、O(nlog2n)

标准答案:C

知识点解析:对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较

log2n次,而顺序查找需要比较n次。

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

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

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

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

D、以上都不正确

标准答案:A

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

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

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

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

A、公有成员和保护成员

B、公有成员

C、私有成员

D、保护成员

标准答案:C

知识点解析:本题考查3种继承方式,其中,基类的私有成员始终为基类私有。所

以派生类无法访问基类的私有成员。本题答案为C,

7、有如下程序#include#inckideusingnamespaceski;classMyClass{public:

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

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

A、ABX

B、ABXB

C、AXB

D、AXBB

标准答案:D

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

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

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

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

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

对象pl,输出字母B。

8、在结构化程序设计中,模块划分的原则是()。

A、各模块应包括尽量多的功能

B、各模块的规模应尽量大

C、各模块之间的联系应尽量紧密

D、模块内具有高内聚度、模块间具有低耦合度

标准答案:D

知识点解析:内聚性是对一个模块内部各个元素间彼此结合的紧密程度的度量。耦

合件是对模块间互相连重的紧密程度的度量「在结构化程序设计中,模块划分应遵

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

高软件模块的独立性。

9、下面不属于软件测试实施步骤的是()。

A、集成测试

B、回归测试

C、确认测试

D、单元测试

标准答案:B

知识点解析:软件测试实施的步骤有单元测试、集成测试和确认测试。

10、C++中的模板包括0。

A、对象模板和函数模板

B、对象模板和类模板

C、函数模板和类模板

D、变量模板和对象模板

标准答案:C

知识点解析:本题考查函数模板和类模板,所以答案为c。

11、下列关于继承的描述中,错误的是()。

A、析构函数不能被继承

B、派生类是基类的组合

C、派生类的成员除了它自己的成员外,还包含了它的基类的成员

D、派生类中继承的基类成员的访问权限到派生类保持不变

标准答案:D

知识点解析:派生类中继承的基类成员的访问权限到派生类会发生变化,例如:私

有继承时,派生类不能访问基类的成员,所以选项D)错误,其他选项均正确。

12、下列选项中,不属于数据库管理的是()。

A、数据库的建立

B、数据库的调整

C、数据库的监控

D、数据库的校对

标准答案:D

知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重

组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。

13、数据库设计中反映用户对数据要求的模式是

A、内模式

B、概念模式

C、外模式

D、设计模式

标准答案:C

知识点解析:概念模式,是由数据库设计者综合所有用户的数据,按照统一的观点

构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所

有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语

#(DataDescriptionLanguage,DDL)来描述、定义的,体现、反映了数据库系统的

整体观。外模式,对应于用户级,它是某个或某几个用户所看到的数据库的数据

视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,也

称为子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它

反映了用户对数据的要求。包含模式中允许特定用户使用的那部分数据,用户可以

通过外模式描述语言来:苗述、定义对应于用户的数据记录(外模式),也可以利用数

据操纵语言(DataManiptilalionLanguage,DML)对这些数据记录进行描述。内模

式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低

一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际

存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据

库的存储观。

14、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是

A、并

B、交

C、投影

D、笛卡儿乘积

标准答案:B

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

有序组所组成,记为Rns。形式定义如下:RAS={tGRAteS}=R-(R-S)o所以不改

变关系表中的属性个数,但能减少元组个数的是关系表之间的交操作。

15、已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则()。

A、FA必须定义在FB之前

B、FB必须定义在FA之前

C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

标准答案:D

知识点解析:在C++中,在调用任何函数之前,必须确保它已有原型说明。函数

原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本

题中,当函数FA调用FB时,函数FB可以定义在FA的后面,但是FB的原型必

须出现在FA的定义之前,因而选项D为正确答案,

16、有如卜程序:#include<iostream>usingnamespacestd;classPair{intm,n;

public:Pair(intj,intk):m(j),n(k){}intget(){returnm:}intget()const{return

m+n;)};intmain()(Paira(3,5);constPairb(3,5);cout<<a.get()<<

b.get();return0;}运行时的输出结果是()。

A、33

B、38

C、83

D、88

标准答案:B

知识点解析:在主函数中定义了类Pair的一个实例变量a,并分别对实例变量a的

数据成员m,n赋初值3,5o所以调用a.get()成员函数时,输出3。又定义类

Pair的一个常实例变量b,并分别对实例变量b的数据成员m,n赋初值3,5。所

以调用成员函数b.get。时,输出8。

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

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

A^a

B、AA,a

c、a{}

D^AA::a[}

标准答案:A

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

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

A、Fractionopcrator+(Fraction,Fraction);

B、Fractionoperator一(Fraction);

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

D、Fraction&opcrator+=(braction&,Fraction);

标准答案:c

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

函数重载。

19、有如卜程序:#includeusingnamespacestd;classtesl{private:inta;

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

test&tcst){a=test.a:cout+"copyconstructor"+cndl;}

lest(){Cout+"desliuctor,,+endl;});intmain(){testA(3);return0:}运行时输出

的结果是().

A、3

B、constructordestructor

C、copyconstructordestructor

D、3destructor

标准答案:D

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

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

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

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

用〜test。析构函数输出destructoro

20、下列关于运算符重载的叙述中,错误的是()。

A、有的运算符可以作为非成员函数重载

B、所有的运算符都可以通过重载而被赋予新的含义

C、不得为重载的运算符函数的参数设置默认值

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

标准答案:B

知识点解析:”运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造

新的运算符。除了.,.*,->*,::,?:这五个运算符以外,其他运算符都可

以重视

21、有如下程序:#includeusingnamespacestd;classVAC{public;intf()

const{return3;}intf(){return5;}};Intmain(){VACvl;constVACv2:cout<

A、53

B、35

C、55

D、33

标准答案:A

知识点解析:此题考查的是常成员函数的应用。VAC类中说明了两个函数,一个

是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象vl

调用的是普通函数,输出5;通过常对象V2调用的是常成员函数,输出3。

22、关于关键字class不Itypename,下列表述中正确的是()。

A、程序中的typename都可以替换为class

程序中的class都可以替换为typename

C、在模板形参表中只能用typename来声明参数的类型

D、在模板形参表中只能用class或typename来声明参数的类型

标准答案:A

知识点解析:此题考查的是class和typename两个关键字。关键字class除了能用

来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时

typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了

可以用【ypename和class声明虚拟类型参数外,还可以使用普通类型声明常规的

数,故选项C错误。

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

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

A、XVoperator*(XV,XV);

B、XV*(XV);

C>operator*(XV);

D、XVoperator*(XV);

标准答案:D

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

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

藏在参数表中。

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

第4套

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

1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入

栈,然后再依次出栈,则元素出栈的顺序是()。

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

标准答案:B

知识点解析:栈是按照“先进后出”或“后进先出''的原则组织数据的。所以出栈顺序

是EDCBA54321。

2、对下列二叉树进行前序遍历的结果是

A、DYBEAFCZX

B、YDEBFZXCA

C、ABDYECFXZ

D、ABCDEFXYZ

标准答案:C

知识点解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:

①防问根结点:②前序遍历左子树;③前序遍历右子树。可见,前序遍历二叉树

的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是

ABDYECFXZo

3、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法

A、快速排序

B、冒泡排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析•:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序

/2、快速排序n(n-l)/2、简单插入排序n(n-l)/2、希尔排序0(77)、简单选择

排序n(n-l)/2、堆排序O(nlog2n)。

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

A、确认测试

B、需求测试

C、验证测试

D、路径测试

标准答案:A

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

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

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

RST

ABCABCABC

a12d32a12

b21b•21

c31c3,1

d32

关系R和S通过某种操作得到,该操作为()。

A、选择

B、投影

C、交

D、并

标准答案:D

知识点解析:由关系T中的数据可以看出,其数据由关系R和S的数据组成。所

以关系T是由关系R和T通过并运算得到的。

6、下面属于系统软件的是

A、浏览器

B、数据库管理系统

C、人事管理系统

D、天气预报的叩p

标准答案:B

知识点解析:系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运

行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算

机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。有代表

性的系统软件有:操作系统、语言处理程序、数据库管理和辅助程序。

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

A、外模式

B、内模式

C、概念模式

D、逻辑模式

标准答案:B

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

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

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

8、在学生管理的关系数据库中,存取一个学生信息的数据单位是

A、文件

B、数据库

C、字段

D、记录

标准答案:D

知识点解析:本题考查关系数据库中,数据单位的相关概念。文件是指存储在外部

介质上的数据的集合。数据库是存储在计算机存储设备上,结构化的相关数据集

合。它不仅包括描述事物的数据本身,而且还包括相关事物之间的联系。在数据库

中,表的“行''称为"记录”,"列”称为“字段”。由此可得,题中存取一个学生信息的

数据单位为记录。

9^有如下程序:#include<iostrcain>usingnamespacestd;intmain(){void

function(doubleval);doubleval;funcdon(val);cout<<val;•return0;)void

function(doubleval){val=3:}编译运行这个程序将出现的情况是()。

A、编译出错,无法运行,

B、输出:3

C、输出:3.0

D、输出一个不确定的数

标准答案:D

知识点解析:此题考查的是函数参数的传递。C++语言中,函数在传递参数时,总

是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作

的任何操作都不会改变实参的值。

10、已知在一个类体中包含如下函数原型:VOLUMEoperator-

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

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

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

C、这是一个成员函数

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

标准答案:B

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

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

有const修饰的成员函数。

11、有如下程序:#inc1ude<iostream>#incIude<cstring>usingnamespacestd;

classXCF{inta;public:XCF(intaa=0):a(aa)(cout<<Hl";}

XCF(XCF&x){a=x.a:cout<,,2";}-XCF(){cout<<a:}intGeta()(return

a;));intmain(){XCFdl(5),(12(dl);XCF*pd=newXCF(8);coutVVpd—>

Geta();deletepd;return0:}运行时的输出结果是()。

A、1215588

B、1218855

C、12185

D、128512

标准答案:B

知识点解析:在这个程序中在建立对象dl(5)时,调用构造函数XCF(int

,,,,

aa=O):a(aa){cout<<!;),输出1;在建立d2(di)时,调用拷贝构造函

数XCF(XCF&x){a=x.a,coutVV"2";},输出2:在建立newXCF(8)对

象时,调用构造函数XCF(intaa=O):a(aa){cout<<,,r,;),输出1;语句

coutVVpd—〉Geta()的功能是输出8;语句deletepd;调用析构函数〜XCF(),输

出8;当退出程序时,分别释放对象d2、dl,输出55。

12、下列关于构造函数的描述中,错误的是()。

A、构造函数名与类名相同

B、构造函数可以有返回值

C、构造函数可以重载

D、每个类都有构造函数

标准答案:B

知识点解析:构造函数具有下面4个特殊的性质:构造函数的名字必须与类名相

同;构造函数不指定返回类型,它隐含有返回值,由系统内部使用;构造函数可以

有一个或多个参数。囚此构造函数可以重载;在创建对象时,系统会自动调用构造

函数。

13、为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是

()o

A、4-

B、=

C、«

D、++

标准答案:R

知识点解析:在C++中,=、口、()、一>以及所有的类型转换运算符只能作为

成员函数重载。

14、通过派生类的对象可直接访问其()。

A、公有继承基类的公有成员

B、公有继承基类的私有成员

C、私有继承基类的公有成员

D、私有继承基类的私有成员

标准答案:A

知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误

的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类

中进行访问,而通过派生类的对象不能访问,所以选项C也是错误的。基类的公

有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。

15^有如下程序;#inc1ude<iostream>usingnamespacestd;classB{public:

virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){count<<

"D";});voidfunl(B*ptr){ptr—>show();)voidfun2(B&ref){rer.show();}void

fun3(Bb){b.show();)intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);

return0;}程序的输出结果是()。

A、BBB

B、BBD

C、DBB

D、DBD

标准答案:C

知识点解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关

键字,即可把函数声明为虚函数:在C++中,一个基类指针可以用于指向它的派

生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对

象类的那个重定义版本。此题中,funlO和fun2()的形参分别是基类的指针和引

用,给funl()传入的实参是指向派生类对象的指针p,funl()将调用D类中的

show。输出字符,D:给fun2()出入的实参是基类对象,fun2()调用类B中的show。

输出字符'B,:fum3()由于形参是基类对象,调用的始终都是基类的show。,输出字

符'BL故最终输出结果是DBB。

16、运算符重载时不需要保持的性质是()。

A、操作数个数

B、操作数类型

C、优先级

D、结合性

标准答案:B

知识点解析:运算符重我应该体现为原有运算符的功能在新的数据类型上的延伸。

重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。

17、当派生类继承一个基类时•,默认的继承方式为()。

A、Public

B、protected

C、private

D、不确定

标准答案:C

知识点解析:派生类继承一个基类时,默认的继承方式为private。

18、若有如下类定义:classB{voidfunl(){)protected:doublevarl;public:void

fun2(){}};classD:publicB{protected:voidfun3(){}};已知obj是类D的对

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

A、obj.fun1();

B、obj.varl

C、obj.fun2();

D、obj.fun3();

标准答案:C

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

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

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

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

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

成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从B类继承的

fun2()为公有属性,故选C选项。

19、有如卜程序#includeusingnamespacestd;classA{public:virtualvoid

funcl(){cout«"Ar,;}voidfunc2(){cout«"A2";));classB:publicA{public:

voidfuncl(){cout«"Brr:)voidfunc2(){cout«"B2";));intmain(){A*p=nev/

B;p->funcl();p->func2();return0;}运行此程序,屏幕上将显示输出()。

A、B1B2

B、A1A2

C^B1A2

D、A1B2

标准答案:C

知识点解析:此题考查的是虚函数的概念。此题中,funcl是虚函数,func2是一般

成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句

A*p=ncwB:定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该

指针。调用funcl时,运行的是派生类的版本,而通过该指针调用func2运行的是

基类的版木。所以程序运行的最后输出是:BlA2o

20、下列控制对齐方式的操作符中,错误的是()。

A、internal

R、center

C>left

D、right

标准答案:B

知识点解析:对齐方式的控制操作符】eft的含义是在设定的宽度内左对齐输出,右

端填已设定的填充字符;righl(此为默认设置)在设定的宽度内右对齐输出:iniernal

在设定的宽度内右对齐输出,但若有符号(一或+),符号置于最左端。

21、语句o包reamf(''SALARY.DAT^,ios_base::app);的功能是建立流对象

f,并试图打开文件SALARY.DAT与f关底,而且()。

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

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

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

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

标准答案:B

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

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

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

第5套

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

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

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

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

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

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

标准答案:D

知识点解析:如果派生类私有继承基类,不能访问基类中的私有成员,所以A)、

温馨提示

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

评论

0/150

提交评论