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

下载本文档

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

文档简介

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

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

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

A、多态性

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使

川用goto语句,所以选择A。

2、下面关于构造函数和析构函数的描述,错误的是()。

A、析构函数中调用虚函数采用静态联编

B、对虚析构函数的调用可以采用动态联编

C、当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数

D、构造函数可以声明为虚函数

标准答案:D

知识点解析:构造函数的.主要作用是对数据成员初始化。构造函数不能声明为虚函

数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对

象的关联。

3、有如卜函数模板:templateTcast(Uu)(returnU;}其功能是将u类型数据转换

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

A^cast(i);

B>casto(i);

C、cast(i);

D、cast(i);

标准答案:D

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

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

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

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

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

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

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

标准答案:B

知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择

Bo

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

A、队列属于非线性表

B、队列在队尾删除数据

C、队列按“先进后出”进行数据操作

D、队列按“先进先出”进行数据操作

标准答案:D

知识点解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端

叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行

的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

6、使用地址作为实参传给形参,下列说法正确的是()。

A、实参是形参的备份

B、实参与形参无联系

C、形参是实参的备份

D、参与形参是同一对象

标准答案:D

知识点解析:地址作为实参,表示实参与形参代表同一个对象。如果实参足数值,

形参也是普通变量,此时形参是实参的备份。

7、阅读下面程序:#includefun(inta,intb){intc;c=a+b;returnC;)void

main(){intX=6»Y=7,z=8,r;r=run((x一,y++,x+y),Z一);cout<

A、11

B、20

C、21

D、31

标准答案:c

知识点解析:由主函数入手,定义变量x、y、z,然后调用函数fun,其中的参数

为(x—,y++,x+y)的计算结果和z—的计算结果,所以调用fun(13,8)计算结果

为21。

8、下列数据结构中,属于非线性结构的是()。

A、循环队列

B、带链队列

C、二叉树

D、带链栈

标准答案:c

知识点.析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结

构。

9、关于虚函数,以下说法正确的是()。

A、若在重定义虚函数时使用了virniaL则该重定义函数还是虚函数

B、虚函数不能声明为友元

C、子类必须重定义父类的虚函数

D^虚函数不能是static的

标准答案:D

知识点解析:在C++中,虚函数可以是友元函数,但不能是静态成员。虚函数的

重定义函数,无论是否使用virtual关键字,仍然是虚函数。所以答案选择D)。

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

A、数据库的建立

B、数据库的调整

C、数据库的监控

D、数据库的校对

标准答案:D

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

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

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

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

A、cout<

cout<

C、cout<

D、cout<

标准答案:D

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

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

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

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

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

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

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

标准答案:A

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

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

所以A错误。

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

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

inputa:":cin»p;}

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

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

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

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

标准答案:B

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

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

析构函数

B、友元函数

C、静态函数

D、构造函数

标准答案:D

知识点解析:当建立一个类对象时,系统会自动调用类的对应的构造函数来构造对

象,本题答案为D。

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

A、形参的个数

B、形参的类型

C、函数的返回值类型

D、常函数关键字const

标准答案:C

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

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

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

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

16、在一棵二叉树中,叶子结点共有30个,度为1的结点共有40个,则该:二叉

树中的总结点数共有()个。

A、89

B、93

C、99

D、100

标准答案:C

知识点解析:根据二叉树性质3:对任何一棵二叉树,度为0的结点(即叶子结点)

总是比度为2的结点多一个。所以该二叉树度为2的结点有29个,故总结点数=30

个叶子结点+29个度为2的结点+40个度为1的结点=99个结点。

17、下列关于虚函数的表述中,正确的是

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

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

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

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

标准答案:A

知识点解析:在函数形参表后面添加可以指定该函数为纯虚函数,类中含有一

个或多个纯虚函数,该类就是抽象类,选项B错误;可以通过对象指针或引用调

用虚函数,也可以使用对象直接调用虚函数,只不过使用对象直接调用虚函数和调

用普通成员函数一样,没有动态绑定,不具有多态性,选项C错误;抽象类中的

