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

下载本文档

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

文档简介

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

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

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

A^const

B、2a

C、_shape

D、count

标准答案:C

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

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

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

符。选项A是关键字,选项B不能以数字开头,选项D包含了字符”,,且不能以

此字符开头”故答案为C.

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

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

A、枚举常量YELLOW的值为1

B、枚举常量RED的值为6

C、枚举常量BLACK的值为10

D、枚举常量WHITE的值为1

标准答案:D

知识点解析:C++语言规定枚举常量的默认值依次等于0,1,…,n-1。也可以给

枚举常量赋初值,方法是:在枚举常量的后面跟上口整型常量”,在给枚举常量赋

初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规

则依次赋初值。所以本题答案为D。

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

A、栈是一种先进先出的线性表

B、队列是一种后进先出的线性表

C、栈与队列都是非线性结构

D、以上三种说法都不对

标准答案:D

知识点解析•:栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队

列都是线性结构。

4、软件测试的目的是

A、评估软件可靠性

B、发现并改正程序中的错误

C、改正程序中的错误

D、发现程序中的错误

标准答案:D

知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中

心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。

5、在软件开发中,需求分析阶段产生的主要文档是()。

A、软件集成测试计划

B、软件详细设计说明书

C、用户手册

D、软件需求规格说明书

标准答案:D

知识点解析♦:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规

格说明书、需求评审四个方面。所以选择D。

6、软件生命周期是指

A、软件产品从提出、实现、使用维护到停止使用退役的过程

B、软件从需求分析、设计、实现到测试完成的过程

C、软件的开发过程

D、软件的运行维护过程

标准答案:A

知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称

为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用

为止的整个时期都属于软件生命周期。

7、面向对象方法中,继承是指()。

A、一组对象所具有的相似性质

B、一个对象具有另一个对象的性质

C、各对象之间的共同性质

D、类之间共享属性和操作的机制

标准答案:D

知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为

基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,

而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

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

A、记录长度

B、文件的大小

C、联系的复杂程度

D、数据之间的联系方式

标准答案:D

知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制

的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的

联系方式。

9、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工

作人员与实体计算机之间的联系是()。

A、一对一

B、一对多

C、多对多

D、多对一

标准答案:C

知识点解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使

用,所以两个实体之间是多对多的关系。

10、数据库设计中反映用户对数据要求的模式是(),

A、内模式

B、概念模式

C、外模式

D、设计模式

标准答案:C

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数

据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模

式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择

co内模式乂称物理模式,它给出了数据库物理存储结构与物理存取方法。

RT

ram回ABC

mLZJc31

LD

raLiJ

11、有三个关系R、S和T如下:LJLU则

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

A、自然连接

B、差

C、交

D、并

标准答案:B

知识点解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以

进行的是差的运算。

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

A^const

B、2a

C^一shape

D、-count

标准答案:C

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

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

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

符。选项A是关键字,选项B不能以数字开头,选项D包含了字符“一“,且不能

以此字符开头。故答案为C。

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

RED,BLACK=10}:则下列说法中错误的是()。

A、枚举常量YELLOW的值为:1

B、枚举常量RED的值为6

C、枚举常量BLACK的值为10

D、枚举常量WHITE的值为I

标准答案:D

知识点解析•:C++语言规定枚举常量的默认值依次等于0,1,…,n—屋也可以

给枚举常显赋初值,方法是:在枚举常显的后面跟,“=整型常用、',在给枚举常显

赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的

规则依次赋初值。所以本题答案为D。

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

cout«^*^;

A、24

B、25

C、26

D、50

标准答案:B

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

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

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

5的是()。

a[2]

B、a|31

C、*(p+2)

D、木p+4

标准答案:B

知识点解析:本题考查由向数组的指针,本题中指针变量p指向数组a,直接使用

数组下标即可取值,数组下标是从O开始标号的,所以a[2]能取到5,而a[3]取不

至l」5,C选项中使用指针后移方法能够取到5,D选项中*木p为1,所以*p+4为

5o

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

A、constinta;

B、constinta=10;

C、constint*point=O:

