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

下载本文档

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

文档简介

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

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

1、软件维护活动不包括()。

A、改正性维护

B、适应性维护

C、重组性维护

D、预防性维护

标准答案:C

知识点解析:软件维护活动包括改正性维护、适应性维护、完善性维护和预防性维

护。

2、数据独立性分为逻辑独立性和物理独立性。当数据的存储结构改变时,其逻辑

结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为

A、物理独立性

B、逻辑独立性

C、数据独立性

D、结构独立性

标准答案:A

知识点解析:数据独立性包括数据的物理独立性和数据的逻辑独立性。物理独立性

是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,即数据在磁

盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据

的逻辑结构。因此,当数据的物理存储改变时,基于逻辑结构的应用程序不用改

变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据

的逻辑结构改变时,用户程序可以不变。

3、冒泡排序算法在最好的情况下的元素交换次数为()次。

A、0

B、1

C、2

D、3

标准答案:A

知识点解析:根据冒泡徘序算法的思想:若待排序的初始序列为正序序列,则只需

进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,

这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数

为0次。

4、在面向对象方法中,类之间的共享属性和操作机制称为()。

A、封装

B、继承

C、多态

D、单态

标准答案:B

知识点解析:在面向对象方法中,一个类可以从直接或间接的祖先中继承所有属性

和方法,它提高了软件的可重用性,是类之间的共享属性和操作的机制。

5、数据库恢复是将数据库从()状态恢复到某一已知的正确状态。

A、未知

B、错误

C、一致

D、完整

标准答案:B

知识点解析:数据库关系系统中具有把数据库从错误状态恢复到某一已知的正确状

态(又称为一致状态或完整状态)的功能,就是数据库的恢复。

6、函数定义的格式是()函数名(形式参数表)函数体v

A、引用类型

B、数值类型

C、标注类型

D、返回类型

标准答案:D

知识点解析:本题考查基本的函数定义格式。

7、在面向对象方法中,类的实例称为()。

A、对象

B、方法

C、类型

D、数据

标准答案:A

知识点解析:类是具有相同特征的对象的抽象,对象是类的实例。

8、关系操作的特点是()操作。

A、分类

B、集合

C、控制

D、互斥

标准答案:B

知识点解析:在关系数据库中,把数据表示成二维表,每一个二维表称为关系,因

此关系其实是数据的集合,对关系的操作其实就是对数据组成的集合之间的操作。

9、数据库保护不包括()。

A、安全性控制

B、并发性控制

C、数据恢复

D、预防性控制

标准答案:D

知识点解析:安全性控制是指防止未经授权的用户有意或无意存取数据库中的数

据,以免数据被泄露、更改或破坏;完整性控制是指保证数据库中数据及语义的正

确性和有效性,防止任何对数据造成错误的操作;并发性控制是指正确处理好多用

户、多任务环境下的并发操作,防止错误发生;数据的恢复是指当数据库被破坏或

数据不正确时,使数据库能恢复到正确的状态。

10、将“x+y*z"中的用成员函数重载,“*”用友元函数重载,应写为()。

A、x.rational+(rational*(y,z))

B、x.const+(const*(y,z))

C、x.operator+(operator*(y,z))

D、x.temp+(temp*(y,z))

标准答案:C

知识点解析:运算符重载为成员函数的形式:“函数类型。peraior运算符(形参

表){函数体;}“;运算符重载为友元函数的形式:"friend函数类型。peralor运算符

(形参表){函数体;}一般来讲,单目运算符最好重载为成员函数,双目运算符

最好重载为友元函数。运算符函数有两种调用形式,第一种是像一般函数那样用函

数名调用,即“y.opera【or*(z)”或者"operator*。,z『;另一种是通过运算符构成表

达式,即“y*z”。

11、指针变量保存的是()。

A、变量地址

R、对象的内存地址

C、常量地址

D、逻辑地址

标准答案:B

知识点解析:指针变量由向的不是变量保存的数据值,而是变量的地址,所以指针

变量保存的是对象的内存地址。

12、()是实现C++语青运行时多态性的机制。

A、静态绑定

B、动态绑定

C、单态绑定

D、多态绑定

标准答案:B

知识点解析:C++语言编译时多态性的机制是静态绑定,实现C++语言运行时多态

性的机制是动态绑定。

知识点解析:面向对象系统包含了3个特征:封装性、继承性和多态性,这3个特

征可以很好地实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定

行为。

18、C++语言程序是从()函数开始执行的。

A、ios

B、main

C、list

D^temp

标准答案:B

知识点解析:所有的C++语言程序都是从main函数开始执行,而普通函数的存在

是为了简化main函数的复杂程度。

19、派生类构造函数的执行顺序是()。

A、派生类、成员对象、基类

B、成员对象、基类、派生类

C、基类、成员对象、派生类

D、成员对象、派生类、基类

标准答案:C

知识点解析:本题主要考查的是派生类构造函数的执行顺序,在C++语言中构造