成员函数至少有一个纯虚函数,对虚函数没有要求,选项D错误;一个函数定义

为虚函数,它就是动态绑定的,在派生类中可以覆盖,而静态成员函数是属于整个

类,不属于某个类对象,对于每个类来说只有一份代码,所有同类的对象共享这份

代码,没有动态绑定的必要,选项A正确;答案为A。

18、执行语句:{coutVVsetfin('*')VVsetw(10)VVsetfin('#')VVleftVV123V

VPKYVendl;return0;}后将输出()。

A、[23********OK

B、123#######OK

C、]23""OK"">冰水中水

D、123#######OK#######

标准答案:B

知识点解析:cout.fill()用于设置或返回输出的填充字符,默认是空格,fill

O函数的设置一直有效,直到下一个fll()函数改变该值为止。setw(intn)作

用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输

入或输出后,宽度设置自动恢复为0。注意:默认为输出数据在指定宽度内右对

齐。

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

A(){coutVV"A";}};classB{public:BO{cout<<"B";)};classC:publicA{B

b:public:C(){cout<<nC";)}:intmain(){Cobj:return0;}执行后的输出结果是

()。

A、ABC

B、BAC

C、ACB

D、CBA

标准答案:A

知识点解析:C++程序中的执行子类,首先执行基类的构造函数,然后执行数据成

员类的构造函数,最后执行子类本身的构造函数,所以输出结果为ABC。

20、除了显式定义的构造函数外,类中还有可能包含编译器自动生成的构造函数,

因此一个类所拥有的构造函数的至少有

A、1个

B、2个

C、3个

D、4个

标准答案:A

知识点解析:一个类,如果没有显示定义的构造函数,那么编译器自动生成一个构

造函数;一个类,如果显示定义了构造函数,无论个数多少,编译器也不会再生成

任何构造函数,所以一个类所拥有的构造函数至少有1个,答案为A。

21>有如下的类声明:#includeusingnamespacestd;classAA{public:virtualvoid

disp(){cout«'A';}};classBB:publicAA{public:voiddisp(){cout«,B,;}};class

CC:publicBB{public:virtualvoiddisp(){coutvv'C';}};voidplot(AA

&a){a.dispO;}intmain(){BBbb;CCcc;BB&rb=cc;plot(bb);plot(cc);rb.dispO;

return0;)运行这个程序而输出是

A、AAC

B、AAB

C、BCC

D、BCB

标准答案:C

知识点解析:程序定义了类AA,成员函数di*p。为虚函数:类RR公有继承AA,

重新定义了disp。函数;类CC公有继承BB,同样重新定义了disp()函数;类BB

中,虽然disp()未用virlual修饰,但是由虚函数性质可知,BB中的disp()函数仍然

是虚函数;main。函数中,创建BB对象bb,CC对象cc,使用cc初始化BB类引

用rb,然后调用plot函数;plot函数的形参是AA类的引用,通过AA类引用调用

disp函数,满足多态性条件,将根据引用所指对象的类型来决定调用哪个disp函

数:所以plot(bb)调用类BB中的disp函数,plot(cc)调用CC中的disp函数;输出

分别为:“B“、”C”;另外由于rb为BB类引用,所指对象是cc,所以运行rb.disp。

时调用的是CC中的disp()函数,输出“C”,综上,程序输出为:“BCC”;答案为

Co

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

A、24

B、25

C、26

D、50

标准答案:B

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

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

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

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

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

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

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

标准答案:B

知识点解析:友元函数是指某些虽然不是类成员却能访问类的所有成员的函数,故

友元函数不是类的成员函数。类成员的默认访问权限是私有的,类的成员函数可以

是3种权限中的一种,静态数据成员可以为常成员。故本题答案为B。

24、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(int

i=0){cout«1;}MyClass(constMyClass&x){cout«2;}MyClass&operator=(con$t

MyClass&x){cout«3;return+this;}~MyClass(){cout«4;}};intmain(){MyClass

objl(l),obj2(2),obj3(objl);return0;)执行这个程序的输出结果是()。

A、112444