D、constim-point=newint(l0);

标准答案:A

知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使

用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被

读,必须初始化。A选项没有初始化,B、C、D选项都正确。

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

A、FA必须定义在FB之前

B、FB必须定义在FA之前

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

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

标准答案:D

知识点解析:如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用

函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对

被调用的函数作声明。

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

A、运算符函数的名称总是l)~[operator为前缀

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

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

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

标准答案:C

知识点解析:运算符函数可以定义为类的友元函数。所以c选项错误。

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

A、内联函数

B、重载函数

C、递归函数

D、函数模板

标准答案:A

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

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

换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间

开销,从而提高运行速度。

20、若要对:Dala类中重载的加法运算符成员函数进行声明,卜.列选项中正确的

是()。

A^Data+(Data);

B、Dataoperator+(Data);

C、Data+operator(Data);

D^operator+(Data,Data):

标准答案:B

知识点解析:根据重载加法运算符的格式,只有B选项正确。

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

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

A、f(vl,&v2);

B、f(vl,v2);

C、f(&vl,&v2);

D、f(&v1,v2);

标准答案:D

知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方

式;②传递变量指针:③引用形参。本题中函数f的第一个形参为指针,那么调

用f函数时,第一个参数必须是地址,所以必须是&vl,第二个形参为引用,所以

对应实参为v2即可。故本题答案为D。

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

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

A、Valueoperator+(Valuev,inti);

B、Valueoperator+(Valuev=value,inti):

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

D、Valueoperator+(Valuev=value,inti=0);

标准答案:A

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

以本题答案为A。

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

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

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

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

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

标准答案:A

知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一

元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二

元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不

能重载,它们是:(成员访问运算符)、*(成员指针访问运算符)、::(域运算符)、

sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。

24、有如卜类定义:classPoint)private:staticinthow_many;);how—

many=0;要初始化Point类的静态成员how_many,下画线处应填入的内容是[)。

A、int

B、staticint

C>intPoint::

D、staticintPoint::

标准答案:c

知识点0析:本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外

进行初始化,其一般形式为:数据类型类名::静态数据成员名二初值。所以本题

答案为C。