函数的执行顺序是先基类后派生类,而析构函数的执行顺序正好相反,是先调用派

生类后调用基类。派生类构造函数的执行顺序是先执行基类的构造函数,然后执行

成员对象的构造函数,最后执行派生的构造函数。

20、类模板只可用()型参数。

A、类

B、重载

C、任何

D、派生

标准答案:A

知识点解析:本题考查的是类模板的定义,C++语言中模板分为两种:类模板和函

数模板,类模板只能用于类型参数,函数模板可以重载。

21、C++语言程序的注释可以出现在程序中的任何地方,一个注释的结束标记为

()。

A、/*

B、*/

C、:

D、;

标准答案:B

知识点解析:C++语言程序的注释可以出现在程序中的任何地方,一个注释以“/

*”开始,以“*/”结束。

22、用以下语句调用库函数malloc,使字符指针si指向具11字节的动态存储空

间,则下列横线中应填写的内容是()。st=(char*):

A%malloe(sizeof*l1)

B、char(11)

C、malloc(char(sizeof)*11)

D>malloc(ll)

标准答案:D

知识点解析:malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在

本暨中,可以是mallocdl),也可以借助于sizeof运算符来表示。本题答案也可以

表示为malloc(sizeof(char)*ll)o

23、程序中有如下语句:for(inti=0;i<5;i+4-)cout«*(p+i)«",";能

够依次输出int型一维数组DATA的前5个元素。由此可知,变量p的定义及初始

化语句是()。

A、int*p=DATA

B、DATA二int*p

C、int(cuont*p)=DATA

D、cuont(int*p)=DATA

标准答案:A

知识点解析:本题考查的是指针变量的定义及初始化。题目中要求输出ini型数组

DATA的前5个元素,由表达式“*(p+0)和*(p+4)”可知,变量p是一个指向DATA

首地址的int型指针,故它的定义及初始化语句是“int*p=DATA”。

24、表达式“c3=cl.operator^式)''或"c3=operatorF(cl,c2)”还可以表示为()。

A、c3=c—c2

B、c3=el+c2

C、cl-c3+c2

D、c2=e3+c2

标准答案:B

知识点解析:本题考查的是“十''运算符的重载。运算符函数的调用有两种形式,第

一种是像一般函数那样用函数名调用,即“cl.operatotor+(c2)”或者"operator+(cl,

c2f;另一种是通过运算符构成表达式,即“cl+c2”。

25、下列程序的输出结果是()。#includetemplateTmax(Tx[],intn){inti;T

maxv=x[0];for(i=l;i

A、9,7.3

B、7,7.3

C、9,3.4

D、7,3.4

标准答案:D

知识点解析:函数的功能是求出数组中指定范围的元素中的最大值。所以在a数组

中前4个数据中最大值为7,数组b中前3个元素中最大值为3.4o

26、石.如下定义:classMA)intvalue;public:MA(intn=0):value(n){)};

MA*ta,tb;其中,MA类的对象名标识符是()。

A、ta

B、tb

C>intta

D、inttb

标准答案:B

知识点解析:本题考查的是对象的定义。对象的定义格式为“类名对象名(参数

表);所以题目中的0)是对象名标识符,而ta被定义成类MA的指针,故答案

为tbo

27、下列程序在构造函数和析构函数中申请和释放类的数据成员int*a,申请时使

用形参b初始化a,横线处应填写的语句是()。classA{public:A(intb);〜

A();private:int*a;);A::A(inlb){;)A::〜A(){deletea;)

A、a=newint(b)

B、b二newint(a)

C>a=int(b)

D、b=int(a)

标准答案:A

知识点解析:C++中new和delele的使用有如下几种方式:①a=newint;delete

a:②a=newint(10);delelea:(3)a=newint[10]:delete[]a;。

28、下列程序的运行结果是()。#include#defineN10#defines(x)x*x#define

f(x)(x*x)voidmain(){intil,i2;i1=1000/s(N):i2=1000H(N);coul<

A、1000,10

B、1000,100

C、10,1000

D、100.10

标准答案:A

知识点解析:对于define宏定义语句,系统会在编译前进行替换。本题替换过程

如下:il=1000/s(N)il=1000/s(10)il=1000/10*1011=1000i2=1000/f(N)

i2=IOOO/f(10)i2=1000/(10*10)i2=10

29、下列横线处应填写的内容是()。#includeclassTest{privatetstaticintval;int

a:public:staticintfunc();voidsrune(Test&r);];//初始化静态变量va】int

Test::func(){returnval++:)voidTest::sfunc(Test&r))r.a=125;

eout«"Result3="<

查看答案

标准答案:B

知识点解析:本题考查的是成员函数的调用。因为横线处的作用是调用基类的fun

函数,又因为派生类中也有fun函数,所以必须对fun函数加以限定,即“Base::

fnn();”。

31、卜列程序的运行结果是()。#include(iostream.h)classtest{private:int

hum;public:test();intTEST(){returnhum+100;});test::