B、11114444

C、121444

D、11314444

标准答案:A

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

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

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

25>有如下类定义:classBag{public:Bag。;〃①voidSetSize(strings);〃②string

GetSize()const;〃③friendvoidDisplay(Bag&b);〃④private:stringsize;};在标注号

码的4个函数中,不具有隐含this指针的是

A①

B②

c③

D④

标准答案:D

知识点解析:当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自

动将对象本身的地址作为一个隐含参数传递给函数,所以①②③正确使用this指

针。

26、要将前缀运算符-重载为Incr的非成员函数,下列原型中,可作为该重载函数

原型的是

A、Incr&operator—();

B、Incroperator-(int);

C、Incr&operator—(Incr&);

D、Incroperator—(Incr&,int);

标准答案:C

知识点解析:本题考查重载运算符,题目中要求将运算符--重载为Incr的非成员函

数,只有C选项能够将运算符重载为依成员函数。

27、若要重栽+、=、<<、==和[]运算符,则必须作为类成员重载的运算符是

A^+

B、十和二

C、=和[]

D、二二和"

标准答案:C

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

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

28、有如F程序:classBase{public:intdata;};classDerived1:publicBase{);class

Derived2:protectedBase{};intmain(){Derived1dl;Derived2d2;d1.data=0;〃①

d2.data=0;//@return0;}下列关于轴序编译结果的描述中,正确的是()。

A、①②皆无编译错误

B、①有编译错误,②无编译错误

C、①无编译错误,②有编译错误

D、①②皆有编译错误

标准答案:C

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

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

类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,

其私有成员仍为基类私有。本题中Derived】公用继承Base,所以①编译正确,

Derived2保护继承Base,所以②编译不正确。

29>有如下类定义:classBase{intm;public:intn;protected:intp;);classDerived:

privateBase{intk;public:voidf();};则允许成员函^f访问的数轴成员的个数是

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:私有继承中,基类的所有成员(除了private成员)在派生类中为

private成员;另外C++中,class关键字定义的类,默认的访问级别为private;题

目中Derived以private方式继承Base,所以Derived中private成员有:n、p、k,

没有public和protected成员,成员函数f可以访问Derived的private成员、public

成员知protected成员,答案为Co

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

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

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

被修改

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

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

标准答案:D

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

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

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

静态变量。

31、有函数模板声明和一些变量定义如下:templateT1sum(T2,T3);doubledl,d2;

则下列调用中,错误的是

A^sum(dl,d2);

B>sum(dl,d2);

C、sum(dl,d2);

D^sum(dl,d2);

标准答案:D

知识点解析:本题考查函数模板的定义和使用,编译器无法推演出T1的类型,D

选项里没有写明T1的类型,而sum函数需要T1的类型去特化出一个函数能够处

理dl和d2这两个参数的函数。其他的都可以。

32、有如下程序:#includeusingnamespacestd;classAppliance{public:Appliance()

{cout«,A,;}〜Appliance。{}};classTV:publicAppliance{public:TV(int

s=41):size(s){cout«,T,<

A、T4i

B、AT41

C、T41T41

D、AT4IAT41

标准答案:B

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

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

义rooml时,先调用基类构造函数输出A,然后执行TV的构造函数输出T4L而

定义对象指针,并不会调用构造函数,所以什么也不输出,结果为AT41,B选项

正确。

33、有如下程序:#include#includeusingnamespacestd;classTV{public:TV(int

s=41):size(s){coutw'N';}TV(constTV&t):size(t.size){coutw'C';}〜TV()

{cout«,D,;}voidPrint()const{cout<Print();deleteroom3;return0;)运行时的输出

结果是

A、NC54

B、NCN54D

C、NNN54DDD

D、NCN54DDD

标准答案:D

知识点解析:本题考查两造函数相关知识,本题中定义一个对象rooml,输出N,

定义room2时输出C,定义room3时输出N,然后执行room3.Print时,输出54,

最后执行三个析构函数输出DDD,所以答案为D。

34、ClassA是一个类,现在执行下面语句:ClassAa[2],*b[2],*c=newClassA;调用

ClassA类的构造函数的次数是

A、1

B、2

C、3

D、5

标准答案:C

知识点解析:创建对象数组时,需要用默认构造函数初始化每个元素,所以

ClassAa[2]需要调用2次构造函数;创建对象指针数组b,数组b的元素是对象指

针,没有生成新的对象,不需要调用构造函数;创建对象指针c,并使用动态分配

方式创建新的对象,将新对象的指针赋给c,需要调用构造函数;综上所述,答案

为C。

35、有如下两个类定义:classAA{};classBB{AAvl,*v2;BBv3;int*v4;);其中

有一个成员变量的定义是错误的,这个变量是

A、vl

B、v2

C、v3

D、v4

标准答案:C

知识点解析:本题考查类的定义,类定义中不能包含自己本身的对象,否则会引起

像无限递归的问题,结果就是内存被消耗殆尽。所以C选项错误。

36、有如下程序:#includeusingnamesprleestd;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

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

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

出3;对象b为常对象,执行b.get()后,会执行常构造函数,输出8。

二、基本操作题(本题共I题,每题1.0分,共/分C)

37、下列给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的

数去掉,剩余的数按原来从高位到低位的顺序组成一个新数,并通过形参指针n传

回所指变量。例如,若输入一个数27638496,则新数为739。请在程序的中括号

处填入正确的内容并将中括号删除,使程序得出正确的结果。注意:部分源程序

给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includevoid

fun(unsigncdlong*n){unsignedlongx=0,i;intt;i=l;while(*n)/

*********Cund*********/{t=*n%[1]•/*********found*********/if(t%

2!=[2]){x=x+t*i;i=i*10;)*n=*n/10;!*********nd*********1*n=

[3];)main(){unsignedlongn=-1;while(n>99999999IIn<0){printf("Please

input(0<n<100000000):");scanf("%ldM,&n);)fun(&n);printf("\nThesuli

is:%ld\n",n);)

标准答案:(l)10(2)0(3)x

知识点解析:填空1:通过I对10求余,取出该数值的各个位。填空2:通过if条

件语句实现奇偶数的判定。如果条件表达式对2求余为。即为偶数,反之则为奇

数。填空3:最后将剩余的数赋给n所指向的元素。

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

38、下列给定程序中,函数fun的功能是:求出如下分数列的前n项之和。

_5__8_132£

T'T'7'T'8'而'…和值通过函数值返回main函数。例如,若n=5,则应输出

8.391667。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在

文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结

构!试题程序:#include#include#include/*********found*********/fun(intn)

{inta,b,c,k;doubles;s=0.0;a=2;b=l;for(k=1;k<=n;k++){/

*********found*********/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;}

main(){intn=5;systemf'CLS");printf(n\nThevalueoffunctionis:%lf\n",

fun(n));)

标准答案:(1Roublefun(intn)(2)s=s+(double)a/b;

知识点解析:(1)由于返回值s是double型的,所以函数要定义为double型。(2)C

语言规定所有关键字都必须用小写英文字母表示,所以s=s+⑴。ublc)a/b;应改为

s=s+(double)a/b:。

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

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

包含了类Integers和主函数main的定义。一个Integers对象就是一个立数的集合,

其中包含0个或多个可重复的整数。成员函数add的作用是将一个元素添加到集合

中,成员函数remove的作用是从集合中删除指定的元素(如果集合中存在该元

素),成员函数sort的作用是将集合中的整数按升序进行排序。请编写这个son函

数。此程序的正确输出结果应为:528245327527663152824532752766

31652824532752766316195284532752766316195284532752766

3161942344556192728316675要求:补充编制的内容写在“//

*********333********x*与“//*""""^GGG********51t”之间,不得修改程序的

其他部分。注意:相关文件包括:main,cpp^Integers,h。程序最后调用

writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件

out.dat中。输出函数writeToFile已经编译为obj文件。//Integers,h#ifndcf

INTEGERS#defineINTEGERS#includeusingnamespacestd;constint

MAXELEMENTS=100;//集合最多可拥有的元素个数classIntegers{int

elemlMAXELEMENTS];//用于存放集合元素的数组intcounter;//用于记

录集合中元素个数的计数器public:Integers():counter(O){)//创建一个空集合

Integers(intdata[],intSize)://利用数组提供的数据创建一个整数集合void

add(intelement);//添加一个元素到集合中voidremove(intelement);//删除

集合中指定的元素intgetCount()consl{returncounter;)//返回集合中元素的个数

intgetElement(inti)const{returnelem[i];)//返回集合中指定的元素voidsort。;

//将集合中的整数按由小到大的次序进行排序voidshow()const;//显示集合

中的全部元素};voidwriteToFile(constchar*path);#endif//main,epp

#include"Integers.h"#includeIntegers::Integers(intdata[],intsize):

counter(0){for(inti=0;i=0;J—)if(elem|j|==element)break;for(inti=j;i

标准答案:for(inti=0;ii;j-)//从最后一位到i到前一位遍历elem

if(elem[i]>elem[j])//如果elem[i]大于则两值替换{inttemp=elem[i];

//定义整形变量temp并赋值为elcm[i];elem|i|=elem|j|;//给elem[i]赋值

elemfi]elem[j]=temp;//给赋值temp)

知识点解析:主要考查考生对排序算法的掌握,要排序的数组为elem,元素个数

为counter,在这里使用下标i和j进行比较,当时,数组元素通过

中间变量temp进行交换。

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

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

1、在数据库设计中,将E—R图转换成关系数据模型的过程属于()。

A、需求分析阶段

B、概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据

库中,即设计出表,所以属于逻辑设计阶段。

2、以下程序的执行结果是()。#includeintfun(intb|],intn){inti,r==l;

for(i=0;i

A、5

B、6

C、7

D、8

标准答案:B

知识点解析:由程序的main函数入手,调用fun函数,其中参数为数组a和3。如

n函数的功能是for循环中由第一个数组元素开始到第三个元素进行累积。

3、有如下类定义:classMyClass{public:private:intdata;);若要为

MyClass类重载流输入运算符使得程序中可以“cin»obj;”的形式改变

MyClass类的对象obj中数据成员data的值,则横线处的声明语句应为()。

A、friendistream&operator»(istream&is,MyClass&a);

B、friendistream&operator»(istream&is,MyClassa):

C、istrcam&opcrator»iistrcam&is,MyClass&a);

D、istream&operator»(istream&is,MyClassa);

标准答案:A

知火点解析:本题考查重载流运算符根据重载规则,本题答案为A。

4、下列叙述中,不属于设计准则的是()。

A、提高模块独立性

B、使模块的作用域在该模块的控制域中

C、设计成多入口、多出口模块

D、设计功能可预测的模块

标准答案:C

知识点解析:大量软件没计表明,以下的设计准则是可以借鉴为设计的指导和对软

件结构图进行优化,这些准则是:提高模块独立性:模块规模适中:深度、宽度、

扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面

的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。

5、数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()。

A、数据与程序独立存放

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

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

D、以上三种说法都不对

标准答案:D

知识点解析:数据独立性是数据与程序问的互不依赖性,即数据库中数据独立于应

用程序而不依赖于应用程序。所以选项A),选项B)和选项C)都不正确。

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

