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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷132

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

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

A、算法的时间复杂度与算法程序中的语句条数成正比

R、算法的时间复杂度与计竟机的运行速度有关

C、算法的时间复杂度与运行算法时特定的输入有关

D、算法的时间复杂度与算法程序编制者的水平有关

标准答案:C

知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。为了能够比较

客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的

计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多

细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的

工作量。算法所执行的基本运算次数还与问题的规模有关;对应一个固定的规模,

算法所执行的基本运算次数还可能与特定的输入有关。故本题答案为C选项。

2、下列各排序法中,最坏情况下的时间复杂度最低的是()。

A、希尔排序

B、快速排序

C、堆排序

D、冒泡排序

标准答案:C

知识点解析:堆排序最坏情况时间下的时间复杂度为O(nlog2n);希尔排序最坏情

况时间下的时间复杂度为5);快速排序、冒泡排序最坏情况时间下的时间复

杂度为0(f)。故本题答案为C选项。

3、设栈的存储空间为S(I:50),初始状态为lop=51。现经过一系列正常的入栈与

退栈操作后,top=50,则栈中的元素个数为()。

A、1

B、0

C、50

D、49

标准答案:A

知识点解析:枝是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进

行。入栈运算即在栈顶位置插入一个新元素,退栈运算即取出栈顶元素赋予指定变

量。栈为空时,栈顶指针top=0,经过入栈和退栈运算,指针始终指向栈顶元素。

初始状态为top=510当lop=50时,则栈中S(50:51)存储着元素,51-50=1,元素

个数为1。故本题答案为A选项。

4、某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子

结点数为()。

A、不存在这样的二叉树

B、200

C、198

D、199

标准答案:B

知识点解析:根据二叉树政基本性质,对任何一棵二叉树,度为O的结点(即叶子

结点)总是比度为2的结点多一个。题目中度为2的结点为199个,则叶子结点为

199+1=200o故本题答案为B选项。

5、结构化程序的三种基本结构是()。

A、递归、迭代和回溯

B、过程、函数和子程序

C、顺序、选择和循环

D、调用、返同和选择

标准答案:C

知识点解析:仅使用顺序、选择、循环三种基木控制结构就足以表达出各种其他形

式结构的程序设计方法。故本题答案为C选项。

6、某系统结构图如下图所示(nN5)该系

统结构图的最大扇出数是

A、n

B、3

C、2

D、n+1

标准答案:A

知识2解析:模块的扇出是指本模块的直属下层模块的个数,或者说是由一个模块

直接调用的其他模块数。题干中某系统为一个模块,其扇出数目为n(应5),功能2

模块扇出数为3,功能n模块扇出数为2,则该系统结构图的最大扇出数是n。故

本题答案为A选项。

7、软件需求规格说明的内容不包括()。

A、运行环境

B、软件的主要功能

C、软件的性能

D、算法详细设计

标准答案:D

知识点解析•:软件需求规格说明应重点描述软件的目标,软件的功能需求、性能需

求、外部接口、属性及约束条件等。功能需求是软件需求规格说明,给出软件要执

行什么功能的详尽描述。性能需求是指定量的描述软件系统应满足的具体性能需

求,即各种软件功能的速度、响应时间、恢复时间。外部接口指软件如何与人、系

统的硬件及其他硬件和其他软件进行交互。属性是指与软件有关的质量属性,如正

确性、可用性、可靠性、安全性、可维护性等。约束条件包括影响软件实现的各种

设冲约束,如使用的标准、编程语言、数据库完整性方针、资源限制、运行环境等

方面的要求。故本题答案为D选项。

8、在数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是

()。

A、人工管理阶段

B、文件系统阶段

C、文件系统阶段和数据库阶段

D、人工管理阶段和文件系统阶段

标准答案:A

知识点解析:数据库管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库

系统阶段。人工管理阶段没有专门的软件对数据进行管理。故本题答案为A选

项。

9、建立表示学生选修课程活动的实体联系模型,其中的两个实体分别是()。

A、课程和课程号

B、学生和课程

C、学生和学号

D、课程和成绩

标准答案:B

知识点解析:实体是概念世界中的基本单位,是客观存在并可以相互区别的事物。

要建立表示学生选修课程活动的实体联系模型,能互.相区别并可以联系起来的实体

是学生和课程。故本题答案为B选项。

10、定义学生、教师和课程的关系模式S(S#,Sn,Sd,De,SA)(其属性分别为

学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课

程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩),则