test()(num=O:)test::^test(){cout«"Destructorisactive"<

A、

B、

C>

D、

标准答案:A

知识点解析:本题考查基本的类的定义,构造函数以及对象数组的概念。

32、若下列程序运行的输出结果为1,A,10.12,B,3.5则横线处应填写的内

容为()。#inckide(iostream)usingnamespacestd;voidtest(inta,charb,doublec)

1cout<

A、=1

R、二2

C、=3.5

D、=10.1

标准答案:c

知识点解析:本题考查了函数默认参数的应用。本题中第一次调用test函数数值

1,A,10.1;第二次调用少了一个实参,却要求输出2,B,3.5,由此分析,

应将test函数的第三个参数声明为默认参数。且默认为3.5,才能达到要求的输

出结果。故应填入“=3.5”或“c=3.5”。

33、卜列程序运行后的结果为()。#includevoidmain(){inta=l,b=2;boolc=1:

if<b)IIc)cout«"true"<

A、false

O

true

C、2

o

D、1

34、下列下i•语句的循环次数为()。for(inta=0,b=l.b&&a<5;a++);

O

A、0

B、1

C、3

o

D、5

35下列程序的输出结果是()。#includevoidmain(){inta[6]={1,2,3,4,5,

6);for(inti=0;i<5:i++)cout<

O

A、123456

B、12345

O

C>1234

D、12346

36>下列程序的执行结果为()。#includevoidmain(){cout<

O

A、hello

*hcllo

O

C、*****hell0

O

、**********he]]o

37、若已定义“inta[]={l,2,3,4,5,6,7,8,9,10),p=a,i=5;”则

对数组元素不正确的引用是0。

O

A、a[p-a]

B、*(8&a[i])

O

C、p[i]

O

D、*(*(a+i))

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

38、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有

错,请改正其中的错误,使程序正常运行,并使程序输出的结果为Maxis7提示:

max函数用于找出两个数中的最大值,并作为函数值返回。注意:借误的语句在

//********error********的下面,修改该语句即可。试题程序:

#includc(iostrcam)usingnamespacestd;//********error********int