A、C++已有的任何运算符都可以重载

B、运算符函数的返回类型不能声明为基本数据类型

C、在类型转换符函数的定义中不需要声明返回类型

D、可以通过运算符重载来创建C++中原来没有的运算符

标准答案:c

知识点。析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只

能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能

改变运算符运算对象的个数;④重我不能改变运算符的优先级和结合性;⑤直载

运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型

的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类

型。故本题答案为C。

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

A^cout»,A,表达式可输出字符A

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

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

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

标准答案:A

知识点解析:本题考查C++流,想要输出字符“A",则应该是coutvv“A”,所以本

题答案为A。

8、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构

成。下列图符名标识的图符不属于数据流图合法图符的是()。

A、控制流

B、加工

C、存储文件

D、源和潭

标准答案:A

知识点解析:数据流图用于抽象描述一个软件的逻辑模型•它由一些特定的图符构

成,包括4个方面,即加工、数据流、存储文件、源和潭。

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

cout«^*^;

A、48

B、49

C、50

D、51

标准答案:B

知识点解析:本题考查f。「循环语句,-i表示用之前先减1,那么这个for循环语

句只有50到2时才会输出“*”,所以总共输出49次。

10、有如下类说明:classTeslClass{intx;public:TestClass(intn){x=n;}};