该关系为()。

A、第二范式

B、第一范式

C、第三范式

D、BCNF范式

标准答案:A

知识点解析:范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须

满足一定的要求,满足不同程度要求的为不同范式。目前关系数据库有六种范式:

第一范式(1NF)、第二范式QNF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四

范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式

的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说

来,数据库只需满足第三范式(3NF)就行了。第一范式:主属性(主键)不为空且不

重复,字段不可再分(存在非主属性对主属性的部分依赖)。第二范式:如果关系模

式是第一范式,每个非主属性都没有对主键的部分依赖。第三范式:如果关系模

式是第二范式,没有非主属性对主犍的传递依赖和部分依赖。BCNF范式:所有

属性都不传递依赖于关系除任何候选键。题目中关系模式满足第二范式,但在关

系模式s中,学生所在系依赖于学号(S#-Sd),但系本身确定了系主任(sd-Dc),

存在传递依赖,不满足第三范式。故本题答案为A选项。

11、下列语句中,能够进行正确赋值的是()。

A、charstr=,abcde,;

B、charstr="abcde";

C、charstr[4]:"abode";

D、charstr[6]="abcde";

标准答案:D

知识点解析:宇符常量是单个宇符,单引号中只能有1个宇符,选项A错误;

字符串常量不能赋给字符变量,选项B错误;常量字符串“abede”包含5个字符和

1个空字符,\0,,需要6个字节存放,选项C错误;选项D正确。本题答案为D

选项。

12、有如下枚举类型定义:enumDAY{SUN.MON=10.TUE,WED,THU,

FRI=20,SAT):执行下列程序段for(inti=0;iVTHU;i++){coutVV匕YV

endl;}输出字符3的个数是()。

A、13

B、16

C、19

D、22

标准答案:A

知识点解析:枚举类型中,如果当前枚举成员的值显示初始化,那么后一个枚举成

员的值比当前枚举成员的直大1,所以枚举类型DAY中,SUN的值为0,M0N的

值显示为10,TUE的值为11,WED的值为12,THU的值为13,FRI的值显示初

始化为20,SAT的值为21,所以for循环会执行13次,输出13个字符本题

答案为A选项。

13、若对数组进行初始化,下列选项中,错误的是()。

A、charname[3][10]={"Tracy'\"Lamar\"McGrady"):

B、charteam|J]="Rockets";

C、doublescore|I={25.6,32.1,28.0);

D、intmatrix[3][3]={l,2,3,4,5,6,7,8,9);

标准答案:B

知识点解析:c类型字符串的结尾必须有空字符、(T,所以常量字符串“Rockets”包

含7个字符和1个空字符,\0,,所以需要8个字节空间来存放,选项B错误。本

题答案为B选项。

14、下列有关指针的操作中,正确的是()。

A、inta=10;void*ptr=&a;cout<<*(ptr);

B、int*ptr=newint[10];deleteptr;

C^intArray[4];*(Array+3)=10;

D、int*ptr=newint*l!OJ;

标准答案:C

知识点解析:变量a是整型,所以地址为整型指针,不能赋给void*类型,选项A

错误;使用new分配数组空间时,必须使用delete。来释放数组空间,选项B错

误:newint*[10]是分配了10个整型指针数组,数组的每个元素都是整型指针,它

无法赋给整型指针变量pir,选项D错误。本题答案为C选项。

15、有如下程序:#include<iostream>usingnamespacestd;intmain(){inti=l,

s=0:whi!e(s<30){s+=i*i:i++;}cout<<s<<endl:rcturnO;}运行后的输出

结果是()。

A、32

B、30

C、31

D、55

标准答案:B

知识点解析:程序通过while循环,将s累加为i的平方,每次循环后将i自增1,

所以s的结果为:1*1+2*2+3*3+...,直到s小于30,由1+4+9+16=30,此时

while循环条件不满足,退出循环,输出s的值为30。本题答案为B选项。

16、若已经声明了函数原型“voidfUn(inta,doubleb=0.0)”,则下列重载函数声明

中正确的是()。

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

B、intfun(inta,doubleB);

C、voidfun(doublea,intB);

D、boolfun(inta,doubleb=0.0);

标准答案:C

知识》解析:函数不能仅仅基于不同的返回类型而实现重载,选项B中只有返回

值不同,所以选项B、D错误;出现在相同作用域中的两个函数,如果具有相同的

