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

下载本文档

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

文档简介

家二级(C++)机试模拟试卷9(共9

套)

(共369题)

家二级(C++)机试模拟试卷第1套

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

1、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的

RT

□□BC

LZJm13

运算为()oLZJ0J

A、笛卡尔积

B、交

Q、并

D、自然连接

标准答案:D

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

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

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

2、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit()

{a=1;}A(inta=2){a++;}};intA::a=0;Aobj;intmain(){cout«obj.a;

return0;)运行时输出的结果是()。

A、0

B、1

C、2

D、3

标准答案:B

知识点解析:本题考查沟造函数,本题中对类中的a数据成员先是赋值为0,当定

义了对象obj时,执行构造函数,将a的值变为了I,所以输出1。

3、下列关于类模板的模板参数的叙述中,错误的是()。

A、模板参数可以作为数据成员的类型

B、模板参数可以作为成员函数的返回类型

C、模板参数可以作为成员函数的参数类型

D、模板参数不能作为成员函数的局部变量的类型

标准答案:D

知识点解析:本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变

量的类型。

4、下列语句中错误的是

A、constint*p=0;

B、constinty=99;

C^constintx;

D、constint*p=newint(100);

标准答案:C

知识点解析:const是一个C++语言的关键字,它限定一个变量

http:〃/vicw/296689.htm>不允许被改变,C++定义const类型变量时

必须初始化,否则编译不通过。所以C选项错误。

5、下列关于继承和派生的叙述中,正确的是

A、派生类中新定义的成员函数可以访问基类的所有成员

B、在私有继承的情况下,派生类中新定义的成员函数不能访问基类的保护成员

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

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

标准答案:D

知识点解析:本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式

决定,如果派生类私有继承基类,那么就不能新定义的成员函数就不能访问基类的

私有成员,所以A选项错误。在私有继承的情况下,派生类中新定义的成员函数

可以访问基类的保护成员°基类对象在某种情况下可以赋值给派生类对象.

6、有如下程序#inciude#includeusingnamespacestd;intmain()(cout<

A、setprecision(3)

fixed

C、

D、setw(8)

标准答案:D

知识点解析:本题考查瑜入输出格式的控制,可以看出**12.345和**34.567字段宽

度都为8,所以遗漏处为setw(8),D选项正确。

7、下列定义语句中,错误的是

A、

B>int*p();

C、int(*p)();

D、intp*;

标准答案:D

知识点解析:本题考查一维数组和指针,A选项为一维指针数组,B、C选项为函

数指针,D选项定义指针方式不对,*号应该在p的左边。所以答案为D。

8、有如下类定义:classBase{public:inta;protected:intb;private:intc;);class

Derived:publicBase{protected:intd;friendvoidshow(););在类Derived中,函数

show()不能直接访问向数据成员是

A、a

B、b

C、c

D、d

标准答案:C

知识点解析:本题考查友元函数,本题中定义的show不能直接访问Base里的私有

成员。

9、软件设计中模块划分应遵循的准则是()o

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、高内聚高耦合

标准答案:B

知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适

当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合

理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块

之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

10、下列选项中,正确的C++表达式是

A^a+b=b+c

B、xyz+

C、WWW++9

D、a[3]

标准答案:D

知识点解析:A选项中,a+b是表达式,不可以作为左值;选项B中,运算符

作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须

作用于两个操作数之间;选项C中,运算符”++”是一元运算符,只能有一个操作

数;答案为D。

11、有如下类声明:classFin[public:Fin();〃①Fin*pf;〃②Finf;〃③Fin&p;

//④};在标有数字的四个成员声明中,将产生编译错误的是

A、@

B、②

C、③

D、④

标准答案:C

知识点解析:只有当类定义体完成之后才能定义类,题目中四个声明语句位置,

Fin类未定义完整,属于不完全类型,此时数据成员只能是指向该类类型的指针或

引用,而不能是该类的对象;语句3会产生编译错误;答案为C。

12、运动会中一个运动预目可以有多名运动员参加,一个运动员可以参加多个项

目。则实体项目和运动员之间的联系是

A、多对多

B、——对多

C、多对一

D、一对一

标准答案:A

知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:

对一联系(1:1)、一对多联系(l:m)、多对多联系(m:n)。一个运动项目有很

多运动员参加,而一个运动员可以参加多项运动项目,故实体项目和运动员之间的

联系是多对多,A选项正确。

13、有如卜程序:#includeusingnamespacestd;voidfun(int&x,inty){y=y+x;

x=y/4;x++;)intmain()|intx=4,y=5;fun(x,y);cout<

A、4,5

B、3,5

C、3,9