classTestClass1:publicTestClass{inty;public:TestClassl(inta,intb););在

构造函数TestClassl的下列定义中,正确的是()。

A、TestClassI::TestClassl(inta,intb):x(a),y(b){}

B、TestClass1::TestClassl(inta,intb):TestClass(a),y(b){}

C、TestClass1::TestClass1(inta,intb):x(a),TestClassl(b){)

D、TestClassl::TestClassl(inta.intb):TestClass(a),TestClassl(b){)

标准答案:B

知识点解析:题目中程序TestClass为基类,TestClassl为派生类,派生类构造函数

的一般形式为:派生类沟造函数名(总参数类表):基类构造函数名(参数列表){派生

类中新增数据成员初始叱语句}。派生类TeslClassl的基类函数名为TestClass,总

参数为inta,intb,所以选择B)。

]ZlABC

zb习c31

bLIJ

11、有三个关系R、S和T如下:I।।

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

A、自然连接

B、差

C、交

D、并

标准答案:B

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

进行的是差的运算。

12、下述青争态数据成员的特征中,错误的是()。

A、说明静态数据成员时前面要加修饰符static

B、静态数据成员要在类体外进行初始化

C、引用静态数据成员时,要在静态数据成员名前加〈类名〉和作用域运算符

D、静态数据成员不是所有对象所共用的