max(inta,intb){if(a<b){intt=a:a=b;b=t;}returnb;)intmain(){intm="

3:intn=7://********error********max(-3,n);cout«"Maxis'<

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

39、使用VC++6.0打开考生文件夹下的源程序文件2.cpp,请实现函数

fun(doublea[],intlen)的如下功能:(l)a口是一个数组,长度为len。(2)a[0]=0?

a[l]=lo(3)a[i+2]=a[i]+a[i+l]o注意:不能修改函数的其他部分。试题程序:

#inckidevoidfun(doublea[],intlen){)voidmain(){doubleaE20]:fun(a,20):

for(inti=0;i<20;i++){std::cout<

四、综合应用题(本题共I题,每题1.0分,共I分C)

40、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不

完整,按要求完成下列操作,将类的定义补充完整,并使程序的输出结果为21。

(1)增加静态私有变量Num,类型为int。请在注释1后添加适当的语句。(2)增加

静态变量Num并初始化为10。请在注释2后添加适当的语句。(3)完成静态函数

get的定义。请在注释3后添加适当的语句。(4)完成对象obj对静态函数get的调

用,使输出结果为21。请存注释4后添加适当的语句。注意:增加或者修改代码

的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:

#include(iostream.h)classTC{//********]********intOwn;public:TC(int

i){Ovvn=i:}//********2********{returnNum+obj->Own:}}://

********3********intmain(){T'C?obj(l1).//********4********coutw<

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

一、程序改错题(本题共[题,每题7.0分,共[分0)

1、使用VC6打开考生文件夹下的工程lest24_l,此工程包含一个源程序文件

test24」.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果

为:00012-100012-121I源程序文件test24」.cpp清单如下:include<

iostreamclass{/****************found*******************/inta—0。

public:A(intaa=O):a(aa){)};classB{inta,b;constintc;Ad;public:

/****************砧皿(|*******************/B0{}

/****************found*******************/B(intaaintbb)・d(aa+bb){a=aa

b=bb;)voidprint(){cout<<a<<',"<<b<<nH<<c<<M"<<endl;));void

main(){Ba,b(l,2);Bx=a,y(b),z(2,l);a.print();b.print();x.print();y.print();z.print();}

标准答臭⑴襦误:inta=0;正确:inta;⑵霜误;B(){}定确:B():c(O){a=0;

b=0;}(3)错误:B(intaa,intbb):d(aa+bb)正确:B(intaa,intbb):c(aa-bb),d(aa+bb)

知识点解析:(1)主要考查考生对于类的数据成员的初始化,在类的定义中不能对

类的数据成员进行初始叱,如果想要进行初始化应该使用构造函数和参数的默认

值:(2)主要考查考生对于含有常数据成员的类的构造函数的掌握,常数据成员必

须在构造函数中进行初始化,而且应该使用参数列表的形式;(3)主要考查考生在

构造函数中对常数据成员的赋值的掌握,常数据成员的赋值应使用初始化列表进

行。

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

2、请编写两个函数intsum_of_powers(intk,intn),powers(intm,intn)>求1〜6

的k次方的和,sum_of_powers中参数k和n分别表示k次方和所求数列中坡大的一

个自然数,最后返回所求值,powers中参数m和n分别表示m为底数n为指数,

最后返回所求值。要求使用for循环和函数嵌套(intsum_of_powers中调用powers)

实现算法。输出结果如卜:sumof4powersofimergersfrom1to6=2275注意:部

分源程序已存在文件test25_2.cpp中。请勿修改主函数main和其他函数中的任何

内容,仅在函数sum_of_powers和powers的花括号中填写若干语句。文件

lesl25_2.cpp的内容如下:#include<iostream.h>constintk(4);constintn(6);int

sum_oflpowers(intk,intn),powers(intm,intn);voidmain(){cout<<Msumof"

<<k<<"powersOfintergersfrom1to"<<n<<;cout<<

sum_oCpowers(k,n)<<endl;)intsum_uCpowci>»(iiilk,intn){)intpowers(int

m,intn){}

标准答案:(l)intsum_oLpowers(intk,intn){intsum(0);for(inti=l;i<=n;i++)

sum+=powers(i,k);returnsum;}(2)intpowers(intm,intn){inti,product1);

for(i=1:i<=n;i++)product*=m;returnproduct;)

知识点解析:本题考查的是考生使用for循环和函数嵌套解决一般问题的能力0注

意最后将计算的值返回。

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

3、使用VC6打开考生文件夹下的工程test23_3,比工程包含一个源程序文件

test23_3.cpp,其中定义了类X和它的友元类Y,但它们的定义并不完整。请按要求

完成下列操作,将程序补充完整。(1)将类X的静态数据成员y初始化为1。请在

注释“〃**1**”之后添加适当的语句v(2)完成类Y的构造函数Y(inti,intj)的定

义,将参数i赋值给类Y的数据成员,X的对象a中的数据成员x,并且把参数j

赋值给类X的数据成员y,请在注释“〃**2**”之后添加适当的语句。(3)完成类Y

的成员函数voidDisplay。的定义,将Y的数据成员,X的对象a中的数据成员x和

类X的数据成员y按照“x=_,y二”的形式显示出来(二”代表一个数字),请在注释

“〃**3**”之后添加适当的语高。输出结果如下:x=5,y=lx=6,y=9x=5,y=9注

意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件

test23_3.cpp清单如下:include<iostream.h>classX{friendclassY;public:

voidSet(inti){x=i;}voidDisplayO{cout<<,'x=,'<<x<<",";cout<<"y=n<

<y<<endl;)private:intx;staticinty;};classY(public:Y(inti,intj)void

DisplayO;private:Xa;};//**]**Y::Y(inti,intj){//**2**}voidY::Display()

{//**3**}voidmain(){Xb;b.Set(5);b.DisplayO;Yc(6,9);c.DisplayO;

b.DisplayO;}

标准答案:(l)intX::y=l;(2)a.x=i;X;;y=j;(3)cout<<nX=,,<<a.x<<",H;

cout<<"y=H<<X::y<<endl;

知识点解析:本题主要考查考生对于友元类的定义和使用友元类访问的应用,注意

(1)中类X的静态成员y应该在类外初始化,而(2)和(3)中对于x和y不同的访问方

式就是因为y是静态成员,是类X的所有对象公有的,必须使用作用域符“::“进行

访问。

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

一、程序改错题(本题共7题,每题7.0分,共I分0)

1、使用VC6打开考生文件夹下的工程tesl26」,此工程包含一个源程序文件

test26_l.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果

为:Valuesare:1,2and3源程序文件test26」.cpp清单如卜;#include<

iostream.h>classCommonBase{public:intx;);

/*****************fY)und*****************/classDeriveC^ommon/X,.public

CommonBase{public:inty;};classDeriveCommonB:publicCommonBase{public:

intz,J*/*************«***found***************太*/classOverlappino,piiblic

DeriveCommonA;publicDeriveCommonB{public:voidDisplayO{cout<<"Values

are:"<<DeriveCommonA::x<"<<y<<"and"<<z<<endl;)};intmain

(){Overlappin。ov。/*****************^^und*****************/ovx—1•ovy—^2*

ov.z=3;ov.DisplayO;return0;}

标准答案:(I)错误:classDeriveCommonA::publicCommonBase正确:class

DeriveCommonA:publicCommonBase(2)错误:classOverlapping:public

DcriveCommonA:publicDeriveCommonB正确:classOverlapping:public

DeriveCommonA,publicDeriveCommonB⑶错误:ov.x=l;正确:

ov.DeriveCommonA::x=l;

知识点解析:(I)主要考查考生对于派生类定义的理解,C++规定的继承格式是在类

名的后面加冒号,之后是继承方式和继承类的名称,题目中错误的使用了作用域运

算符;(2)主要考查考生是否掌握了多继承的定义,多继承的格式基本上和单继承相

同,不过在多个基类之间应该使用逗号分开,题目中错误的使用了分号,分号在

C++中是结束标志;(3)主要考查考生对于派生类的对象访问的掌握,x是类

CommonBase的成员,如果不加限制的访问就会产生二义性,编译程序不知道这个x

是A类的,还是B类的,所以必须使用作用域限制符”::“,为了解决这个问题可以

使用虚基类。

二、简单应用题(本题共/题,每题/.0分,共/分C)

2、请编写函数「un(),其功能是将s所指字符串中除了下标为奇数、同时ASCII值

也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的一个

新的字符串放在t所指的数组中。例如:s所指字符串中的内容为

ABCDEFG12345,其中字符A,的ASCH码值虽为奇数,但元素所在的下标为偶

数,因此必需删除:字符1的ASCII码值为奇数,所在数组中的下标也为奇数,

不删除,最后t所指的数组中的内容应是135。请勿修改主函数main和其他函数

中的任何内容,仅在函数su的花括号中填写若干语句。文件test27_2.cpp的内容

如下;#include<conio.h>#include<stdio.h>#inckide<iostream.h>#include<

string.h>voidfun(char*s,chart[]){)voidmain(){chars[100],t[100];cout<<

"PleaseenterstringS:"VVendl;gets(s);fun(s,t);puts(t);)

标准答案:voidfun(char*s,chart[]){inti,j=O,n;n=strlen(s);for(i=0;i<n;i++)

if(i%2!=0&&s[i]%2!=0){t[j]=s[i]J-H-;}t[j]=>\O,;}

知识点解析:在解答本题时,首先要清楚一点:那就是在字符参与数值运算时,用

的是其ASCII码值来进行计算。另外的一个考查点是判断某数是奇数的方法,即

判断该数与2的余数是否为0。

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

3、使用VC6打开考生文件夹下的工程test25_3,此工程包含一个源程序文件

tesl25_3.cpp,其中定义了用于表示堆的类Sei,但它的定义并不完整。请按要求完成

下列操作,将程序补充完整。(1)完成成员函数向IsMemberOf(intn)的定义,该函

数检查参数n是否在类的数据成员数组elems中,如果在返回1,反之返回0。请

在注释“//**1**''之后添加适当的语句。(2)完成成员函数intAdd(intn)的定义,如

果参数n包含在类的数据成员数组elems中则返回1如果数组超界则返回0,如果

都不是,则将参数n插入到elems中,下标大小为类的数据成员PC,之后PC自加

一。请在注释”之后添加适当的语句。(3)完成拷贝初始化构造函数Set(Set

&s)的定义,请在注释“〃**3**”之后添加适当的语句。输出结果如下:1(}{11

2,3,4,5,6,7,8}注意:除在指定位置添加语句之外,请不要改动程序中的

其他内容。源程序文件test25_3.cpp清单如下:#include<iostream.h>classSet

public:Set(){PC=O;}Sct(Sct&s);voidEmpty(){PC=O;}intlsEmptyO{return

PC==O;)intIsMcmbcrOf(intn);intAdd(intn);voidPrint();private:intelems[100];int

PC;);intSet::IsMemberOf(intn){//**1**if(elems[i]==n)return1;returnO;}int

Set::Add(intn){//**2**return1;elseif(PC>=100)returnO;else{elems[PC++]=n;

return1;})Set::Set(Set&s)(//**3**for(inti=O;i<PC:i++)elems[i]=s.elems[i];}

voidSet::Print(){cout<<")n;for(inti=O;i<PC-1;i++)cout<<elems[i]<<

if(POO)cout<<elems[PC-l];cout<<")"<<endl;)voidmain(){SetA;cout<<

A.IsEmpty()<<endl;A.Print();SetB;for(inti=l;i<=8;i++)B.Add(i);B.Print();)

标准答案:(l)for(inli=O;iVPC;i++)(2)if(IsMemberOf(n))(3)PC=s.PC;

知识点解析:本题主要考查考生对于类的成员函数的定义和拷贝初始化函数的理

解。

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

一、程序改错题(本题共[题,每题7.0分,共I分0)

1、使用VC6打开考生文件夹下的工程lesl29_l,比工程包含一个源程序文件

test29」.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果

为:A:noparametersB:intparameterA:noparametersB:intparameterC:int

parameter源程序文件test29_l.cpp清单如下;#include<iostream.h>classA

।/*****************found*****************/private,A(){cout<<"A:no

parameters'll";}A(inta)|cout<<"A:intparameter\n";}};classB:publicA{public:

B(inta){cout<<"B:inlParameter\n";}};/*****************found

*****************/classC^,piiblicBpublic{public,/*****************fV)unci

*****************/C(mta)::B(a){cout<<"C:intparameter\n";)|;voidmain()

{Bb(l);Cc(2);1

标准答案:(I)错误:private:正确:public:(2)错误:classC:publicB,publicA

正确:classC:publicB⑶错误:C(inta)::B(a){cout<<"C:intparameter\n";)

正确:C(inta):B(a){cout<<"C:intparamcter\nn;)

知识点解析:(1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用

户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现

错误,不能被调用;(2iA已经是B的基类,C公有继承B,A也就成为了C的基

类,根据程序的运行结果可知,C是要公有继承B;(3)派生类的构造函数,初始

化基类的参数,调用基类的构造函数时,使用符号“:”,而不是

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

2、请编写一个函数funiintx,intn),该函数返回x的n次累的值,其中x和n都是

非负整数。x的n次鼎的计算方法是I与x相乘n次,如x的20次鼎的计算为1与

x相乘20次,注意:部分源程序已存在文件test30_2.cpp中v请勿修改主函数

main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。如输入3

和4,输出结果如下:3481文件test30_2.cpp清单如下:#include<iostream.h>

doublefun(intx,intn){|voidmain(){intx,n;cin>>x>>n;cout<<fun(x,n)<<

endl;}

标准答案:doublefun(intx,intn){if(x==0)return0;if(n==0)return1;inty

=1;for(inti=0;i<n;i++)y*=x;returny;)

知识点解析:本题主要考查考生利用已学的基本控制结构与函数知识,解决实际问

题的能力。求x的n次基是数学中常用的运算,编程时在x=0与n=0时需特殊处

理。

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

3、使用VC6打开考生文件夹下的工程test28_3。此工程包含一个test28_3.cpp,其

中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充

完整。(1)定义类Person的私有数据成员forenamesurname和money,forename

和surname都是char型的指针数据,money是double型的数据。请在注释

“〃**1**,,之后添加适当的语句。Q)完成类Person的带三个参数的构造函数

Person(char*f,chur*s,doublem),分别为forename和surname申请新的空间来存

储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,

请在注释“〃**2**”之后添加适当的语句。(3)完成类Person的析构函数的定义,把

forename和surname指向的空间释放,请在注释”之后添加适当的语句。

(4)完成类Person的成员函数display的定义,使其以格式“fomamesurnamehas

money”的形式输出内容,请在注释“〃**4*。”之后添加适当的语句。注意:除在指

定位置添加语句之外,请不要改动程序中的其他内容。输出结果如下:Richard

Berkhas1000.56源程序文件test28_3.cpp清单如下:#include<iostream.h>

#includc<string.h>classPerson{private://**1**doublemoney;public:

Person(char*f,char*s,doublein);〜Person。;voiddisplayO;};Person::Person(char*f,

char*s,doublem){//**2**strcpy(forename,f);surname=newchar[strlen(s)+l];

strcpy(sumame,s);money二m;)Person:Person(){//**3**}voidPerson::display()

{//**4**)voidmain(){PersonpC'Richard","Berk'1,1000.56);p.display();}

标准答案:(1)char*forename;char"surname;(2)forename=newchar|slrlen(O+l|;

(3)delete[]forename;delete口surname;(4)cout<<forename<<n"<<surname<<

"has"<<money<<end1;

知识点解析:主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌

握,具中(2)中new关键字是动态申请空间,里面使用了函数slrlen,该函数是返回

参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记。(3)

中deleie是释放动态内存的关键字,释放一位数组与用的内存格式是先写[],之后

是指针名,括号内不写数组的大小。

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

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

1、某二叉树有5个度为2的结点及3个度为1的结点,则该二叉树中结点个数共

有()个。

A、3

B、6

C、10

D、14

标准答案:D

知识点解析:在二叉树中,度为0的结点数是度为2的结点数加1,故二叉树中结

点数的总和为度为0的结点数、度为1的结点数及度为2的结点数三者相加,得出

结果为14个结点。

2、程序流程图中的菱形框表示的是()。

A、事实描述

B、行动方案

C、逻辑判断

D、流动方向

标准答案:C

知识点解析:绘制流程图时,椭圆形表示事实描述、矩形表示行动方案、菱形框表

示逻辑判断、箭头代表流动方向。

3、软件开发过程主要分为需求分析、设计、编码与测试4个阶段。其中,产生“软

件需求规格说明书''的阶段是()。

A、需求分析

B、软件设计

C、软件编码

D、软件测试

标准答案:A

知识点解析:需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说

明书和需求评审4个方面,产生的主要文档为软件需求规格说明书,它可以为用

户、分析人员和设计人员之间的交流提供方便,直接支持目标软件系统的确认,也

可以作为控制软件开发进程的依据。

4、在数据库技术中,实体集之间的联系可以是一对一或一对多的,那么“学生”和

“可选课程”的联系为()。

A、一对一

B、多对多

C、一对多

D、无联系

标准答案:B

知识点解析:一名学生可以选择多门课程,一门课程也可以由多名学生选择,因此

是多对多的联系。

5、人员基本信息一般包括身份证号、姓名、性别、年龄等。其中可以做主关键字

的是()。

A、身份证号

B、姓名

C、性别

D、年龄

标准答案:A

知识点解析:主关键字是表中区别不同的记录的标识,在该表中只有身份证号能具

有这个作用,所以用其作为主关键字。

6^若表达式“(x+(y-z)*(m/n))+3”中的变量均为double型,则表达式值的类型为

()o

A、double

B、整型

C、double或整型

D、无法判断

标准答案:A

知识点解析:表达式左边为double型,右边为整型,double型和整型相加仍为

double型o

7、有如下循环语句:for(inti=50;i>20;i-=2)cout<

A、2次

B1O次

c15次

D2O次

-答

N:C

知识点解析:i从50,48,46,…到22,一共执行15次。

8、利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句

“int*p=a;”后,利用指针p也可访问该元素,相应的表达式是()。

A、int*p

B、int*a

C^p+i

D、*(p+i)

标准答案:D

知识点解析:p指向数组的首地址,p+i指向数组第1个元素的地址。

9、一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依

次入队,然后再依次退队,则元素退队的顺序为(),

A、5»4>3,2»1,A,B,C,D»E»F

B、1,2,3,4,5,F,E,D,C,B,A

C、A,B,C»D,E,F,5,4»3,2,1

D、1,2,3,4,5,A»B,C,D,E,F

标准答案:C

知识点解析:队列是先进先出的v

对该二叉树进行后序遍历的结果为()。

B、ABDECFGH

C、ACFGHBDE

D、GHFCAEDB

标准答案:A

知识点解析:先遍历左子树,然后遍历右子树,最后遍历访问根结点,各子树都是

同样的递归遍历。

11、软件的组成不包括()。

A、代码

B、数据

C、程序

D、文档

标准答案:A

知识点解析:参考软件的定义。

12、有一个学生选课的关系,其中学生的关系模式为:学生(学号、姓名、班级、

年龄),课程的关系模式为课程(课号、课程名、学时),其中两个关系模式的键分别

是学号和课号,则课程的唯一标识是()。

A、学号

B、姓名

C、课程名

D、课号

标准答案:D

知识点解析:课号是课程的唯一标识,即主键。

13、一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序

遍历结果为()。

A、CFAEBD

B、DEBFCA

C、FCEDBA

D、DEBCFA

标准答案:B

知识点解析♦:对于这类题目,一般通过前序遍历的结果来找根结点,用中序遍历的

结构找分支结点,通过画出该二叉树可得到结构。

14、对软件设计的最小单位(模块或程序单元)进行的测试通常称为()。

A、单位测试

B、单元测试

C、程序测试

D、软件测试

标准答案:B

知识点解析:对模块或函数进行测试称为单元测试,对整个系统进行测试就是系统

测试C

15、实体完整性约束要求关系数据库中元组的属性值不能为空的是()。

A、外键值

B、关键字

C、主键值

D、外码

标准答案:C

知识点解析:在关系模式中,主关键字作为唯一标志,而主关键字的属性(称为主

属性)不能取空值,否则表明关系模式中存在着不匕标识的实体,这与现实世界是

不符合的。

16、在关系A(S,SN,E)和关系B(E,CN,NM)扣,A的主关键字是S,B的主关

键字是E,则关系A的外码是()。

A、S

B、SN

C、NM

D、E

标准答案:D

知识点解析:外码用于建立和加强两个关系之间的连接,通过将关系中主键值的一

列或多列属性添加到另一个关系中,可建立两个关系之间的联系,这个列属性称为

第二关系的外码。

17、若有定义语句“intx=10,y=20,z=20;”,则表达式“x>z&&y==z"的值为()。

A、0

B、10

C、20

D、40

标准答案:A

知识点解析:该题考查了关系运素符。x>z值为0,广二z值为1,两者结果为0。

18、有如下语句序列:intx=-10;whilc(++x){)运行时,while循环体的

执行次数为()。

A、0

B、1

C、9

D、10

标准答案:C

知识点解析:考查了X++和++X之间的区别,前者是先用X后再加1,后者是先给

X加1再使用X。从-9到-1执行9次后循环结束。

19、有如下语句序列:intarr[2][2]={(9,8),{7,6));int*p=arr[0]+l;

cout«*p<

A、6

B、7

C、8

D、9

标准答案:c

知识点解析:该题考查了数组和指针之间的转化,数组的第1个元素地址就是指针

的首地址,*p=&a[0][0],则a[m][n]=*(p+m)+no

20、函数fun的功能是将一个数字字符串转换为一个整数,则横线处应填()。int

fun(cliar*slr){intnum-0;while(*sli){num*-10:num+-:sti++:j

returnnum;}

A^char*str)

B、(*str)

C、(O*str)

D、(*p-'0’)

标准答案:

知识之解析D:每次循环都需要得出指针当前的数字值,则由字符转化为数字的表达

式是“*

21、若耍将函数“voidFriFun(){};"声明为类MyClass的友元函数,则应在类

MyClass的定义中加入语句()。

A、voidFriFun(){);

B、voidFriFun();

C、friendvoidFriFun();

D、friendvoidFriFun()};

标准答案:C

知识点解析:友元函数的声明方式是friend返回值类型函数名称(形参列表)。

22、卜列程序的输出结果为012,根据注释可知横线处应填()。#includeusing

namespacestd:classTest{public:Test(inta){data=a:}~Test(){}void

print(){cout<

A、{Test(l),Test(2),Test(3)}

R、{Test(O),Test(1),Test(2))

C、{cout<

D、(inti=0;i<3;i++)

标准答案:B

知识点解析:简单的类对象的实例化,只需要对该类数组进行实例化即可。

23、要使程序的输出结果为Base,则在横线处填写的派生类Derived的继承方式是

()。#includeusingnamespacestd;classBase{public:void

print(){cout«"Base";));classDerived:Base{};intmain(){Derivedd;

d.print();return0;}

A^public

B、iostrcam

C、tout

D^class

标准答案:A

知识点解析:考查了类的继承方式,派生类访问基类的成员public函数,则继承方

式也应该是public。

24、下列程序的输出结果为1,2.3,2,4.6,横线处应填()。#includeusing

namespacestd;classBasc{public:Base(inta):idala(a){)voidprint(){cout<

A^print()

B、idata(a)

C、(inta)

D^Base(a)

标准答案:D

知识点解析:与上题一致,也是考查了类的继承方式,Derived类继承了Base类的

构造函数。

25、卜列程序的输出结果为-5/8-3/4,横线处应填()。#includeusingnamespace

std;ClassFraction)//“分数”类public:Fraction(doublea,doubleb):num(a),

den(b){}^Fraction(){}//重载取负运算符返回一个分数对象,其分子是原

来分子的相反数Fractionoperator-(){returnf;}voidpiint(){coul<

A、num(a),den(b){}

13、(doublea,doubleb)

C、(-fl),print();

D、Fractionf(num,den);f.num=-hum

标准答案:D

知识点解析:考查了重载运算符的操作,在重载函数中需要取分子的相反数。

26、函数Min的功能是返回具有n个元素的数组array中的最小值,要使程序的输

出结果为1.24,横线处应填()。#includcusingnamespacestd;templateT

Min(T*array,intn)(Tmin=array[O]:for(inti=l;;i++)if(array[i]

A、inti=l

B、array|i|

C、Min(arr,8)

D、array[i]

标准答案:C

知识点解析:考查了模板函数的用法,第1个参数是数组名称,第2参数是数组元

素个数。

27、若x和y是两个整型变量,在执行了语句序列:x=5;y=6;y+=x-;后,

x+y的值为()。

A、5

B、15

C、6

D、11

标准答案:B

知识点解析:y+=x-等同于y=y+x,x=x-l,x-是先用原始x然后再自减,于是

y=6+5=11,x=4,最后x+y=11+4=15。

28、在执行语句序列:inti=0;doi++;while(i*i<10);时,do后面的循环体语

句"iH;',被执行的次数为()。

A、4

B、0

C、10

D、14

标准答案:A

知识点解析:首先执行do,一次不用判断,第3次i变为3,但i*i=9<10符合条

件,于是再执行do,这时i变为4,i*i=16>10,条件济i<10不成立,结束循环。

29、有如卜函数定义:intXfun(int*a,intn){intX^a:for(int*pa=a+l;pa%a+n;

pa++)if(*pa>x)x=*pa;returnX:}若在执行了语句:intx[5]={23,46,78,55,

16}后,通过表达式“xfun(x,5)”调用该函数,则得到的返回值为()。

A、23

B、46

C、78

D、55

标准答案:C

知识点解析:函数Xfun的作用是找出最大的数。

30、有如下函数定义:intXfun(intx){inty=x;{intx=10;y+=x;}returnx+y;}

通过表达式“Xfun(5)”调用该函数,则得到的返回值为()。

A、10

B、20

C、30

D、40

标准答案:B

知识点解析:通过参数造递将5传给x,由语句“y=x:",知y=5,乂由x=10将局

部变量x重新赋值,而y+=x使得y=15,于是x+y=5+15=20,返回20。

31、假定Xcs是一个类,该类中一个成员函数的原型为“Xcs*abc{};",则在类外

定义时对应的函数头为()。

A、Xes

B、abc

C>override

D、overabc

标准答案:C

知识点解析:override是指派生类重写基类的虚函数。

32、要使由语句“DateFirstDay;”定义的对象FirstDay的值为2010午1月1日,横

线处应填()。classDate{public:Date():year(y),month(n),day(d;{)

private:intyear,month,day://依次表示年、月、日};

A、intm=2000,inty=l,intd=l

inty=2000,intn=l,intm=l

C^inty=2000,intm=l,intd=l

D、intd=2000>intm=l,inty=I

标准答案:C

知识点解析:给各个参数赋值。

33、下面的函数定义是某函数模板能够生成的函数实例intsquare(int

温馨提示

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

评论

0/150

提交评论