名字而形参表不同,则称为重载函数,形参表的不同,是指形参个数或类型不同;

默认实参并没有改变形参的类型和个数,所以仅仅基干默认实参,也不能实现函数

重载,选项A错误:选项C中形参对应的类型不同;本题答案为C选项。

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

A、运算符既可以重载为类成员函数,也可以重载为非成员函数

B、C++中运算符重载只能重载已有的运算符

C、双目运算符的重载函数的形参必须有两个

D、运算符重载不能改变运算符的优先级

标准答案:C

知识点解析:运算符既可以重载为类成员函数,也可以重载为非成员函数,选项A

正确;C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载,

选项B正确;重载不能改变运算符的优先级别,选项D正确;重载不能改变运算

符操作数的个数,所以双目运算符必须具有两个操作数,但不需要重载双目运算符

的函数有两个形参,如果将双目运算符重载为类成员函数,第一操作数可以是类对

象,所以函数只需要一个形参就可以了,选项C错误。本题答案为C选项。

18、下列选项中不能用于区分重载函数的是()。

A、形参的个数

B、形参的类型

C、函数的返回值类型

D、常函数关键字const

标准答案:C

知识点解析:出现在相同作用域中的两个函数,如果具有相同的名字而形参表不

同,则称这两个函数为重载函数,形参表的不同包括形参个数不同和形参类型不

同;另外const定义的常函数与相同名字且相同形参表的普通函数可以重载;但函

数不能仅仅基于不同的返叵类型而实现重载,选项C错误。本题答案为C选项。

19、计算数列第n项的函数定义如F:intfa(intn){if(n==l)retuml;else

rcturn3*fa(n-l)+2;}若执行函数调用表达式fa(4)时,返回的函数值为()。

A、53

B、17

C、23

D、49

标准答案:A

知识点解析:题意中fa()函数是一个递归函数,当参数n大于1时,函数返回值为

3*fa(n-l)+2,当n等于1时,函数返回值为I,所以

fa(4)=3*fa(3)+2=3*(3*fa(2)+2)+2=3*(3*(3*fa(l)+2)+2)+2=3*(3*(3+2)+2)+2=53。本题

答案为A选项。

20、有如下程序:#include<iostream>usingnamespacesid;inifun(charx,char

y){if(x>y)returnx:returny;)intmain(){inta(9),b(8),c(7);cout<<

fun(fun(a,b),fun(b,c));returnO:}运行后的输出结果是()。

A、8

B、9

C、7

D、函数倜用出错

标准答案:B

知识点解析:程序中,fun。函数的作用是将形参x、y中的较大值作为函数值返

回;main。函数首先使用直接初始化方式,初始化a的值为9,b的值为8,c的值

为7,然后调用函数:fun(fun(a,b),fun(b,c));并将返回值输出,由于a>b,b

>c,所以fun(fun(a,b)»fun(b»c))等价于:fun(a,b),也就等价于a。本题答案

为B选项。

21、有如卜,程序:#include<iostream>usingnamespacestd;doubleadd(double

a,doubleb,doublec=l){returna+b+c:}intmain()intresult=add(2,3):cout<

<result<<endl:retumO;}运行后的输出结果是()。

A、3

B、5

C、6

D、编译出错

标准答案:C

知识点解析:题意中,add。函数接收3个double类型的参数,最后一个形参c具

有默认值1,函数将三个参数相加,返回相加的结果;main。函数中,调用add。函

数,传入两个参数,所以形参c使用默认值1,对应参数的值为:2,3,1,函数

将a、b、c转换为double类型后,相加,并将结果6.0作为函数值返回,返回值

转换为im赋给rcsuk,最终输出的值。本题答案为C选项。

22、有如下程序:#include<iostrcani>usingnamespacestd;classclock{public:

clock():seeonds(0){};clock&:operator++(){this->seconds++:retum*this:}

voiddisplayO{cout<<this->seconds<<,\)private:intsecond8;|;int

main(){clockc:++c:c.displayO;(++(++c)).displayO:c.displayO;

returnO;}运行后的输出结果是()。

Ax132

B、133

C、123

D、122

标准答案:B

知识点解析:题意中,clock类重载了前缀增量运算符“++”,前缀增量运算符“++”

函数中,首先将成员seconds自增1,然后返回对象本身°main。函数中,首先定

义clock类对象c,使用clock类的默认构造函数,将成员seconds初始化为0,然