25>有如下头文件:ini11():staticintt2();classMA{public:intf3();staticint

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

A、n

B、f=!

C、13

D、f4

标准答案:C

知识点解析:只有类的非静态成员函数才隐含this指包,其作用域是类内部,当类

的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为

一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。

26、下列有关类继承的叙述中,错误的是()。

A、继承可以实现软件复用

B、虚基类可以解决由多继承产生的二义性问题

C、派生类构造函数要负责调用基类的构造函数

D、派生类没有继承基类的私有成员

标准答案:D

知识点解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访

问,可以通过派生类的友元函数去访问基类的私有成员。

27、在下列关键字中,不能用来表示继承方式的是()。

A、private

B、static

C^public

D、protected

标准答案:B

知识点解析:3种继承方式:公用继承、私有继承和保护继承分别使用public、

private和protected3个关键字来定义。

28、有如下两个类定义:classXX{private:doublex1;protected:doublex2;

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

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

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基

类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成

了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为

Co

29、有如下类和对象的定义:classConstants!public:staticdoublegetPI(){return

3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。

A、cout<getPl();和cout<

B、cout<

C^eout<getPI();和cout<getPI();

D、cout<

标准答案:D

知识点解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能

访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引

用,即Consiants::getPI();另一种是使用对象来引用,BPconstants.getPI()o所

以本题答案为D。

30、有如下程序:#includeusingnamespacestd;classVAC{public:int

f()const{return3;)intf(){return5;});intmain(){VACvl;constVACv2;

cout<

A、53

B、35

C、55

D、33

标准答案:A

知识点解析:本题考查常对象及常成员函数及构造函数,常对象只能调用常成员函

数,所以本题中,对象vl为普通对象,执行vl.f()后,会执行默认构造函数,输

出5,对象v2为常对象,执行v2.f()后,会执行常构造函数,输出3。

31、有如卜程序:#inCludeusingnamespaeestd;classNyClassfpublic:

lyClass(inti=0){eout«l;}MyClass(constlyClass&x){cout«2;}

MyClass&operator=(eonstMyClass&x){eout«3;retum*this;

MyClass()(eout«4:));intmain(){lyClassobjl(l),obj2(2),obj3(objl):return

0;}执行这个程序的输出结果是()。

A、112444

B、11114444

C、121444

D、H314444

标准答案:A

知识点解析:本题考查沟造函数和复制构造函数以及重载运算符。本题中先后定义

了两个对象objl,obj2,依次输出11,然后定义了对象obj3,调用复制构造函

数,输出2,最后执行三次析构函数,输出444。

32、有如卜类声明:classBase{protected:intamount;public:Base(intn=U):

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

Base{protected:intvalue;public:Derived(intm,int11):value(m),Base(n){}

intgetData()eonst{returnvalue+amount;));已知x是一个Derived对象,则卜歹U

表达式中正确的是()。

A^x.value+x.get.Amount()

B、x.getData()-x.getAmount()

C、x.getData()-x.amount

D、x.value+x.amount

标准答案:B

知识点解析:本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,

派生类对象只能访问基类的公有成员,而不能访问基类的保护成员和私有成员。题

中x是派生类的对象,只能访问基类中公有的Base。和getAmount。成员,而不能

访问保护类型的amount成员,故选项c、D错误。而类对象对类成员的访问也存

在类似的情况,即类对象只能访问类的公有成员,而value是Derived的保护成

员,所以A选项也错误。故答案为B。

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

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

BB:public从{/*类体略*/};intmain(){BBx;x.n=l://lx.setN(2);/

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

是()。

A、1

B、2

C、3

D、4

标准答案:B

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

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

本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错浅,

所以B选项正确。

34、有如下程序:#includeusingnamespaeestd;classBase{intx;public:

Base(intn=0):x(n){eout<

A、375

B、357

C、0375

D、0357

标准答案:C

知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象

时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行

派生类的析构函数,再次行基类的析构函数。本题中定义了一个对象dl,先执行

基类的构造函数输出O,再执行派生类的构造函数输出3,然后定义了一个对象

d2(5,7),其中需要调用基类的构造函数输出7,最后输出5,所以答案为C。

35、有如下程序:#includeusingnarnespaeestd;classGA{public:virtualint

f(){retunl1;}};classGB:publicGA{public:virtualintf(){return2;}};void

show(GAg){eout<

A、1111

B、1211

C、1112

D、1212

标准答案:C

知识点解析:本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一个

或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行

show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出

1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题

答案为C。

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

A、函数模板不能含有常规形参

B、函数模板的一个实例就是一个函数定义

C、类模板的成员函数不能是模板函数

D、用类模板定义对象时,绝对不能省略模板实参

标准答案:B

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

37、下面是一个模板声明的开始部分:tcmpiatcdoublc…由此可知()。

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

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

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

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

标准答案:A

知识点解析:本题考查函数模板和类模板的基础知识,从lemplaledouble这里就可

以看出这是一个函数模板的声明。

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

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

A、cout<

cout<

C、cout<

D^cout<

标准答案:D

知识点解析:本题考查控制输出格式,A、B、c选项都会输出“12345”,只有D选

项输出“12345”,所以本题答案为D。

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

39、请使用VC6或使用[答题]菜单打开考生文件夹projl下的工程projl,其中有枚

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

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

应该是:ThereisawhitedognamedHoho.Thereisablackdognamed

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

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

namespacestd://狗的颜色:黑、白、黄、褐、花、其他enum

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

classDog{//狗类DOGCOLORcolor;charnalne20];staticintcount;public:

Dog(charnanle[],DOGCOLORcolor)(strcpy(this->nanle,nanle);//

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

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

*getNanie()const{return*name:}constchar*

getColorString()const{switch(color){caseBLACK:retumk€black,\caseWHITE:

retum^white44:caseYELLOW:return"yellow“;caseBROWN:retum"brown”;

casePIEBALD:return''piebald";}return"motley'(:)void

show()const{cout«"Thereisa"<

标准答案:(1)this->color=color;(2)constchargetName()const{return*name;)

(3)Dogdogl("Hoho",WHITE),dog2("Hahan,BLACK),dog3C'Hihi",OTHER);

知识点解析:(I)主要考查考生对strcpy函数的掌握,如果看到上一条语句

strcpy(this->naine,name);,就以为本条语句也要用strcpy函数来赋值,这是缙误

的。Strcpy函数只能复制字符串,根据类的私有成员声明可知,color是

DOGCOLOR型的,这旦直接使用赋值语句“=”即可。(2)主要考查考生对函数返回

值的掌握,先解读语句constchar水getName()const{retuin*name;),要返回的是

一个const的字符指针,同时函数内的值不能改变,name在类的私有成员声明中是

个字符数组,*name,弋表字符数组而不是字符指针,问题就出来了,需要修改返

回类型:constchargetName()const{return*name;)c(3)语法错误,定义变量的,

变量之间应使用“,”分开。

三、综合应用题(本题共1题,每题1.0分,共1分。)

40、请使用“答题”菜单或使用VC6打开考生文件夹下的工程proj3,其中声明了

List类,它是一个用于表示整数列表的类。List的成员函数insert的功能是将一个

指定的整数插入到列表的指定位置处,原位置处的及其后的所有元素依次向后顺移

一个位置v请补充完整成员函数insert。在main函数中给出了一组测试数据,此情

况下程序的输出应该是:5379132681053713268105-23371326-1981

0注意:只需在//**********333**********和//**********666**********之

间填入所编写的若干语句,不要改动程序中的其他内容。#include”List.h“int

main(){intdat[]={5,3,7,9,13,2,6,8,1,0);Listlist(dat,10);

list.show();list,remove。);list.show();list.insert(-23,1);list,inserti-

19,7);list.show();writeToFile(Hc:\\test\\n);return0://proj3\

list.cpp#includeMList.h"List::List(intd[]>intsize){int

min=(MAX_SIZE>size?size:MAX_SIZE);for(inti=0;i=MAX_SIZE)return;//

指定的插入位置在最后元素之后,紧贴最后元素之后插入新元宝C

if(pos>=count){elem[count++]=data;return;)//指定的插入位置未超过最后元素

处,须移动有关元素以便腾空指定的插入位置,然后插入新元素。//

********333********//********666********}voidList::remove(int

pos){if(pos<0||pos>=count)return;for(inti=pos;iusingnamespacestd;#define

MAX_SIZE100classLisl{intelem|MAX_SIZE]://存放列表元素的数组int

count://列表中元素的个数public:List():count(0){}List(intd[],intsize);

intsize()const{returncount;}//将数据元素data播入到位置pos处。注意第一个

元素的位置是0。voidinsert(intdata,intpos);//删除位置pos处的数据元素。

voidremove(intpos)://输出列表内容voidshow(ostream&os=cout)const;);

voidwriteToFile(constchar*path);

标准答案:if(income<:2000)//如果收入小丁,2000relumlax_payable;//直接

tex_payable(初始代为零)if(taxable>lower_limits[i])(//如果taXable(收入超出起征

额的部分)大于lowcr」imits[i]阶段最低限额tax_payable+=(taxable—

lower_limits[i])*rates[i];//把起过阶段最低限额的部分乘以该阶段的税率后,加

到tax_payable(个人所得税)tacable=lower_limits[i];//把fower」imits[i]赋值于

taxable|

知识点解析:主要考查考生对成员函数的掌握情况,根据题目要求可知,完成计算

应纳个人所得税额的成员函数get.TaxPayable,其中参数income为月收入。同时

题目还表明:不超过2000元的所得不征收个人所得税。因此先用if语句判断是否

要征收个人所得税。然后根据题目所给表格,来判断收入多少及应该收多少个人所

得税。

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

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

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

A、算法就是程序

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

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

D、以上三种说法都不对

标准答案:D

知识点解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于

计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要

考虑算法的控制结构。

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

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

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

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

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

标准答案:B

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

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

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

3、下列关于二叉树的叙述中,正确的是()。

A、叶子结点总是比度为2的结点少一个

B、叶子结点总是比度为2的结点多一个

C、叶子结点数是度为2的结点数的两倍

D、度为2的结点数是度为1的结点数的两倍

标准答案:B

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

总是比度为2的结点多一个。所以选择B。

4、软件生命周期中的活动不包括()。

A、市场调研

B、需求分析

C、软件测试

D、软件维护

标准答案:A

知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶

段。主要活动阶段是:可行性研究与计划阶段、需求分析、软件设计、软件实现、

软件测试、运行和维护,所以选择A。

5、某系统总体结构图如下图所示:叵回应习国可该系统总体结

构图的深度是()。

A、7

B、6

C、3

D、2

标准答案:C

知识点解析:根据总体结构图可以看出该树的深度为3,比如:XY系统一功能2

一功能2.I,就是最深的度数的一个表现。

6、程序调试的任务是

A、设计测试用例

B、验证程序的正确性

C、发现程序中的错误

D、诊断和改正程序中的错误

标准答案:D

知识点解析:程序调试的任务是诊断和改正程序中的错误。

7、下列关于数据库设计的叙述中,正确的是()。

A、在需求分析阶段建立数据字典

B、在概念设计阶段建立数据字典

C、在逻辑设计阶段建立数据字典

D、在物理设计阶段建立数据字典

标准答案:A

知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充

实和完善的。

8、数据库系统的三级模式不包括()。

A、概念模式

B、内模式

C、外模式

D、数据模式

标准答案:D

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。

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

A、自然连接

B、交

C、投影

D、并

标准答案:A

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

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

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

io、卜.列选项中属于面向对象设计方法主要特征的是()。

A、继承

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态

性,所以选择A。

11、下列字符串中不能作为C++标识符使用的是()。

A、INT

B、test

C、_1481

D、Itemp

标准答案:D

知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序

列称为标识符,标识符由字母、数字和下划线3种字符组成,且第一个字符必须为

字母或者下划线。所以D选项错误。

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

A、constint*p=0;

B、constinty=99;

C、constintx;

D、constint*p=newint(lOO);

标准答案:C

知识点解析:consi是一个C++语言的关键字,它限定一个变量不允许被改变,

const常量、常量指针赋值时,均必须同时初始化。所以C选项错误。

13>有如下程序:#includeusingnamespacestd:intmain(){mtsum:for(inti=0;

i<3;i+=l){sum=i:for(intj=i;j<9;j++)sum+=j;}cout<

A、39

B、17

C、110

D、37

标准答案:D

知识点解析:考查foi■循环语句,本题中两层for循环,每次i循环,sum都被重新

赋值,所以当i=2时,执行完i循环后sum为37。所以答案为D。

14、下列语句中,正确的是()。

A、charstr="abcde";

char-str="abcdeH;

C、charstr|5|="abcde";

D、char*str[5]=Mabcde";

标准答案:B

知识点解析:本题考查字符串的定义,A选项中,定义了一个字符,而用字符串赋

值,所以错误,C选项定义了字符数组,一个字符所占空间是1位,再加上隐含的

“\0”,一共是6位,所以字符数组的大小应该为6,D选项定义了一个字符串指

针数组,是指一个数组里面装着指针,赋值错误。所以答案为B。

15^有如下程序段:inli=l;intj=4;intmain(){inti_8,j=i;cout<

A、14

B、81

C、88

D、18

标准答案:c

知识点。析:全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从

变量定义处开始,到本程序文件的末尾。局部变量也称为内部变量。局部变量是在

函数内作定义说明的。其作用域仅限于函数内部。在函数中使用全局变量,一般应

作全局变量说明,本题中定义了两个全局变量i,j,但main函数中又对i、j进行

了定义,所以输出为88,所以答案为C。

16、下列关于函数参数的叙述中,正确的是()。

A、在函数原型中不必声明形参类型

B、在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也

被修改

C、函数形参的生存期与整个程序的运行期相同

D、函数的形参在函数被调用时获得初始值

标准答案:D

知识点解析:本题考查函数参数的相关知识,函数原型中必须声明形参类型,所以

A选项错误,调用一个函数时如果修改了形参值,那么实参可能改变也可能不改

变,所以B选项错误,函数形参的生存期一般在函数执行整个函数中存在,除了

静态变量,所以C选项错误。

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

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

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

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

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

标准答案:A

知识点解析:重载赋值运算符必须定义为类的成员函数,所以选项A正确。重载

赋值运算符时应返回一个类的对象,所以C选项错误。如果已经定义了复制(拷贝)

构造函数,仍然可以重载赋值运算符,所以D选项错误。

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

A、函数返回类型

B、函数参数列表

C、函数名

D、函数体

标准答案:D

知识点解析:函数原型中,函数名、函数返回值、函数参数列表是需要的,而函数

体在函数声明时不需要。所以答案为D。

19、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是()。

A、+

B、()

C、«

D、++

标准答案:B

知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、下标运

算符、函数调用运算符)必须定义为类的成员函数。所以本题选

20、若已经声明了函数原型“bool.fim(boola,intb=0);",则下列重载函数声明

中正确的是()。

A、boolfun(boola=true:intb=0);

intfun(boola,intB);

C^voidfun(doublea,intB);

D、voidfun(boola,intb=0);

标准答案:C

知识点解析:本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方

便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数

的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完

成不同的运算功能。A、B、D选项的部分形参都与原函数相同,所以不能作为重

载函数,选项C正确。

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

A、Numberoperator+(Number);

Numberoperator-(Number):

C、Numberoperator*(int);

D、Numberoperator/(Number,Number);

标准答案:D

知识点解析:选项D的形式是重载为友元函数,而友元函数不属于类的成员函

数。所以重载为友元函数需要两个参数,通过参数传递的方式得到参加运算的两个

对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参

数只需要一个,其为参加运算的另一个操作数。

22、已知函数f的原型为:voidf(int&a,double-b);变量x、y的定义是:inlx;

doubley:则下列调用该函数的语句中正确的是()。

A、f(x,&y);

B、f(x,y);

C^f(&x,&y);

D、f(&x,y);

标准答案:A

知识点解析:本题考查函数的调用,函数原型中第一个参数为引用,第二个参数为

指针,所以只有A选项正确。

23、在C++中,编译系统自动为一个类生成默认构造函数的条件是()。

A、该类没有定义任何有参构造函数

B、该类没有定义任何无参构造函数

C、该类没有定义任何构造函数

D、该类没有定义任何成员函数

标准答案:c

知识点解析:本题考查默认构造函数的生成,如果用户定义的类中没有声明、定义

任何构造函数,编译器就会自动为该类生成默认构造函数,称为合成的构造函数。

C选项正确。

24、有如下程序:#includeusingnamespacestd:classSample{public:

Sample。什〜Sample。{coutvv,*,;));intmain()(Sampletemp[2],*pTemp[2|;

return0;}运行这个程序输出星号*的个数为()。

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:本题考查两造函数和析构函数,题中定义了对象数组,那么析构时就

析构两次,输出两个*。答案为B。

25、下列有关类成员的叙述中,正确的是()。

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

B、类成员的默认访问权限是私有的

C、类成员函数必须声明为公有的

D、类的静态数据成员不能是常成员

标准答案:B

知识点解析:友元函数不是类的成员函数,但是可以具有类的成员的一些访问权

限,A选项错误;类的成员访问权限默认是私有的,B选项正确;类的成员函数可

以声明为私有的,C选项错误;类的静态数据成员可以是常成员,D选项错误。

26、下列关于虚函数的叙述中,正确的是()。

A、虚函数不得是静态成员函数

B、从虚基类继承的函数都是虚函数

C、只能通过指针或引用调用虚函数

D、抽象类中的成员函数都是虚函数

标准答案:A

知识点解析:本题考查虚函数,在某基类中声明为virtual并在一个或多个派生类

中被重新定义的成员函数称为虚函数,虚函数必须是基类的非静态成员函数,非类

的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数,不能定

义为虚函数,但可以将析构甬数定义为虚函数。所以,A选项正确。

27、下列关于基类和派生类关系的叙述中,正确的是()。

A、派生类中的成员可以访问基类中的任何成员

B、每个类最多只能有一个直接基类

C、基类的构造函数必须在派生类的构造函数体中调用

D、派生类除了继承基类的成员,还可以定义新的成员

标准答案:D

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

式决定的,A选项错误;一个类可以有多个直接基类,B选项错误;如果基类中定

义了缺省构造函数或根本没有定义任何一个构造函数(此时,由编译器自动生成缺

省构造函数)时,在派生类构造函数的定义中可以省略对基类构造函数的调用,即

省略“v基类名>(<参数表>)“,C选项错误。派生类除了继承基类的成员,还可以定

义新的成员,因此本题选D。

28、有如卜类定义:classB{public:voidfunl(){)private:voidfun2(){)

protected:voidfun3(){});classD:publicB{protected:voidfun4(){});若obj

是类D的对象,则下列语句中不违反访问控制权限的是()。

A、obj.funl();

B、obj.fun2();

CNobj.fun3();

D、obj.fun4();

标准答案:A

知识点解析:本题考查派生类对基类成员的访问属性,基类成员在派生类中的访问

属性如下表所示,因此本题选A。

某类中的M件继承方式在派生类中的访问方式

公有成员公有

保护成员公布继承保护

私有成员不可直接访问_______

公有成员保护

保护成员保护继承保护

私彳i成员不可苴接访问

公行成员私有

保护成员私有继承私盯

私立成员不可出接访问

29、有如下类定义:classCup{public:Cup(doubleval,stringcr="red"):

price(val),color(cr){)//①〜Cup();//(2)private:stringcolor;//③

doubleprice=5.8://©);在标注号码的语句行中存在语法错误的是()。

A、①

B、②

C、③

D、@

标准答案:D

知识点解析:本题考查如何初始化对象,其中类的数据成员是不能在声明类时初始

化的,所以D选项错误,在定义类的同时对数据成员price进行赋值是错误的。

30、有如下类定义:classTV{public:TV(intS=41,stringbr="TCL"):size(s),

brand(br){)~TV(){}private:intsize;stringbrand;};若执行语句Tvli,

*net|2|,company[3J;则TV类的构造函数被调用的次数是()。

A、6次

B、4次

C、3次

D、2次

标准答案:B

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

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

31、有如卜程序:#include#includeusingnamespacestd;classMyBag{public:

MyBag(stringbr,stringcr):brand(br),color(cr){++count;}~MyBag(){-count;}

staticintGetCount(){returncount;)private:stringbrand,color;staticint

count;};intmain(){MyBagone("CityLifeH,"Gray"),two("Micky",

"Red");cout<

A、intcount=0;

B、staticintcount:0;

C^intMyBag::count=0;

D、staticintMyBag::count=0;

标准答案:C

知识点解析•:本题考查沟造函数和析构函数,以及静态数据成员,题目中要求输出

2,那么定义两个对象时,就执行构造函数,使得静态数据成员++count,得到2,

那么coun[初始化就应该为0,静态数据成员初始化时,只能在类体外进行初始

化,一般形式为:数据类型类型::静态数据成员名=初值因此本题选C。

32、有如卜程序:#includeusingnamespacestd;classTV{public:Tv(ints=41):

size(s){}voidPrint(){cout«.../vv'N'v

A、/N41/C54

B、/N41/$54

C、/CAI/N54

D、/C41/C54

标准答案:A

知识点解析:本题考查阂造函数相关知识,本题中定义一个对象rooml,执行

room1.Print时执行构造函数给size赋值为41*然后执行voidPrint(){cont«,

/«N<

33、有如下类定义:classVechicle{//基类public:Vechicle(strings):

na【r^s){}protected:stringname;);{//Vechicle的派生类public:

Bicycle(stringname):Vechicle(name))));横线处缺失部分为()。

A、classVechicle:publicBicycle

classBicycle:classVechicle

C、classBicycle:publicVechicle

D、classBicycle:publicclassVechicle

标准答案:C

知识点解析:本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类

的一般形式为:class派生类名:[继承方式]基类名题目中只有公有继承才能使用基

类中name成员,所以C选项正确。

34、有如下程序:#includeusingnamespacestd;classPointtpublic:Point(int

xx=0,intyy=0):x(xx),y(yy)()voidSetX(intxx)(x:xx;}voidSetY(int

yy)(y=yy;}private:intx,y;};classCircle:Point|public:Circle(intr):

radius(r){)intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}

intradius;i;intmain(){Circlecl(5);cl.SetX(l);//①cl.SetY(2);//

@cl.SetRadius(lO);//③cout<

A、①

B、②

C、③

D、④

标准答案:D

知识点解析:本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问

public成员而不能访问priVale成员所以C选项错误,D选项正确,派生类公有继

承基类,但是不能继承基类的私有成员,所以执行cl.Setx(l)错误,同理B选项

错误。

35、有如下程序:#include#includeusingnamespacestd;classPerson{public:

Person(stringn):name(n){cout«,P,;)private:stringname:};class

Date)public:Date(inty=2012,intm=12,intd=21):year(y),month(m),

day(a){cout«,D,;)private:intyear,month,day;);classStudent:public

Person{public:Student(stringn,inty,intm,intd,charc):birthday(y,m,d),

sex(c),Person(n){cout«,S,;)private:Datebirthday;charsex;);int

main(){Studentstul(,,Zhang,\1990,10,1,'F');return0;}运行时的输出结果

是()。

A、S

B、PS

C>DPS

D、PDS

标准答案:D

知识点解析:本题考查派生类的构造函数,派生类的构造函数初始化时按照参数列

表初始化顺序,所以先初始化Per.-son(n),输出P,然后依次输出D和S,答案

为D选项。

36、有如下程序:#include#includeusingnamespaeestd;classInstrument!public:

Instrumenl(slring1="乐器",string无名"):type(t),name(n){}virtualstring

GetType()const{return"乐器";}virtualstringGetName()const{return"无名";}

protected:stringtype,name;|;classPiano:publicInstrument)public:

Piano(stringn,string钢琴"):Instrument(t,n){)stringGetType()const{return

琴“:)stringGetName()const{returnname;}}:intmain(){Instrument*pi=new

Piano("星空");cout<GetType()«,-,<GetName();deletepi;return0;}运行时的

输出结果是()。

A、钢琴■星空

B、钢琴一无名

C、乐器-星空

D、乐器-无名

标准答案:A

知识点解析:本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其

中虚函数为GetType,当定义Instrumcnt*pi=newPiano(“星空")时,调用派生类的

GelType函数,得到lype为钢琴,name为星空,所以输出钢琴一星空。选项A正

确。

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

A、调用模板函数时,在一定条件下可以省略模板实参

B、可以用int、double这样的类型修饰符来声明模板参数

C、模板声明中的关键字class都可以用关键字typename替代

D、模板的形参表中可以有多个参数

标准答案:C

知识点解析:本题考查类模板是类的抽象,类是类模板的实例。函数模板允许使用

多个类型参数,但在lempline定义部分的每个形参前必须有关键字typename或

class;模板的类型参数由关键字class或关键字typename及其后的标识符构成,

(在标准C十十之前关键字typename没有被支持,把这个关键字加人到C十十中的原因

是因为有时必须要靠它来指导编译器解释模板定义。)本题C选项错误。

38、下列模板声明中,有语法错误的是()。

A、templateTfun(TX){returnx;}

B、templateTfun(Tx,inin)}returnx*n;}

C、templateTfun(T*p){return*p;}

D、templateTclassA(Tn;);

标准答案:B

知识点解析:本题考查模板的定义.R选项中x为T类型的.n为int型的.但是

x*n就不一定是T类型的,所以错误答案为

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

()。

A、fstream

B、istream

C^ostream

D、iomanip

标准答案:D

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

以D选项正确。

40、若目前D盘根目录下并不存在lest.txt文件,则下列打开文件方式不会自动

创建test.txt文件的是()。

A、ifstreamfin;fin.open("d

温馨提示

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

评论

0/150

提交评论