标准答案:D

知识点解析:静态数据成员是在类装载的时候就分配了内存空间,而类的成员变量

是在生成对象时分配内存空间。所以只要类装载了,就可以用类名访问静态数据成

员。事实上,该类的所有对象都只保存类静态数据成员的引用,它们都指向同一块

内存区域。

13、有如卜类定义:classPoint{private:staticinthow_many;);

how_many=0;要初始化Point类的静态成员how_many,下画线处

应填入的内容是()。

A、int

B、staticint

C^intPoint::

D^staticintPoint::

标准答案:c

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

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

案为C。

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

A、虚函数是一个static类型的成员函数

B、虚函数是一个非成员函数

C、基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必

加virtual说明

D、派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型

标准答案:C

知识点解析:此题考查虚函数的概念。在成员函数声明的前面加上virtual修饰,

即把该函数声明为虚函数。虚函数只能是类中的一个成员函数,但不能是静态成员

函数,所以选项A)和B)错误:在派生类中重新定义虚函数时必须有相同的函数类

型,包括函数的返回类型、函数名、参数个数、参数类型的顺序必须相同。故选项

D)错误。

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

A、软件交付使用后还需要进行维护

B、软件一旦交付使用就不需要再进行维护

C、软件交付使用后其生命周期就结束

D、软件维护是指修复程序中被破坏的指令

标准答案:A

知识点解析:软件的运行和维护是指将己交付的软件投入运行.并在运行使用中不

断地维护,根据新提出的需求进行必要而FL可能的扩充和删改。而软件生命周期是

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

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

A、-369

B、369

C、0.369

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

标准答案:B

知识点解析:A是有符号数,C是浮点数,D是结合并不是类的实例化对象,只有

B完全符合。

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

classMyBag{public:MyBag(stringbr,stringcr):brand(br),

color(cr){++count;}~MyBag(){-----count;)staticintGetCounl(){returncount;}

private:stringbrand,color;staticintcount;):intmain(){MyBag

oneCCityLifell,"Gray"),two(,,Micky>,,"Red");cout<<MyBag::

GetCountO;return0;}若程序运行时的输出结果为2,则横线处缺失的语句是

()。

A、intcount=0;