后调用前缀自增运算符完成seconds的增1操作,再返回c本身,所以此时

c.seconds的值为1,调用display。输出值为1;再连续两次调用c的自增运算

符,完成seconds的两次增1操作,此时c.seconds的值为3,再调用display。输

出值为3;最后再次调用display。函数输出3,所以本题输出:133。本题答案为B

选项。

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

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

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

C、构造函数可以重载

D、每个类都有构造函数

标准答案:B

知识点解析:构造函数的名字和类的名字相同,选项A正确;构造函数没有返回

值,不能指定返回类型,选项B错误;构造函数可以被重载,选项C正确;每个

类都有构造函数,如果类定义中不提供任何构造函数,那么编译器会在需要时,自

动生成一个构造函数,选项D正确。本题答案为B选项。

24、下列关于this指针的叙述中,错误的是()。

A、this指针只能在类的非静态成员函数中使用

B、this指针存储着对象的地址

C、Ihis指针不需要显式定义

D、在构造函数中不能使用this指针

标准答案:D

知识点解析:静态数据成员和静态成员函数不属于任何对象,所以成员国数没有

this形参,this指针只能在类的非静态成员函数中使用,而不能在静态成员函数中

使用,选项A正确;this指针是指向该类对象的一个指针,存放该对象的地址,由

编译器隐含地定义,成员函数的函数体可以显示的使用ihis指针,但不是必须这么

做,选项B、C正确;构造函数属丁类的非静态成员函数,也可以使用山i、指针,

选项D错误。本题答案为D选项。

25、当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派

生类的()。

A、公有成员

B、私有成员

C、保护成员

D、友元

标准答案:B

知识点解析:C++中,对于公有继承,基类成员保持自己的访问级别:基类的

public成员为派生类的public成员,基类的protected成员为派生类的protected成

员,基类private成员对派生类不可见,所以:在公有继承中,基类中的公有成员

对派生类对象可见,基类中的私有成员对派生类对象不可见;对于私有继承,基类

的public和protected成员在派生类中为private成员,基类的private成员对派生类

不可见,选项B正确。本题答案为B选项。

26、下列关于C++类的叙述中,错误的是()。

A、类与类之间可以互为友元

B、类用于描述事物的属性和对事物的操作

C、类与类D间不能有组合关系

D、类与类之间可以通过封装而具有相对独立性

标准答案:C

知识点解析:友元机制允许一个类将对其非公有成员的访问权授予指定的函数或

类,类和类之间可以互为友元关系,选项A正确;类代表某一种事物(对象)的共性

和特征,用于描述事物的属性(数据成员)和对事物的操作(成员函数),选项B正

确:类和类之间可以通过封装而具有相对独立性,选项D正确;类和类之间的关

系有:继承、实现、依赖、关联、组合、聚合等,选项C错误。本题答案为C选

项。

27、已知类XX中声明了如下的公有虚函数:virtualvoidf()const;XX的派生类

YY重定义了这个虚函数,XX和YY都有默认的构造函数,且有如下定义:YY

YY:XXxx,*px=&xx,&rx=Yyy,*pp=&yy;则下列对函数f的调用中,属于

非多态调用的是()。

A、px->f()

B、rx.f()

C、xx.f()

D、pp->f()

标准答案:C

知识点解析•:C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;

必须通过基类类型的引用或指针进行函数调用。题意中f[)函数是虚函数,满足条

件之一,所以只需要看调用对象是引用或指针。px是XX类型的指针,通过px调

用f()函数,满足多态性,选项A正确;rx是XX类型的引用,通过rx调用f()函

数,满足多态性,选项B正确;pp是XX类型的指针,通过pp调用f()函数,满足

多态性,选项D正确;xx是XX类型的对象,通过xx调用f()函数,不满足多态

性,选项C错误;本题答案为C选项。

28、有如下类定义:classPiano{public:intGetPrice()const;private:int

price;};若要在类体外定义常人员函数GelPrice,下列选项由正确的是()。

ANintGctPrice(){returnprice;}

B、intGetPrice()const{returnprice;}