D、2,5

标准答案:B

知识点解析:函数fun的形参x为引用类型,函数功能是将形参x与y之和除以4

的结果赋给x,再对x自增1,通过引用类型修改实参;main函数中定义x=4,

y=5,所以通过函数fun的调用,x的值被修改为:(4+5)/4+1=3,而y的值不变,

所以程序输出3,5;答案为B。

14、有如下程序#inckideusingnamespacestd;classAA{charc;public:AA(char

ch):c(ch){cout<

A、MCB

B、BMC

C、CMB

D、BCM

标准答案:C

知识点露析:派生类构造函数的工作过程:1、派生类的构造函数在执行函数体之

前,首先调用基类的构造函数初始化基类;2、基类构造完成之后,在执行函数体

之前根据声明次序初始叱自己的成员;3、执行自身函数体。由上可知,构造函数

初始化列表并不指定初始化的执行次序。所以程序中在创建BB对象时,首先调用

AA的构造函数,输出“C”,然后初始化类BB中的成员对象m,m是AA类对象,

调用AA的构造函数,输出“M“,最后执行函数体,输出“B”;输出顺序为:

"CMB",答案为C。

15、一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教

练,则实体运动队和队员的联系是

A、一对多

B、一对一

C、多对一

D、多对多

标准答案:A

知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:

对一联系(1:1)、一对多联系(l:m)、多对多联系(m:n)。实体运动队和队员

的关系为l:m联系,故A选项正确。

16^有如下程序:#inckideusingnamespacestd;voidfun(int&a,)

{intc;c=a;a=b;b=c;)intmain(){intx,y;x=l;y=2;fun(x,y);cout<

A、intb

R、int*h

C、int&b

D、b

标准答案:C

知识点解析:main函数中定义两个整型变量x=l,y=2,由输出x,y的结果为

21,可知函数fun的功能是交换两个实参的值,由于函数fun中未使用指针类型的

变量,所以若想通过函数fun交换实参的值,形参类型必然为引用类型,横线处语

句为int&b,答案为C。

17、在C++语言系统中,用于输入数据所使用的标识符cin是

A^C++系统保留字

B、类名

C、类名

D、函数名

标准答案:C

知识点解析:cin是C++预定义的标准输入流对象,答案为C。

18、若为类MyClass重载运算符"+",下列声明中,错误的是

A、friendMyClassoperator+(double,double);

B、fiieiidMyClassopcraloi+(double,MyClass);

C^friendMyClassoperator+(MyClass,double);

D、fricndMyClassopcrator+(MyClass,MyClass);

标准答案:A

知识点解析:重载运算符必须具有一个类类型的操作数,这条规则强制重载运算符

不能重新定义用于内置类型对象的运算符。选项B、C、D正确,A错误,答案为

Ao

19、有如下程序#includeusingnamespacestd;classAA{charc;public:AA(char

ch):c(ch){)~AA(){cout<

A^CMm

MCm

C、mCM

D^mMC

标准答案:D

知识点解析:程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析

构函数工作过程如下:1、执行析构函数的函数体:2、如果该类中拥有类对象成

员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,

销毁类对象成员;3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。

所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出“m“;然后调

用成员m的析构函数,销毁m成员,输出,Ml再调用基类的析构函数,输

出,C;综上所述,程序运行的输出是:“mMC";答案为D。

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

A、long、double、int

B、longsfloat、int

C^int>double>long

D、int>float、long

标准答案:c

知识点解析:本题考查整型变量的类型和浮点变量的类型,42默认为int型数据,

42后面加上L后,表示long型数据,4.2默认为double型数据。

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

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

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

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

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

标准答案:c

知识点。析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为

虚基类的类可以被实例叱。虚函数如果没有派生类中重新实现,那么仍然使用基类

的成员函数。

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

A、有一个以上根结点的数据结构不一定是非线性结构

B、只有一个根结点的数据结构不一定是线性结构

C、循环链表是非线性结构

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

标准答案:B

知识点解析:线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,

也最多有一个后件,所以B)正确。所以有一个以上根结点的数据结构一定是非线

性结构,所以A)错误。循环链表和双向链表都是线性结构的数据结构。

23、有如下程序:#include#includeusingnamespacestd;classAppliance{public:

Appliance(stringt="A"):type(t){cout<

A、041

B、0T41

C、A0A41

D、A0T41

标准答案:D

知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对

象构造函数,3、再执行派生类构造函数,所以本题中定义rooml时,先调用基类

构造函数输出A,然后执行TV的构造函数输出0,定义room2时,调用TV的构

造函数,输出T41,所以结果为A0T41,答案为D选项。

24、下列选项中,正确的C++表达式是

A、al+

B、b++2

C、3=c

D、d-=4

标准答案:D

知识点解析:本题考查C++基本的表达式用法,属于基本知识,可以看出只有D

选项正确。

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

A、重载函数

虚函数

C、引用

D、指针

标准答案:A

知识点解析:运行时多态与虚函数有关。派生类的对象可以认为是基类的对象,但

基类的对象不是其派生类的对象。因此,C++允许一个基类对象的指针指向其派生

类对象,但不允许一个派生类对象指向其基类对象。在调用虚函数的过程中指针和

引用会起到一定的作用。

26、软件设计中模块划分应遵循的准则是()。

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、高内聚高耦合

标准答案:B

知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适

当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合

理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块

之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

27、下列关于函数的叙述中,正确的是

A、C++不允许函数嵌套定义

13、C++中所有函数都有返回值

C、函数的形参列表一定不能为空

D、调用函数时一定会执行完函数体的最后一条语句

标准答案:A

知识点解析:C++中函数可以不返回任何值,不返回任何值指定返回类型为void

类型;函数形参表可以为空,但不能省略;函数调用过程中,可能会由于return语

句或者异常终止执行,不一定会执行完最后一条语句;B、C、D错误;函数不允

许嵌套定义,答案为A。

28,有如下程序:#includeusingnamespacestd;classAA{public:

AA()(cout«"A'r;)~AA(){cout«"-A";));classBB{public:BB(){cout«"B";}

~BB(){cout«"-BM;});intmain(){AA*pa=newAA;BBb;deletepa;return0;}运行

这个程序的输出是

A、AB~A~B

B、BA~A~B

C、AB~B~A

D、BA~B~A

标准答案:A

知识点解析:main。函数中首先动态创建AA类对象,调用AA类构造函数,输出

"A",创建BB类对象,调用BB类构造函数,输dTB”,使用delete显式销毁AA

类对象,调用AA类析构函数,输出“〜A”,程序结束时,销毁BB类对象,编译器

自动调用BB类析构函数,输出“~B”,整个程序输出结果为:“AB~A~B”,答案为

Ao

29、下列关于默认参数的叙述中,错误的是

A、为形参列表中的多个参数指定默认值时,应从右至左进行设置

B、若函数的所有形参都指定了默认值,则调用时可不给出实参

C、C++中的默认参数可以简化对复杂函数的调用

D、若要为参数指定默认值,必须在函数定义及其原型声明中同时指定

标准答案:D

知识点解析:既可以在函数声明中指定默认参数,也可以在函数定义中指定默认参

数,但是,在一个源文件中,只能为形参指定默认参数一次,通常应在函数声明中

指定默认参数。A、B、C正确,选项D错误;答案为D。

30、有如下程序:#includeusingnamespacestd;classBasel{public:Basel(){)

-Basel(){cout«"bln;)};classBase2{public:Base2(){)~Base2(){cout«"b2'^;});

classDerived:publicBase2,publicBase1{public:Derived(){)

〜Dcrivcd(){cout«,d,;}};intmain(){Derivedobj;return0;}运行这个程序的输出是

A、blb2d

B、b2bld

C、dblb2

D、db2bl

标准答案:C

知识点解析:派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据

成员,另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基

类在派生类的派生列表中出现的次序调用的;由于Derived类的派生列表中,

Base2在前;所以应该先调用Base2的构造函数,再调用Basel的构造函数;销毁

派生类对象时,总是按照构造函数运行次序的相反顺序调用析构函数,首先运行派

生类析构函数,然后按继承层次依次向上调用各基类函数:所以Derived对象销毁

时,首先调用Derived的析构函数,接着调用Basel的析构函数,最后调用Base2

的析构函数;输出结果为:"dblb2",答案为C。

31、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),

课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为

()。

A、课号,成绩

B、学号,成绩

C、学号,课号

D、学号,姓名,成绩

标准答案:C

知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的

关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择

C)o

32、有如下程序:#includeusingnamespacestd;classBase{public:voidfun()

{cout«"Base::fun"<

A、Base.fun();

B>Base::fun();

C、Base->fun();

D、fun();

标准答案:B

知识点解析:本题考杳公用继承对基类成员的访问属性。在公用继承中,基类的公

用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本

题中想要输出Basedum则必须调用基类的公用成员函数fun,所以使用

Base::fun();来调用基类的成员函数fun。

33、算法的空间复杂度是指()<>

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

B、算法所处理的数据量

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

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

标准答案:A

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

择A)o

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

我的运算符函数原型中,正确的是()。

A、Valueoperator+(Valuev,inti);

B、Valucopcrator+(VaIucv=valuc,inti);

C、Valueoperator+(Valuev,inti=O);

D^Vakieoperator+(Valuev=value,inii=0);

标准答案:A

知识点解析:本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所

以本题答案为A。

35、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是

A、fstream

B、istream

C、ostream

D、iomanip

标准答案:D

知识点解析:本题考查格式控制相关知识,属于基础知识,需要包含iomanip,所

以D选项正确。

36、通过运算符重载,可以改变运算符原有的

A、优先级

B、结合性

C、操作数类型

D、操作数个数

标准答案:C

知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改

变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认

值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重

载。所以答案为C。

37、有如下程序:#include#includeusingnamespacestd;classAppliance{public:

Appliance(stringt="A',):typc(t){)〜Appliance。{cout<

A、041

B、410

C、0A41T

D、4ITOA

标准答案:D

知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对

象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中定

义分别定义了rooml,room2后,调用构造函数后没有输出,而调用析构函数的顺

序依次为room2的析构函数,输出41,然后执行Appliance的析构函数输出T,然

后执行rooml的析构函数输出0,最后执行Appliance的析构函数输出A,所以D

选项正确。

38、在一个有参函数的原型声明中可有可无的语法成分是

A、形参类型

B、形参变量

C、函数名

D、函数返回类型

标准答案:B

知识点解析:函数原型,包含返回值,函数名,参数类型,而形参变量可有可无,

所以答案为B选项。

39、下列关于输入流类成员函数getline()的表述中,错误的是

A、该函数只能用来从键盘设备读取一行字符串

B、该函数读取的字符串长度是由参数限制的

C、该函数读取字符串时,遇到终止符便停止

D、该函数读取字符串时,遇到终止符便停止

标准答案:A

知识点解析:gelline(islream&is,slring&str)第一个参数is是输入流对象,这个对象

可以是键盘输入流对象,也可以是文件输入流等其他输入流的对象,选项A错

误,答案为A。

二、基本操作题(本题共1题,每题7.0分,共I分。)

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

包含类MyClass的定义。程序中位于每个“//ERROR****found****、’下的一行语

句有错误,请加以更正。更正后程序的输出结果应该是:Thevalueis5ThevalueislO

注意:只修改每个“//ERROR****fbund****”下的那一行,不要改动程序中的其

他内容。#includeusingnamespacestd;classMyClasS{public://

ERROR**********found**********voidMyClass()[value=0:)//

ERROR**********found**********voidsetValue(intval)const{value=val;}

intgetValue()const{returnvalue;)private://ERROR**********found**********

intvalue:0;);intmain()(MyClassobj;obj.setValue(5);cout«"Thevalueis"<

标准答案:(l)MyClass(i{value=0;}(2)voidsetValue(intval)(3)intvalue;

知识点解析:(1)主要考查考生对构造函数的掌握,构造函数前不能添加任何返回类

型。(2)主要考查考生对const的掌握,由函数中value=val;语句,可知成员的值发生

改变,因此不能用consto(3)主要考查考生对私有成员的掌握,私有成员只能声明,不

能赋初始值。

三、简单应用题(本题共[题,每题1.0分,共1分C)

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

程包含一个源程序文件proj2.cpp0其中定义了Score类。Score是一个用于管理

考试成绩的类。其中,数据成员_s指向存储成绩的数组,_n表示成绩的个数;成

员函数Sort使用冒泡排序法将全部成绩按升序进行排列。请在程序中的横线处填

写适当的代码,然后删除横线,以实现Score类的成员函数Sort。注意:只在指定

位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//

,,

****fbund****o//proj2.epp#include#include#includeusingnamespacestd;

classScore{public:Score(double*s,intn):S(s),n(n){)

doubleGetScore(inti)const{returnSfi];}voidSort();private:doublets;intn;(;

voidScore::Sort(){//********fOIltl(j********for(inti=0:ii:j-)if(s[j]<_s|j-1])

{//交换_s|j]和Jdoublet=_s[j];//********found********;/

/***5ic****found********;)}intmain(){constintNUM=10:

doubles[NUM];srand(time(0));for(inti=0;i

标准答案:(l)i++(2)_n-l(3)_s[j]=_s|j—1](4)_s|j-l]=t

知识点解析:(1)主要考查for循环语句,从题目要求可知循环变量i要从0到』一

2,因此i要递增操作,即i++。(2)主要考查考生对冒泡排序的掌握,这里要求从

后往前扫描,比较相邻两个元素,若后者小则交换,因此在这里下标j要从最后开

始,即in【j=_n—1。(3)考查交换算法,在if语句中—1]满足条件,则实

现交换。因为已经把_s[jl的值赋给了中间变量3所以这里要把_sfj—11的值赋给

_s|j],即_s[j]=_s[j—1];。(4)考查交换算法,这里只需把中间变量I中的值赋给

_s[j.1]即可。

四、综合应用题(本题共7题,每题7.0分,共[分0)

42、请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此

工程中包含一个源程序文件proj3.epp,其功能是从文本文件in.dat中读取全部

整数,将整数序列存放到intArmy类的对象中,然后建立另一对象myArray,将对

象内容赋值给myArrayo类intArray重载了“一”运算符。程序中给出了一个测试数

据文件input,不超300个的整数。程序的输出是:1011131620要求:补充编

制的内容写在“/********333********“与“//********666********”之间°实

现重载赋值运算符函数,并将赋值结果在屏幕输出。格式不限。不得修改程序的其

他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已

经编译为obj文件,并且在本程序中调用。}/intArray.hclassintArray)private:

int*array;intlength;public:intArray(char*filename);intArrayO;intArray&

operator=(constintAroray&src);-intArrayO;voidshow(););

voidwriteToFile(const€har;}:path);//main,cpp#include#include#include

#include"intArray.h"usingnamespacestd;intArray::intArrayO{length=10;

array=newint[length];)intArray::intArrayfchar*filename)

{ifstreammyFile(filename);array=newint|300|;length=O;

while(myFile»array[length+4-])length—;myFile.close();}intArray&intArray::

opcrator=(constintArray&src){if(array!=NULL)dclctc[]array;

length=src.length;array=newint|length|;//**^**********333***********/

/*************666**X********return*this;}intArray::~intArray()

{dclete[]array;}voidintArray::show(){intstcp=0;for(inti=0;i

标准答案:for(inti=0;i

知识点解析:主要考查考生对运算符重载的掌握,该函数要重载运算符“=”,该运

算符的意思是赋值。先看该函数的其他语句:if(array!=NULL)dclcte[]array;

length=src.length;array=newint|length|;第一条语句是把原来动态数组释放,第

二条语句是把形参src的成员length赋值给变量length,第三条语句是给指针array

分配内存。接下来要把动态数组中的值逐个赋给array数组,在这里使用for循环

语句,循环变量i的范围是0—lenglh,并进行赋值悚作。

国家二级(C++)机试模拟试卷第2套

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

1、下列关于栈叙述正确的是()c

A、栈顶元素最先能被删除

B、栈顶元素最后才能被删除

C、栈底元素永远不能被删除

D、栈底元素最先被删除

标准答案:A

知识点解析:栈是先进后出的数据结构,所以栈顶元素最后人栈却最先被删除。栈

底元素最先入栈却最后被删除。所以选择A。

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

A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D、以上说法都不正确

标准答案:C

知识点解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,人栈与出

栈操作均由栈顶指针的变化来操作,所以选择C。

3、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根

结点在第1层)()。

A、3

B、4

C、6

D、7

标准答案:D

知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点

总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本

题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。

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

应用软件的是()。

A、学生成绩管理系统

B、C语言编译程序

C、UNIX操作系统

D、数据库管理系统

标准答案:A

知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、

编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、C、

D都是系统软件,只有A是应用软件。

5、结构化程序所要求的基本结构不包括()。

A、顺序结构

B、GOTO跳转

C、选择(分支)结构

D、重复(循环)结构

标准答案:B

知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择

和重复三种基本控制结沟就足以表达出各种其他形式结构的程序设计方法。

6、下面描述中错误的是()。

A、系统总体结构图支持软件系统的详细设计

B、软件设计是将软件需求转换为软件表示的过程

C、数据结构与数据库设计是软件设计的任务之一

D、PAD图是软件详细设计的表示工具

标准答案:A

知识点解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确

定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,

所以A错误。

7、负责数据库中查询操作的数据库语言是()。

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:C

知识点解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操

纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数

据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

8、一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间

的联系是()。

A、1:1联系

B、1:m联系

C、m:1联系

D、m:n联系

标准答案:D

知识点解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授,所

以他们之间是多对多的关系,可以表示为m:n。

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

A、自然连接

B、并

C、交

D、差

标准答案:D

知识点解析:关系T中的元组是关系R中有而关系s中没有的元组的集合,即从

关系R中除去与关系S中相同元组后得到的关系To所以做的是差的运算。

10、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A、-369

B、369

C、0.369

D、整数集合{1,2,3,4,5)

标准答案:B

知识点解析:只有B选项中369可以用无符号整数来表示和存储。A选项中-369

有负号,选项C中0.369是小数都不能用无符号整数类存储。选项D是一个整数

集合得用数组来存储。

11、C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是

()。

A、增加了一些新的运算符

13、允诧函数重载,并允诧设置默认参数

C、规定函数说明符必须用原型

D、引进了类和对象的概念

标准答案:D

知识点解析:C++语言最重要的特点是其为一种面向对象的程序设计语言,但是

C++语言也包含了C语言的全部特征。

12、下列()是C++语言的有效标识符。

A、Nol

B、No.1

C、12345

D、int

标准答案:A

知识点解析:标识符是一个以字母或下画线开始的,由字母、下画线和数字组成的

字符串,标识符不能与注意关键字同名。

13、设有定义intx;floaty;,则10+x+y值的数据类型是()。

A、int

B、double

C>float

D、不确定

标准答案:C

知识点解析:由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐

含地将低类型转化为高类型,山低至高的顺序为int^float—>double<)

14、下列程序的执行结果为()。#include<iostream.h>voidmain(){inta=3,

b=0;int*p=&a:b=+a-+:cout<<*p<<",n<<b<<endl;)

A、3,4

B、4,3

C>3,4

D、4,4

标准答案:B

知识点解析:木p为所指对象a的值,语句“b=+a++;”等价于"b=b+a;a=a+l;

15、下面程序的运行结果为()。#include<iostream.h>voidmain(){for(inta=0,

x=0;!x&&a<=10:a+-){a++;}cout<<a<<endl;)

A、10

B、11

C、12

D、0

标准答案:C

知识点解析:在进入最后一次循环时a=10,在循环体内执行“a+七”后a=ll,执行

完该次循环体计算for循环的增量部分后a=12小于10,循环结束。

16、下面有关for循环的正确描述是()。

A、for循环只能用于循环次数已经确定的情况

B、for循环是先执行循环体语句,后判断表达式

C、在for循环中,不能用break语句跳出循环体

D、在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

标准答案:D

知识点解析:选项A中for循环可以用于循环次数不确定的情况;选项B中砧「循

环是先判断表达式,后执行循环体语句;选项C中for循环可以用break语句跳出

循环体,从而接着执行循环体后面的语句。

17、以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是

()o#include<iostream.h>voidmain(){int*p,*q,a,b;p=&a:cout<<

"inputa:":cin>>p;)

A、*p表示的是指针变量p的地址

B、p表示的是变量a的地址,而不是变量a的值

C、*p表示的是指针变量P的值

D、*P只能用来说明P是一个指针变量

标准答案:R

知识点解析:p表示的是变量a的地址,定义后*p表示的是变量a的值。

18、假定int类型变量占用两个字节,其有定义intx[10]={0,2,4};,则数组x

在内存中所占字节数是()。

A、3

B、6

C、10

D、20

标准答案:D

知识点解析:x数组共有10个元素,在花括号内只提供3个初值,这表示只给前

面的3个成员赋值,后7个元素的值为0,所以,一共有20个字节。

19、下列选项,不正确的是()。

A^for(inta=l;a<=10:a++);

B、inta=l;do{a++:}while(a<=10);

C^inta=l;while(a<=10){a++;)

D、for(inta=l;a<=10:a++)a++;

标准答案:B

知识点解析:本题考查的是基本循环语句的使用,选项A,选项C和选项D都为

正确的形式,在选项B中的while(aV=10)后缺少结束符分号“;

20、下面关于数组的初始化正确的是()。

A、charstr[]={,a,,'b','c'}

B、charstr[2J={'a',b,'c'}

C、charstr[2][3]={{'a',V},{V,C'},{'e',T}}

D、charstr()={,a,,'b、,'c'}

标准答案:A

知识点解析:本题考查的是字符数组的初始化。选项B中用3个元素初始化大小

为2的数组,越界了;选项C中应该是2行3列的数组,题中使用3行2列初始

化;选项D中数组合后应用方括号。

21、卜列程序的输出结果为()。#include<ioslream.h>voidmain()

{char*a[]={"hello","the","world");char**pa=a:pa++;cout<<*pa<<

endl;)

A、hello

B、the

C>wodd

D、hellotheworld

标准答案:B

知识点解析:本题主要考查的是指针数组和指向指针的指针之间的关系,其中a是

指针数组,pa是指向指针数组行的指针,所以pa自加1相当于指向下一行。

22、决定C++语言中函数的返回值类型的是()。

A、return语句中的表达式类型

B、调用该函数时系统随机产生的类型

C、调用该函数时的主调用函数类型

D、在定义该函数时所指定的数据类型

标准答案:D

知识点解析:C++语言中,在定义该函数时所指定的数据类型决定函数的返回值类

型。

23、有以下程序:#include<iostream.h>voidfun(inta,intb,intc){a=456,

b=567,c=678;}voidmain(){intx=10,y=20,z=30:fun(x,y,z);cout<<x

<<\<<y<<\<<z<<endl;}输出结果是()。

A、30,20,10

B、10.20,30

C、456,567,678

D、678,567,456

标准答案:B

知识点解析:本题考查函数中变量的作用范围,在主函数中给变量x、y、z赋值,

然后将其作为实参传递给了函数fun(),虽然在函数fun()中改变了这3个变量的

值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数fun()垢束

后,主函数3个变量的值未改变。

24、以下叙述正确的是()。

A、函数可以嵌套定义但不能嵌套调用

B、函数既可以嵌套调用也可以嵌套定义

C、函数既不可以嵌套定义也不可以嵌套调用

D、函数可以嵌套调用但不可以嵌套定义

标准答案:D

知识点解析:在C++语言中,所有的函数都是平行的,即在定义函数时是互相独

立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用。

但是不能调用main。函数。

25,下列程序的输出结果是()□#include<iostream.h>intmin(inta,intb){if(a

<b)returna;elsereturnb;returnO;)voidmain(){cout<<min(l,min(2,3))<

<endl;)

A、0

B、1

C、2

D、3

标准答案:B

知识点解析:本题考查的是函数的调用,第一次调用min(2,3),因为2V3,所以

返回值为2,第二次调月min(1.2).因为1V2,所以返回10

26、下列程序的运行结果为()。#include<iostream.h>voidprint(doublea){cout

<<++a:}voidprint(inta,intb){cout<<b<<a:}voidmain(){print(1.2);

cout<<nn;print(3,4);)

A、1.234

B、2.234

C、1.243

D、2.243

标准答案:D

知识点解析:本题考查的是对重载函数的掌握,因为++a是右结合的,所以a先自

加1再输出,即为2.2,之后调用函数print(inla,inib)输出b和a,即43。

27、时类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是

访问控制属性的是()。

A、公有类型

B、私有类型

C、保护类型

D、友元类型

标准答案:D

知识点解析:所谓的访问控制只包含公有类型、私有类型和保护类型3种,友元可

以是一个函数,也可以是一个类。

28、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行

其他内部管理操作的函数是()。

A、友元函数

B、虚函数

C、构造函数

D、析构函数

标准答案:C

知识点解析:构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象

初始化。

29、类的析构函数的作用是().

A、一般成员函数的初始化

B、类的初始化

C、对象的初始化

D、删除类创建的对象

标准答案:D

知识点解析:析构函数就是用来释放对象的,它的调用完成之后,对象也就消失

了,相应的内存空间也被释放了。

30、下列说法正确的是()。

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

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

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

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

标准答案:B

知识点解析:本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数

调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时

被调用,而调用的内联函数在编译时就被替代了,如果不加inline关键字,则编译

器会将在类说明部分定义的任何函数都被认定为内联函数。

31、下面对于友元函数芍述正确的是()。

A、友元函数的实现必须在类的内部定义

B、友元函数是类的成员函数

C、友元函数破坏了类的封装性和隐藏性

D、友元函数不能访问类的私有成员

标准答案:C

知识点解析:友元函数的定义既可以在类内部进行,也可以在类外部进行。它提高

了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成品函数可以访问

类的私有成员。

32、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是

()。

A、派生类的对象可以赋给基类的对象

13、派生类的对象可以初始化基类的引用

C、派生类的对象可以直接访问基类中的成员

D、派生类的对象的地址可以赋给指向基类的指针

标准答案:C

知识点解析:公有继承的派生类和基类是子类型的关系,所谓子类型是类型间一般

和特殊的关系,即派生类是基类的子类型或者说基类的操作可以被用于操作派生类

的对象。

33、F面程序的运行结果为()。#include<ioslream.h>classA{public:

A(){cout<<,'l";)^A(){cout<<"2";));classB:publicA{public:B(){cout

VV"3";)-B(){cout<<"4";}};voidmain(){Bb;)

A、1234

B、1324.

C>1342

D、3142

标准答案:C

知识点解析:本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调

用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派

生类的析构函数,后调用基类的析构函数C

34、下列关于虚基类的描述,错误的是()。

A、设置虚基类的目的是为了消除二义性

B、虚基类的构造函数在非虚基类之后调用

C、若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的

构造函数

标准答案:B

知识点解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继

承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先

于非虚基类的构造函数执行。

35、下列关于多态性的描述,错误的是()。

A、C++语言中的多态性分为编译时的多态性和运行时的多态性

B、编译时的多态性可通过函数重载实现

C、运行时的多态性可通过模板和虚函数实现

D、实现运行时多态性的机制称为动态绑定

标准答案:c

知识点。析:编译时的多态性是通过函数重载和模板体实现的,运行时的多态性是

通过虚函数体实现的。

36、下列运算符中,在C++语言中不能重载的是()。

A、*

B、>=

C、::

D、/

标准答案:C

知识点解析:不能被重载的运算符还包括:不>*"和

37、当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开

方式为()。

A、ios::in

B、ios::out

C、ios::in|ios::out

D、以上都不对

标准答案:D

知识点解析:使用fstream类建立文件流必须定义打开方式,否则编译器无法判断

该文件流是读还是写。

38、下列程序的运行结果是()。#include<iostream.h>classA{inta;public:

A(){a=0:}A(intaa){a=aa;cout<<a++:});voidmain(){Ax,y(2),z(3);

cout<<endl;}

A、00

B、23

C、34

D、25

标准答案:B

知识点解析:本题考查的是对构造函数的掌握,另外运算符是右结合的,所

以在进行输出的时候都是先把原来的输出后再自加1。

39、下面程序的输出结果是()。#include<ioslream.h>classexample{inia;

public:example(intb){a=b++;}voidprint(){a=a+l;cout<<a<<nM;}void

print()const{cout<<a<<"}};voidmain()[examplex(3);constexample

y(2);x.print();y.print();)

A、22

B、43

C、42

D、32

标准答案:C

知识点解析:“++”是右结合的,所以先赋值为3,最后输出3+1;常成员函数只有

常对象才能调用,所以输出2。

二、基本操作题(本题共7题,每题1.0分,共7分。)

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

有枚举DOGCOLOR、狗类Dog和主函数main的定义。程序中位于每个“//

ERROR****found****''下的语句行有错误,请加以改正。改正后程序的输出结果

应该是:ThereisawhitedognamedHoho.Thereisablackdognamed

Haha.ThereisamotleydognamedHihi.注意:只修改每个//

ERROR****found****下的那一行,不要改动程序中的其他内容。#include<

iostream>usingnamespacestd;//狗的颜色:黑、白、黄、褐、花、其他enum

DOCCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER);

classDog{//狗类DOGCOLORcolor;charname|20];staticintcount;puMic:

Dog(charname[],DOGCOLORcolor){strcpy(this->name,name)://

ERROR**********found**********strcpy(this->color,color);}DOGCOLOR

getColor()const{returncolor;}//ERROR**********found**********const

char*getName()constlretulnlirnttnl~;{..const

char*getColorString()const{switch(color))caseBLACK:return"black";case

WHITE:relurn"white";caseYELLOW:retum"yellow";caseBROWN:

return"brown":casePIEBALD:return"piebald";}return"motley";}void

show()const{cout<<',Thereisa"<<getColorSlringO<<"dognamed'1<<name<

<\><<endl;}};intmain(){//ERROR**********found**********Dog

dogl(nHoho",WHITE),dos2("Haha",BLACK);dog3("Hihin,OTHER);

dogI.show();dos2.show。;dog3.show。;returnO;)

标准答案:(l)this->cobr=color;(2)c(restchargetName()const{return*name;}

(3)Dogdogl("Hoho",WHITE),dog2("Hahan,BLACK),tlog3("IIihi",OTIIER);

知识点解析:主要考查的是Dog类,其中涉及enum、静态私有成员、const函数和

构造函数。strepy函数用来复制字符串,而对double、ini等类型直接用赋值即

可。定义同一类型的变量时,儿个变量之间用“,”分开。(1)主要考查考生对strepy

函数的掌握,如果看到上一条语句strcpy(lhis->name,name);,就以为本条语句

也要用strepy函数来赋值,这是错误的。sirepy函数只能复制字符串,根据类的私

有成员声明可知,color,是DOGCLOR型的,这里直接使用赋值语句“=”即可。

(2)主要考查考生对函数返回值的掌握,先解读语句consl

char*getName()const{return*name;},要返回的是一个consl的字符指针,同时函

数内的值不能改变,name在类的私有成员声明中是个字符数组,*name代表字符

数组而不是字符指针,问题就出来了,需要修改返回类型:constchar

get.Name()consl{return*nailie;)<>⑶语法错误,定义变量时,变量之间应使用

“,”分开。

三、简单应用题(本题共1题,每题1.0分,共1分。)

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

有矩阵基类MatrixBase、矩阵类Matrix和单位阵unitMatrix的定义,还有main函

数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程

温馨提示

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

评论

0/150

提交评论