B、smileintcount=0;

C、intMyBag::count=0;

D、stailcintMyBag::count=0;

标准答案:C'

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

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

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

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

18、有如下类定义和变量定义:classA{public:A()(data=0;)A(int

x){data=x;}〜A(){}voidoutData(){cout<

a.outData();

BNb.outData();

C、a.getData(IO);

D^b.getData(lO):

标准答案:B

知识点解析:常对象是指对象的所有成员的值都不能被修改,常成员函数是指只能

引用本类的数据成员,而不能修改它们的成员函数:常成员函数可以被常对象调

用,也可以被普通对象调用,而普通成员函数只能被普通对象调用,不能被常对象

调用,题意中对象a是普通对象,b是常对象,ouiDala。是普通成员函数,

getData。是常成员函数,所以选项B中通过常对象b调用普通成员函数outData()是

错误的,选项A、C、D都正确;本题答案为B。

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

A、模板参数可以有多个

B、模板参数是参数化的类型

C、关键字class可以修饰模板参数

D、模板参数可以是一个算术表达式

标准答案:D

知识点解析:模板参数可以有多个,选项A正确;模板参数是参数化的类型,选

项R正确;模板参数可以跟在关键字class或typename之后定义,选项C正确;模

板参数可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参,选项

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

20、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库

系统阶段。其中数据独立性最高的阶段是()。

A、数据库系统

B、文件系统

C、人工管理

D、数据项管理

标准答案:A

知识点解析:数据库系统的一个重要1=1标就是要使程序和数据真正分离,数据独立

性包括数据的物理独立性和数据的逻辑独立性。相对于文件系统、人工管理和数据

项管理,数据库系统的数据独立性大大增加。

21、下列各序列中不是堆的是

A、(91,85,53,36,47,30,24,12)

B、(91,85,53,47,36,30,24,12)

C、(47,91,53,85,30,12,24,36)

D、(91,85,53,47,30,12,24,36)

标准答案:C

知识点解析:若有n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当

满足下列条件时称为堆:大根堆,所有结点的值大于或等于左右子结点的值;小根

堆,所有结点的值小于或等于左右子结点的值。A、B、D选项属于大根堆,C选

项由于47<91,判断属于小根堆,但91>85,不满足条件,不是堆,故正确答案为

C选项。

22下列选项中,不是C++关键字的是

A、int

B、static

C、enum

D、final

标准答案:D

知识点解析:A选项中.int是定义整型数据的关键字:R选项中,static是定义静

态数据类型的关键字;C选项中cnum是定义枚举类型的关键字;答案为D。

设二叉树如下:

A

八则中序序列为

A、ABDEGCFH

B、DBGEAFHC

C、DGEBHFCA

D、ABCDEFGH

标准答案:B

知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访

问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、

后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为

ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA,故B选项正

确。

24、有如下程序:#include#includeusingnamespacestd;classInstrument!public:

Instrument(stringt=”乐器[stringn="无名"):type(t),name(n){}stringGetType()const

{return”乐器";}stringGetName()const{return"无名";}protected:string

type,name;};classPiano:publicInstrument{public:Piano(stringn,stringt="钢琴

"):Instrument。,n){}stringGetType()const{return"钢琴";}stringGetName()const

{returnname;}};intmain(){Instrument*pi=newPiano("星空”);

cout<GetType()«,-,<GetName();deletepi;return0;}运行时的输出结果是

A、乐器•星空

B、乐器-无名

C、钢琴-星空

D、钢琴.无名

标准答案:B

知识点解析:本题考查派生类的应用,本题中基类Instrument,派生类Piano,当

定义Instrument*pi=newPiano(“星空")时,pi为指向基类的指针,那么执行

pi->GetType()时调用基类的GetType函数,得到type为乐器,name为无名,所以

输出乐器-无名。选项B正确。

25、执行下列语句段后intn=0;for(inti=70;i>0;i-=3)n++;n的值是

A、23

B、24

C、25

D、71

标准答案:B

知识点解析:for循环中,i初值为70,每次循环i自减3,n自增1,循环终止条

件为i>0不成立;由70/3=23,可知循环最少执行23次,之后i取值为1,仍然满

足循环条件,所以循环总共执行24次,n自增24次,答案为B

26、模板对类型的参数叱提供了很好的支持,因此()。

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

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

C、在类模板中的数据成员都具有同样类型

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

标准答案:B

知识点解析:本题考查类模板的基本概念。类模板的定义和声明都以关键字

lemplate开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号”<>”括起

来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。

类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。

所以B选项正确。

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

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

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

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

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

标准答案:A

知识点解析:本题考查C++流.想要输出字符"A",则应该是cout<<”A".所以本

题答案为A。

28、下面叙述中错误的是()。

A、软件测试的目的是发现错误并改正错误

B、对被调试的程序进行“错误定位”是程序调试的必要步骤

C、程序调试通常也称为Debug

D、软件测试应严格执行测试计划,排除测试的随意性

标准答案:A

知识点解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错

误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以

排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排

错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除

测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举

测试不可能、妥善保存测试计划等文件。

29、下列叙述中正确的是

A、每一个结点有两个指针域的链表一定是非线性结构

B、所有结点的指针域都为非空的链表一定是非线性结构

C、循环链表是循环队列的链式存储结构

D、线性结构的存储结点也可以有多个指针

标准答案:D

知识点解析:一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;

每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中

习惯称为线性表。双向链表结点具有两个指针域,属于线性结构,A选项错误。循

环链表所有结点的指针域都为非空,属于线性结构,B选项错误。循环链表是链

表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置

插入、删除,C选项错误。双向链表结点具有多个指针域,D选项正确。

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

A、概念模式

B、内模式

C、外模式

D、数据模式

标准答案:D

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

31、下列关于基类和派生类关系的叙述中,正确的是

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

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

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

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

标准答案:D

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

决定,一个类可以有多个直接基类,如果基类中定义了缺省构造函数或根本没有定

义任何一个构造函数(此时,由编译器自动生成缺省构造函数)时,在派生类构造

函数的定义中可以省略对基类构造函数的调用,即省略”〈基类名>(<参数表>)”,本

题答案为D。

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

A、外模式

B、内模式

C、概念模式

D、逻辑模式

标准答案:B

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

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

式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又

称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。

33、有如下类声明:classBase{protected:intamount;public:Base(intn=0):

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

{protected:intvalue;public:Dcrivcd(intm,intn):valuc(m),Basc(n){)int

getData()const{returnvalue+amount;)};已知x是一个Derived对象,则下列表达

式中正确的是()。

A、x.value+x.getAmountO

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选项也错误.故答案为

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

应用软件的是()o

A、学生成绩管理系统

B、C语言编译程序

C、UNIX操作系统

D、数据库管理系统

标准答案:A

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

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

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

35、有如卜类定义:classBag{public:Bag(strings,stringcr);〃①〜Bag();//②string

GetSize();〃③staticintGetCount();//(4)private:stringsize,color;staticintcount;|;在

标注号码的4个函数中,不具有隐含this指针的是

A、①

B、®

C、③

D、©

标准答案:D

知识点解析:当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自

动将对象本身的地址作为一个隐含参数传递给函数,所以①②③正确使用ihis指

针。而④为静态成员,没有this指针,答案为D选项。

36、下面描述中不属于软件需求分析阶段任务的是

A、撰写软件需求规格说明书

B、软件的总体结构设计

C、软件的需求分析

D、软件的需求评审

标准答案:B

知识点解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写

需求规格说明书和需求评审。故B选项正确。

37、有如下程序:#includeusingnamespacestd;classA{public:staticinta;void

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

obj.a;return0;)运行时输由的结果是()。

A、0

B、1

C、2

D、3

标准答案:B

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

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

38、有如下程序:#includeusingnamespacestd;classSample{friendlong

fun(Samples);public:Sample(longa){x=a;)private:longx;};longfun(Samples)

{if(s.x<2)return1;returns.x*fun(Sam

温馨提示

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

最新文档

评论

0/150

提交评论