C、intPiano::Ge(Price(){returnprice;}

D、intPiano::GetPrice()const{returnprice;}

标准答案:D

知识点解析:首先,题意需要定义常成员函数GetPriceO,所以需要在函数定义体

的大括号前、形参表的小括号后使用const关键字,选项A、C错误;另外由于需

要在类定义外定义成员函数,所以需要在函数名GelPriceO前,给出类名Piano的

这个限定名,限定作用域在Piano中,选项B错误。本题答案为D选项。

29、有如卜.程序:#include<iostream>usingnamespacestd;class

Apartment{public:Apartment(intRum=2):bedroom(num){cout<<bedroom:}

private:in(bedroom;};intmain(){ApartmentAlice,Bill(3),Twins[21;

rcturnO:}i云行时的输出结果为()。

A、222

B、232

C、2322

D、2232

标准答案:C

知识点解析:Apartment类提供了一个默认构造函数,形参默认值为2,所以

main。函数中Aparlment类对象的构造都是使用该默认构造函数,其中Alice在构

造时,参数使用默认值2,所以构造函数中的语句输出2:Bill在构造时,参数传

入3,所以输出3;Twins数组中的两个元素都是用默认参数2,所以调用两次默认

构造函数,输出22,所以本例输出:2322。本题答案为C选项。

30、有如下类定义;classGirl;classDov{public;Boy(doubleh);void

Show(constGid&g);voidPrint()const;private:doubleheight;};class

Girl{friendclassBoy;friendvoidDisplay(coflstGirl&):public:Girl(doubleh);

private:doubleheight;);下列叙述中,错误的是()。

A、类Boy是类Girl的友元类

B、函数Display是类Girl的友元函数

C、类Boy的成员函数Prini是类Girl的友元函数

D、类Boy的成员函数Show中不能访问类Girl的私有成员height

标准答案:D

知识点解析:由题意可知,Girl类的定义体中,定义友元类Boy、友元函数

Display(conslGirl&g),所以选项A、B正确;由TBoy是Girl的友元类,所以Boy

的成员函数都属于Girl类的友元函数,Boy的成员函数Show。是可以访问GiH的

私有成员height的,选项C正确;本题答案为D选项。

31、有如下程序:#include<iostream>#include<string>usingnamespacestd;

classBedroom{public:Bcdroom(ints=12):size(s){cout<<size;}private:int

size;};classApartment{public:Apartment(intsi»ints2,ints3):b2(s2)>

bl(sl),size(s3){cout<<size;}private:intsize;Bedroomb1,b2;};int

main(){Apartment*p=newApartment(12,18,75);deletep;returnO:}运行时的

输出结果是()。

A、121875

B、181275

C、751218

D、751812

标准答案:A

知以点解析:C++的构造函数初始化列表中,成员被初始化的次序就是定义成员的

次序。main()函数中,使用new运算符构造Apartment类的对象,将构造的对象指

针赋给p指针;在构造Apartment对象时,由于Apartment类的成员定义顺序为:

size、bl、b2,Apartment对象的构造过程为:①初始化列表中首先初始化size为

s3(75)o②初始化bl,调用Bedroom构造函数,使用参数sl(12),初始化bl对象

中的size,然后执行Bedroom构造函数的函数体,输出bl.sizc(12)o③最后初始

化b2,调用Bedroom构造函数,使用参数s2(18),初始化b2对象中的size,再执

行凶数体,输出b2.size。3)。④等Apanmen【刈象的初始化列表执行结束后,再

执行Apartment类的构造函数体,输出A。partment对象中的size(75)。综上程序

输出:121875。本题答案为A选项。

32、有如下类定义:classPiano{public://纯虚函数Type}:

下列选项中,能够正确表示纯虚函数Type的是()。

A、voidTypc()virtual;

B、virtualvoidTvpe();

C、virtualvoidType()=0;

D、virtualvoidType()=0;

标准答案:C

知识点解析:C++中,类的纯虚函数是在成员函数形参表后面加上“=0”来表示,选

项C正确。本题答案为C选项。

33、有如下程序:#include<iostream>#include<string>usingnamespacestd;

classApple{public:Apple(){cou(<<,A,;}};classIPhone:public

Applc{public:IPhone():ver(4){cout<<'r;}IPhone(intn):ver(n){cout<<n;)

private:intver;}:intmain(){IPhoneEIlen(6),Jack;return0:}运行时的输出

结果是()。

A、61

B、A6I

C、AIAI

D、A6AI

标准答案:D

知识点解析:main。函数中构造两个Iphone对象:①首先构造对象Ellen,调用构

造函数:Iphone(intn),传入参数6,金执行初始化列表时,首先调用基类Apple的

默认构造函数,输出字符'A,,然后初始化派生类中的vei■为6,再执行派生类构造

函数的函数体:输出6。②接着构造对象Jack,调用默认构造函数:Iphone。,执

行初始化列表时,首先调用基类Apple的默认构造函数,输出字符然后初始

化派生类中的ver为4,再执行派生类默认构造函数的函数体:输出T。综上,程

序输出:A6AE本题答案为D选项°

34、有如下程序:#includc<iostrcam>#includc<string>usingnamespacestd:

classPublication!public:Publicalion(slring『"Unknown"):name(n){)conststring

getName()const{returnname:)virtualconststring

getType()const{return"Unknown":}private:stringname;};classBook:

publicPublica(ion{public:Book(stringname):Publicationiname){}virtualconst

stringgetType()const{return"Book";}};voidsho\vPublication(Publication&p){cout

<<p.getType()<<":"<<P.getName()<<end1;}intmain(){Book

book("C++");showPublication(book);returnO;}运行时的输出结果是()。

A、Book:C++

B、Book:Unknown

C^Unknown:C++

D、Unknown:Unknown

标准答案:A

知识点解析:C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;

必须通过基类类型的引用或指针进行函数调用。题意的main。函数中首先定义一

个。Book类对象,对象名为book,在构造book对象时,程序过程如下:首先调

用Book类的构造函数.传入参数“C++”,在构造函数执行函数体前,再调用基类

Publication的默认构造函数:传入字符串“C++”,基类构造函数在成员初始化列表

中,使用传入的参数“C++”为name赋值;此时继承于基类的成员:name存放字符

串“C++”。然后main。函数调用showPublication()函数,传入book对象:

showPubhcalion。函数接收Publication类对象的引用p,然后调用p.getType()和

p.geiName。输出。由于gelType。成员函数属于虚函数,p属于基类对象而引用,

所以通过p调用getTypcO函数满足多态调用,执行p实际引用对象类型的

getType(),即Book类的gelType。,输出:“Book":而getName()不是成员函数,

所以不满足多态调用,执行基类的成员函数getName。,输出name:“C++”。综

上,程序输出:Book:C++。本题答案为A选项。

35、有如下程序:#include<iostream>#include<cmath>usingnamespacestd;

classPower{//暴类doutfiebase;//底数doubleexpo://指数public:

Power(doublev,doublep):base(v),expo(p){)doublegetBase()const{returnbase;)

doublegclExpoiiciil()coiisl{rcluinexpo;}}:classSquare:publicPowci{public:

Square(doublex):Power(x,2.0){}};classCubic:publicPower{public:

Cubic(doublex):Po\ver(x,3.0){});ostream&operator<<(ostream&os,

cons(Power&p){os<<pow():returnos;}intmain(){cout<<

Square(3)<<Cubic(5);retumO;}运行后的输出结果是9125,则下划线处缺失的

部分是()。

A、p.base,p.expo

B、p.expo»p.base

C、p.getBase(),p.getExponcnt()

D、p.getExponent(),p.getBase()

标准答案:c

知识点解析:题意中,Power类是基类,包括两个数据成员:底数base、指数

expo;Square类继承Power类,构造函数将参数x赋给base,将2.0赋给expo;

Cubic类继承Power类,构造函数将参数x赋给base,将3.0赋给expo。重瓢

V”运算符函数中,调用了pow()函数,它接收两个参数:第一参数是底数,第二

参数是指数,返回结果为两者的幕运算。根据程序运行结果:9125,以及函数调用

传入Square的参数为3,Cubic的参数为5,所以可知:首先输出3的平方,再输

出5的3次方,由此推断:使用输出运算符<<调用powO函数时,第一次接受的

参数为:3,2;第二次接受的参数为5,3,由于类对象的成员默认访问权限是

private,所以需要使用成员运算符获取:base和exp。,所以横线处缺失的代码为:

p.getBase(),p.getExponent()o本题答案为为C还项。

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

A、类模板实例化时,编译器会根据给出的模板实参生成一个类

B、类模板中的成员函数没有返回值

C、类模板的主要作用是生成抽象类

D、类模板中的数据成员具有同样类型

标准答案:A

知识点解析:类模板在引用实际模板类类型时实例化,编译器会根据给出的模板实

参生成一个类的定义,选项A正确:类模板中的成员函数同普通类的成员函数一

样,也可以有返回值,返叵值类型可以是模板形参类型,也可以是具体类型,选项

B错误;类模板的主要作用是生成类,而不是生成抽象类,选项C错误;类模板中

的成员类型可以是模板形参类型,也可以是具体类型,选项D错误。本题答案为

A选项。

37、下列关于C++输入/输出流的叙述中,错误的是()。

A、输入/输出流提供了对各种外部设备的抽象

B、cout,cerr,clog默认情况下都会输出到系统的标准输出设备

C、C++输入/输出流类库中含有一组类模板

D、使用输入/输出流必须显式用open函数打开文件

标准答案:D

知识点解析:C++输入/输出流提供了对各种外部设备的抽象,选项A正确;

slrcain类定义厂3个输出流对象:cuul、ceri、clog,它们都属丁标准输出流,默

认情况下都会输出到系统佗标准输出设备(显示器)上,选项B正确;C++输入/输

出流包括:对标准设备的输入/输出,文件对象的输入/输出和对内存指定空间的

输入/输出,只有文件对象的输入/输出需要显示的用open。函数打开文件,选项

D错误。本题答案为D选项。

38、下列选项中,只能用于处理文件输入的是()。

A、ostrcam

B、fstream

C、ofstream

D、ifstream

标准答案:D

知识点解析:ostream足通用输出,流和其他输出流的基类,不能处理文件输入,

选项A错误;fstream是输入输出文件类,可以处理文件的输出或输入,选项B错

误;ofsiream是输出文件流类,不能处理文件的输入,选项C错误;ifsiream是输

入文件流类,只能用来处理文件输入,选项D正确。本题答案为D选项。

39、已知函数模板定义如下:template<typenameT>Tmax(Tx,Ty){returnx>

y?x:y;}下列叙述中,错误的是()。

A、此函数模板有一个模板形参

B、此馍板实参类型必须可以用运算符>比较大小

C、此函数模板实例化时,模板实参只能是基本类型

D、编泽时遇到刈max的调用表达式,将生成模板实例

标准答案:C

知识点解析:题意中的函数模板有一个模板形参T,它是类型形参,选项A正

确;模板函数max。的两个参数x、y的类型都是T,在函数体内需要对x、y使用

进行大小比较,所以模板实参类型必须支持用运算符比较大小,选项B正

确;只要模板实参类型支持运算符”比较大小和赋值运算,那么即使T类型是复

杂类型,该模板也是可以实例化的,选项C错误;使用函数模板,编译器在编译

过程中,当遇到对max()函数的调用表达式时,编译器通常会推断出模板实参,然

后进行模板实例化,生成模板实例,选项D正确。本题答案为C选项。

二、基本操作题(本题共[题,每题7.0分,共]分。)

40、请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工

程中包含程序文件main.cpp,其中有类Door(“门”)和主函数main的定义。程序

中位于每个“//ERROR****found****"之后的一行语句有错误,请加以改正。改

正后程序的输出结果应为:打开503号门…门是锁着的,打不开。打开503号门

的锁…锁开了。打开503号门…门打开了。打开503号门…门是开着的,无须再

开门。锁上503号门…先关门…门锁上了。注意:只修改每个“//

ERROR**********ft)und***********卜'的那一行,不要改动程序中的其他内容。

#include<iostream>usingnamespacestd:classDoor{intnum://门号bool

closed;//true表示门关着boollocked;//true表示门锁着public:Door(int

num){//ERROR**********found**********sum=this->num:

closed=locked=true:}boolisClosed()const{returnclosed;}//门关着时返回

true,否则返I可falseboolisOpened()consl{return!closed;)//门开着时返回true,

否则返回falseboolisLocked()const{returnlocked;}//门锁着时返回true,否则

返回falseboolisUnlocked()const{returnHocked;)//门未锁时返回true,否则返

回falsevoidopen。{//开门coulVVendlVV"打开"VVnumVV"号门…”;//

ERROR**********found**a*******if(closed)coutVV”门是开着的,无须再开

门。elseif(k)cked)coutVV门是锁着的,打不开。";else{closed二false;cout

VV"门打开了。":}}voidclose(){//关门coutVVendlVV"关上"VVnumV

V"号门…";if(closed)coutVV"门是关着的,无须再关门°";else{closed=true;

coul<V”门关上了。”;)]//ERROR**********found**********void

lock()const{//锁门coutVVendlVV"锁上"VVhumVV"号门…";if(lockcd)

coutVV"门是锁着的,无须再锁门。":else{if(!closed){coutVV"先关门…";

closed=true;)locked=true;coutVV”门锁上了。";})voidunlock(){//开锁

coutVVendlVV"开“VVHumVV”号门的锁…”;if(!locked)coutVV”门没有上

锁,无须再开锁。";else{locked=false;coutVV"锁开了。":}}};int

main()(Doordoor(503);door.open();door.unlock();door.open();

door.opcn();door.lock():rcturnO;}

标准答案:(l)lhis->hum=num:(2)if(!closed)(3)voidlock(){

知识点解析:本题考杳Door类,其中涉及bool型私有成员及成员函数、构造函数

和其他成员函数。在构造函数中this指针指向的是当前类,因此当参数名与要赋值

的成员名称一样时,使用this指针来区别。(1)主要考查考生对ihis指针的掌握,

在构造函数中this指针指向的是当前类,因此要给num赋值使用语句this-〉

num=num:完成。(2)主要考查考生对if语句的掌握,先看类的私有成员中关于

closed的定义:boolclosed;//true表示门关着。再看下一条语句:cout<<,,fJ

是开着的,无须再开门。”;。即满足条件时就会输出:门是开着的,无须再开

门。因此if括号内应该是!closed。(3)主要考查考生对const函数的掌握,lock函数

体中存在语句locked=lrue,即有参数发生改变,因此不能用consi。

三、简单应用题(本题共[题,每题7.0分,共]分。)

41、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工

程中包含一个程序文件main.cpp,其中有坐标点类point、线段类Line和三角形

号Triangle的定义,还有main函数的定义。程序中两点间距离的计算是按公式d=

力-力)’实现的,三角形面积的计算是按公式实

现的,其中s二巴士。请在程序中的横线处填写适当的代码,然后删除横线,以

实现上述类定义。此程序佗正确输出结果应为:sidel:9.43398Side2:5Side3:

8area:20注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不

要删除或移动"//****fbund****',o#include<iostream>#include<cmath>using

namespacestd;classPoint{//坐标点类public:constdoublex,y;Point(double

x=0.0»doubley=0.0):x(x),y(y)()//**********f0und*********double

distanceTo()const{//到指定点的距离returnsqrt((x-p.x)*(x-p.x)+(y-

p.y)*(y-p.y));}};classLine{//线段类public:constPointpI,p2;//线

段的两个端点//**********found**********Linc(Pointpl,Pointp2):

{}doublelength()const{returnpl.distanceTo(p2);}//线段的长

度};classTriangle{//=角形类public:constPointpl,p2,p3;//三角形的

三个顶点//**********found**********Trianglc():pl(pl),

p2(p2),p3(p3){}doublelengthl()const{//边pl,p2的长度returnLine(pl,

p2).length();)doublelength2()const{//边p2,p3的长度returnLine(p2,

p3).length();}doublelength3()const{//边p3,pl的长度returnLine(p3,

pl).ieng(h();}doublearea()const{//三角形面积//

;returnsqrt(s*(s-

Iengthl())*(s-length2())*(s-length3()));}}:intmain(){Triangler(Point(0.0,

8.0),Point(5.0,0.0),Poinl(0.0,0.O));cout<<"Sidel:"<<

r.length1()<<endl;cout<<"Side2:"<<r.Ingth2()<<endl:cout<<

"Side3:"<<r.Iength3()<<endl:cout<<"area:"<<r.area。VVendl;

retumO;}

标准答案:(1)constPoint&p(2)p1(pI)»p2(p2)(3)Pointpl,Pointp2,Pointp3

(4)(length1()+length2()+length3())/2

知识点解析:主要考查的是坐标点类Point类、线段类Line类和三角形类Triangle

类,其中涉及构造函数和const函数。构造函数的成员列表初始化是最常考查的知

识点,定义函数的参数时要注意观察函数体及函数的注释,理解该函数的功能。

(1)主要考杳考生对函数形参的掌握,由函数的注释可知有本坐标点到达某个坐标

点类的距离,再根据函数体returnsqrt((x・p.x)*(x-p.x)+(y-p.y)*(y-p.y));可

知,该坐标点类名为p,因此可以知道形参为Poinl&p,为了不改变该坐标点的

值,前面要加上const。(2)主要考查考生对构造函数的掌握,对于常变量型私有成

MconstPointpl,p2,只能用成员初始化列表进行赋值。(3)主要考

温馨提示

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

评论

0/150

提交评论