2021年广东省惠州市全国计算机等级考试C++语言程序设计真题(含答案)_第1页
2021年广东省惠州市全国计算机等级考试C++语言程序设计真题(含答案)_第2页
2021年广东省惠州市全国计算机等级考试C++语言程序设计真题(含答案)_第3页
2021年广东省惠州市全国计算机等级考试C++语言程序设计真题(含答案)_第4页
2021年广东省惠州市全国计算机等级考试C++语言程序设计真题(含答案)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

2021年广东省惠州市全国计算机等级考试

C++语言程序设计真题(含答案)

学校:班级:姓名:考号:

一、1.选择题(10题)

1.对于任意一个类,析构函数的个数最多为o

A.0B.1C.2D.3

2.下列有关类和对象的叙述不正确的是()。

A.任何一个对象都归属于一个具体的类

B.类与对象的关系和数据类型与变量的关系相似

C.类的数据成员不允许是另一个类的对象

D.一个类可以被实例化成多个对象

3.下列关于getline()函数的描述中,不正确的是()。

A.getline。函数是用来从键盘上读取字符串的

B.getline。函数读取字符串长度是受限制的

C.getline()函数读取字符串时,遇到终止符时就停止

D.getline()函数中所使用的终止符只能是换行符

4.有以下程序:#include<iostream>usingnamespacestd;class

BASE{private:chare;public:BASE(charn):c(n);{}virtual~BASE()

{cout<<c;}};classDERIVED:publicBASE{charc;p

A.XYB.YXC.XD.Y

5.为用户与数据库系统提供接口的语言是

A.高级语言B.数据描述语言(DDL)C.数据操纵语言(DML)D.汇编语言

6.在类声明中,紧跟在“public:“后声明的成员的访问权限是()o

A.私有B.公有C.保护D.默认

7.若有以下程序:#include<iostream>usingnamespacestd;classA

{private:intx;public:intx;voidsetx(inti){x=i;}intgetx(){return

x;}};classB:publicA{private:intrn;public:intp;voidsetvalue

(inta,intb,intC){setx(A);z=b;m=c;}voiddisplayO{cout<<

getx()<<<<z<<<<m<<endl;}};intmain(){Bobj;

obj.setvalue(2,3,4);obj.displayO;return0;)程序运行以后的输

出结果是

A.产生语法错误B.2,3,4C.2,2,2D.4,3,2

8.已知函数f的原型是voidf(int*a,long&B);,变量vl、v2的定义

是:intvl:longv2:下列调用语句中正确的是

A.f(vl,&v2);

B.f(vl,v2);

C.f(&vl,&v2);

D.f(&vl,v2);

9.算法的空间复杂度是指

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

B.算法所处理的数据量

C.算法程序中的语句或命令条数

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

10.已知各变量的定义如下inti=8,k,a,b;unsignedlongw=5;double

x=1.42,y=5.2;则以下符合C++语言语法的表达式是()。

A.a+=a-=(b=4)*(a=3)B.a=a*3+2C.x%(-3)D.y=floati

二、单选题(13题)

11.有如下程序:

#include<iostream>

usingnamespacestd;

classXA{

inta;

public:

staticintb;

XA(intaa):a(aa){b++;}

〜XA(){}

intget(){returna;}

intXA::b=0

intmain(){

XAdl(l),d2(3);

cout«dl.get{}+d2.get{}+XA::b«endl;

returnO;

)

运行时的输出结果是()oA.5B.6C.7D.8

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

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

A.数据库系统B.文件系统C.人工管理D.数据项管理

13.在软件开发中,需求分析阶段产生的主要文档是()o

A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求

规格说明书

14.

32.类MyClass的定如下,若要对value赋值.则下面语句正确的是().

classMyClass

(

public:

MyCiass(){}

MyClass(inti){value=newint(i)।}

int»value;

};

A.MyClassmyjmy.value35101B.MyClassmyj*my.value=10;

C.MyClassmy;my.*value=10jD.MyClassmy(10);

15.一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的

方法,以第一个记录为基准得到的一次划分结果为()o

A.38,40,46,56,79,84

B.40,38,46,79,56,84

C.40,38,46,56,79,84

D.40,38,46,84,56,79

16.

A)20

B)24

C)25

D)15

17.下面程序的运行结果是()。

#include<iostream.h>

intfun(inta[],intn){

intresuh=1;

for(inli=l;i<ll;l'++)

result=result*a[i];

returnresult;

}voidmain

inta[3]={3,4,5}:

cout«fun(a,3)«endl:

)

A.12B.15C.20D.60

18.在数据库设计中,数据流图表达的是o

A.数据和数据结构的关系B.数据和算法的关系C.数据和处理的关系

D.数据和通信的关系

19.考虑函数原型voidtest(inta,intb=7,charz=*),下面的函数调用中,

属于不合法调用的是()o

A.test(5);B.test(5,8);C.test(6,#);D.test(O,0,*);

20.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是

()o

A.setpreCisionB.setwC.setfillD.showpoint

21.下面程序的运行结果是()。

#include<iostream.h>

voidmain()

(

inti=l:

while(i<=8)

if(++i%3!=2)continue;

elsecout«i;

)

A.25B.36C.258D.369

22.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的

变化是()

A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规

定函数说明符必须用原型D.引进了类和对象的概念

23.为了使模块尽可能地独立,要求。

A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

三、2.填空题(12题)

24.C++语句constchar*constp="hello";,所定义的指针p和它所指的内

容都不能被O

25.」12]_是一系列相关函数的模型或样板,这些函数的—[13]_形式

相同,只是所针对的一口4]一不同。

26.数据库恢复是将数据库从状态恢复到某一已知的正确状态。

27.通过使用new和delete两个运算符进行的分配为【】存储分配。

28.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放

各元素之间的信息。

29.类继承中,缺省的继承方式是____o

30.若从键盘输入70,则以下程序输出的结果是【】。

#include<iostream.h>

voidmain()

(

inta;cin>>a;

if(a>50)cout<<a;

if(a>40)cout<<a;

if(a>30)cout<<a;

)

31.有如下程序:

#include<iostream>

usingnamespacestd;

template<typenameT>

Ttotal(T*data){

Ts=0;

While(*data)s+=*data++;

returns;

)

intmain(){

intx[]={2,4,6,8,10,12,14,16,18};

cout<<total(x);

return0;

)

执行上面程序的输出是______0

32.给出以下程序的执行结果【】。

#include<iostream>

usingnamespacestd;

intn=1;

voidFun();

intmain()

(

n++;

Fun();

if(n>0)

{

intn=5;

cout<<"Block:n="<<n<<",

)

cout<<"Main:n="<<endl;

return0;

)

voidFun()

(

intn=10;

cout<<"Fun:n="<<n<<

)

33.已知:

doubleA(doubleA){return++a;}和intA(intA){return++a;}是

一个函数模板的两个实例,则该模板定义为【】。

34.将x+y中的+运算符用友元函数重载,应写为。

35.下列程序的输出结果是____o

#include<iostream>

usingnamespacestd;

template<typenameT>

Tfun(Ta,Tb){return(a<=b)?a:b;}

intmain()

(

cout<<fun(3,6)<<<<fun(3.14F,6.28F)<<endl;

return0;

)

四、程序改错题(10题)

36.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******errc*r******的下面。

试题程序:

#include<iostream.h)

intmain

try

(

throw("error");

)

I/********enor********

catch(chars)

{

cout«s«endl;

)

try

(

throw((int)0);

)

II********enor********

catch

(

cout«i«endl;

)

try

{

throw(O);

throw("error");

)

II********enor********

catch

(

cout«"ERROR"«endl;

returnO;

)

37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错。请改正程序中的错误,使程序输出的结果为

100

37

32

注意:错误的语句在//******error******的下面,修改该语句即

可。

试题程序:

#include<iostream.h>

II******error******

voidmain

II******enor******

intm=0142:

!!******enor******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

38.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现

的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

I!******error******-jx'p^~|

试题程序:

#include<iostream>

#include<fstream>

!1********enor********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

!1********enor********

outl.open("l.txt",binary|app);

for(inti=0;s[i]!=0;i++)

(

II********error********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

{

ofstreamoutl;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

retumO;

)

39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序

要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可

能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出

到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

{

inti=O;

charstrf120];

cout«"Enterastringendwith?."«endl;

II***************

cin.getline(str,120);

II********enor********

while(str)

(

I!********enor********

if(str[i])=a)

strfi]=str[i]-a+A;

i++;

)

cout«str«endl;

return;

)

40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果

为:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=l

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

⑴不能删除assert()语句。

(2)只能修改后面的数字。

提示:assert函数如果为假,则会产生一个中断异常。

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

(

char*sl="abc":

!!*东******eno[********

assert(sizeof(sl)==3):

cout«"sizeof(sl)=5"«endl;

chars2[10]="ab":

!1********error********

assert(sizeof(s2)-2);

cout«"sizeof(s2)=10"«endl;

chars3=23:

/*1**1*7,V,7,

//个个小小个个小个prrcr个不不不不不不不

assert(sizeof(s3)==4);

cout«"sizeof(s3)=l"«endl;

return;

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行有问题,请改正main函数中的错误,使程序的输出结果为:

number=1

number=10

number=100

注意:不要改动main函数,不能增加或删除行。也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout«"number="«number«endl;

)

private:

intnumber;

};

voidmain

!1********error********

TCobjl;

objl.Print;

TCobj2(3);

objl.number=10;

Ii********enx)r*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

~TC;

);

II******ej*|*or******

TC:TC

(

cout«"Constructor"«",

i=0;

)

//******error******

TC:display

(

tout«"i="«i<<","«endl;

!1******error******

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

43.使用VC++6.。打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实

现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

II******error******白勺­।仃|~。

试题程序:

#include<iostream>

#include<fstream>

!I********error********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

II********error*********

outl.open("l.txt",binary|app);

for(inti=0;s[i]!=0;i++)

{

II********enor********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

{

ofstreamoutl;

outl.open("l.txt");

outl.close;

intmain

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

}

44.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h)

intmain

(

try

throw("error");

)

II********error********

catch(chars)

(

cout«s«endl;

)

try

{

throw((int)0);

)

//********error********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

}

I!********enor********

catch

(

cout«"ERROR"«endl;

)

retumO;

}

45.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要

求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输

入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕

中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

II********error********

cin.getline(str,120);

while(str)

II********error********

if(str[i])=a)

str[i]=str[i]-a+A;

1++;

}

cout«str«endl;

return;

)

五、综合应用题(2题)

46.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程

proj3,其中声明的CDe叩Copy是一个用于表示矩阵的类。请编写这个

类的赋值运算符成员函数Operator,以实现深层复制。

要求:

补充编制的内容写在"〃************333*************与

“〃****************666*************"之间o不.多改不呈的其彳也部

分。

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

已经编译为。bj文件,并且在本程序中调用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

intn;〃动态数组的元素个数

int*p;〃动态数组首地址

CDeepCopy(int);

〜CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);〃赋值运算符函数

};

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}〃构造函数实现

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃赋值运算

符函数实现

/

//***********666***********

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.p[O]=666;〃对象a,d数组元素的赋值

(

CDeepCopyb(3);//调用赋值运算符函数

a.p[O]=88;b=a;

cout«b.pfO];〃显示内层局部对象的数组元素

)

cout«d.p[0];//显示d数组元素a.p[0]的值

cout«”dfadeaway;\n";

cout«a.p[0];〃显示a数组元素a.p[0]的值

writeToFile("");

return0;

)

47.使用VC++6.。打开考生文件夹下的源程序文件3.cpp。其中定

义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出

一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及

总个数,同时允许退货,请按照以下的操作,把类补充完整。

⑴定义类TCFruit的私有静态数据成员float型变量AllWeight和int型

变量A11N0,请在注释1后添加适当的语句。

(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加

到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。

(3)在析构函数中,在AllWeight中减去weight,然后AHNo自减,请

在注释3后添加适当的语句。

⑷完成静态成员变量的初始化为0,请在注释4后添加适当的语句。

注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

AllWeight+=w:

AllNo++:

)

〜TCFruit

(

AllWeight-Weight:

)

voiddisplay

(

cout«"SellaFruitwith"«Weight«"k9"<<

endl;

cout<<"Allsellnumber:"«AllNo«endl;

cout«"Allsellweight:"<<AllWeight«"k9"«

endl«endl;

)

};

//********4********

floatTCFruit::AllWeight=O.0;

intmain

{

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

retumO;

六、3.综合应用题(2题)

48.使用VC6打开考生文件夹下的工程MyProj3。此工程包含一个源程

序文件MyMain3.cpp,其中定义的类并不完整。请按要求完成下列操作,

将类的定义补充完整。

①定义类Planet的保护数据成员distance和revolve,它们分别表示行星

距太阳的距离和行星的公转周期。其中,distance为double型,revolve

为int型。请在注释“//**1**”之后添加适当的语句。

②定义类Earth的构造函数Earth(doubled,intr),并在其中计算地球绕太

阳公转的轨道周长。假定:circumference=2*d*3.1416。请在注释“〃**2***

之后添加适当的语句。

③定义类Earth的成员show(),用于显示所有信息。包括地球距太阳的

距离,地球的公转周期,以及地球绕太阳公转的轨道周长。请在注释

“〃**3**,,之后添加适当的语句。

文件MyMain3.cpp中源程序如下:

//MyMain3.cpp

#include<iostream>

usingnamespacestd;

classPlanet

{

protected:

〃**]**

public:

Planet(doubled,intr)

distance=d;

revolve=r;

)

);

classEarth:publicPlanet

(

private:

doublecircumference;

public:

〃**2**

〃**3**

);

intmain()

(

Earthobj(9300000,365);

obj.show;

return0;

)

49.使用VC6打开考生文件夹下的工程MyProj70此工程包含一个源程

序文件MyMain7.cpp。其中定义了类Sample,但类Sample的定义并不

完整。

请按要求完成下列操作,将类Sample的定义补充完成:

①定义私有数据成员n,它是int型的数据。请在注释“//**1***之后添

加适当的语句。

②完成重载构造函数Sample。的定义,使Sample对象的默认值:n=0o

请在注释“〃**2**”之后添加适当的语句。

③完成成员函数add。的类体内的定义,使成员函数返回的Sample对象

的值n为两类Sample对象si和s2的私有成员n的和。请在注释“//*

*3**”之后添加适当的语句。

④完成成员函数disp()的类外定义使其以“n=”的格式将Sample对象的

值输出到屏幕上。请在注释“**4**”之后添加适当的语句。

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

源程序文件MyMain7.cpp清单如下:

//MyMain7.cpp

#include<iostream>

usingnamespacestd;

classSample

(

private:

〃**]**

public:

Sample(){}

〃**2**

Sampleadd(Samplesi,Samples2)

{

〃**3**

)

voiddisp();

);

voidSample::disp()

(

〃**4**

)

intmain()

{

Samplesl(10),s2(5),s3;

cout<<"si:";

sl.dispO;

cout<<"\nS2:";

s2,disp();

s3.add(sl,S2);

cout<<"\ns3.add(sl,s2)\ns3:";

s3.disp();

return0;

}

参考答案

l.B

本题主要考查的知识点为析构函数。析构函数没有参数,所以不能重载,

因此析构函数只能有一个。

2.C

对象是类的实例,类的成员可以是其他类的对象。那么在该类实例化

的时候,必须保证其他类的对象已经生成,否则将会出现错误。

3.D解析:本题主要考察C++中输入流成员函数的使用。输入流的成员

函数主要包括open。、get。、getline。、read。、seekg()、tellg()和close。

等函数。其中,getline。函数从输入流中读取多个字符,并且允许指定输

入终止符,其原形为:

getline(char*line,intsize,char='\\n')o

其中:函数的第1个参数是字符数组,用于放置读取的文本:第2个参

数是本次读取的最大字符个数,通过改变该参数可以设置读入的最大字

节数即字符串长度第3个参数是分隔字符,作为读取一行结束的标志,

默认为换行符'\\n',通过改变该参数,可以自定义输入形式和结束标志。

因此可以判断,题目选项D的叙述是错误的,可以通过改变参数修改

getline。函数中所使用的终止符。

4.A解析:在C++中,由于析构函数不能被继承,因此在执行派生类的

析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的

析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好

相反。在此题的程序中,在主函数结束时,派生类DERIVED对象。bj

将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,

输出X,然后调用基类的析构函数,输出丫。

5.C数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。

\u3000\u3000数据操作语言(DML),例如:INSERT(插入)、UPDATE

(修改)、DELETE(删除)语句。

\u3000\u3000数据查询语言(DQL),例如:SELECT语句。

\u3000\u3000数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、

ROLLBACK等语句。

6.B

解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有

公有(public)、保护(protect)和私有(private)3种。

7.B解析:本题考核继承与派生。当类的继承方式为公有继承时,基类

的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类

的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象

访问继承宋的公有成员。在本题中,数据成员z和函数setx都是基类A

的公有成员,它们经过公有继承以后,在派生类B中还是公有成员,而

派生类B中的函数setvalue和display都是公有成员,可以通过对象对

它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是

输出已设置的各成员的值。

8.D

9.A

解析:算法的空间复杂度是指:算法执行过程中所需的存储空间。一

个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据

所占的存储空间及算法执行过程中所需要的额外空间。

10.A解析:选项B)中a在运算前未赋初值,在C++语言里变量在运算

前必须赋初值;选项C)中的模运算符“%”两侧均应为整型数据;选项D)

应改为y=(float)io

11.C

Co【解析】每调用一次get函数时,对新的类A对象进行一次实例

化,调用一次构造函数,类A的静态成员变量b便加1。

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

段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一阶

段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据独立

性。数据库系统为用户提供了方便的用户接口,用户既可使用查询语言

或终端命令操作数据库,也可以用程序方式来操作。数据库管理系统提

供了数据控制功能。

13.D需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求

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

14.D

15.B解析:快速排序的的思想是:从线性表中选取一元素,如本题中的

46.将线性表后面小于46的元素移到前边,而前面大于46的元素移到

后边。本题中46是第一个元素,因此只须将线性表后面小于46的元素

移到前边。

16.D

本题考察的是同名局部变量和全局变量的作用域之间的关系。同时考

察了静态变量的特点:退出函数和进入函数并不影响静态变量的值。

因此,循环多次。实际上完成静态变量的累加。即1+2+3+4+5。其值

为15,故答案为D。

17.C

for循环执行2次,所以第一次for循环为result=l*a[l]=4,第二次for

循环为result=4*a[2]=20。

18.C

19.C解析:本题考核函数的调用。题中函数声明带有默认参数,那么在

C)选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参

数传递规则。

20.A

iomanip中定义的操纵符包括:setfin(ch)用ch填充空白、

setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值

showpoint没置小数点。

21.C

Co【解析】应该先做++运算,然后进行%运算,最后比较不等式,

实际上最后输出的结果就是被3除,余数为2的不大于8的数。

22.D

23.B解析:程序设计的相关概念。

24.改变。改变。解析:本题考查的是定义常量的关键字const,由

const定义的变量的值不可以再改变,所以定义时必须进行初始化。

25」⑵函数模板[13]源代码[14]数据类型[12]函数模板\r\n[13]源代码

\r\n[14]数据类型

26.错误。错误。解析:数据库关系系统中具有把数据库从错误状态

恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,就是

数据库的恢复。

27.动态动态解析:本题考查的是对动态分配内存的掌握,在C++语

言中,使用关键字Hew和delete进行动态内存中请和释放。

28.前后件关系前后件关系解析:在数据存储结构中,除了要存储数

据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件

之间的关系是通过存储空间的位置来实现的,而对于链式存储来说,

数据元素之间的前后件关系是通过指针来实现的。

29.私有继承私有继承

30.707070

31.20

32.Fun:n=10Block:n=5Main:n=2Fun:n=10,Block:n=5,Main:n=2

解析:变量的作用域是程序中变量有效的区域,它是变量的一个重要

特征。在题中,变量n有3种身份,其一是作为全局变量的n,其二是

作为if语句块内局部变量的n,其三是函数内部局部变量的n。程序最

后要求输出各个作用域内n的值。

33.templateT1A(T1a){return++a;}template\r\nTlA(T1a){return

++a;}解析:通过两个实例知道该例中只有一种数据类型,所以在定

义模板时只需定义一个模板参数T1o

34.operator+(xy)operator+(x,y)解析:C++中用成员函数重载x+y

为x.operator+(y);,用友元函数重载x+y为operator+(x,y)。

35.33143,3,14解析:本题考核模板函数的使用。C++编译系统将根据

实参表中的实参的类型来确定函数的形参列表中的类型。函数fun的

功能是返回两者中较小的值,函数调用fun(3,6)返回的值为3,函数调

用fun(3.14F,6.28F)返回的值为3.14。

36.(1)应改为"catch(char*s)”。

⑵应改为“cateh(inti)”。

(3)应改为"catch(…)”。

【解析】本题中第1个标识前的异常抛出语句为“throw("error");",其

中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类

型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语

句修改为“catch(char*S)”°第2个标识前的异常抛出语句为

44throw((int)0);",其中的类型为int。对应的异常捕捉语句catch中应

该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配

的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处

的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类

型,那么就用删节号"…''表示它可以捕捉任何类型的异常信息,即修

改为“catch(…)”。

37.(l)“voidmain”。

(2)“intm=0144;

(3)“intn=OX25;”或“intn===0x25;

【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十

进制到八进制,十进制到十六进制。主函数定义的定义形式为

"main",函数名之后必须是一对括号,因此第1处应改为"voidmain”。

cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发

现变量的初值不正确,十进制的100对应八进制的144,卡进制的37

对应十六进制的25,因此2和3应分别改成“intm=0144;”,

“intn=0x25;”或“intn=0x25;

38.(1)应改为"usingnamespacestd;

\n(2)应改为"outl.open('l.txt',ios::binary|ios::app);

\n(3)应改为“outl.put(s[i]);”。

\n【解析】本题第1处的“usingstd广是在程序中引入标准命名空间std,

对于C++中引入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为"usingnamespacestd;"。第2处,调用成员函数open中,

输入、输出方式是在ios类中定义的,所以“outl.open('l.txt',binary|

app);”语句缺少类ios,即第2处的语句修改为“outl.open('l.txt',ios::

binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所

以第3处的语句修改为“outl.put(s[i]);

39.⑴应改为“ein.getline(str,120,?);

(2)应改为"while(str[i])"°

(3)应改为“if(str[i]>=a&&st巾]<=2)”。

【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员

函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符

个数,终止标志字符)”,所以第1处改为“cin.getline(str,

120,?);第2处的“while(str)”语句应该是判断字符串str中的每一

个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否

为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的

“if(str[i]>=a)”语句是判断字符str国是否为小写字符,而现有的语句只

是判断字符是否大于a,但是小写字符应该是a到2,所以修改为

,,

“if(str[i]>=a&&str[i]>=z)o

40.(1)应改为"assert(sizeo心1尸=4);

\n⑵应改为"assert(sizeof(s2)=lO);

\n(3)应改为"assert(sizeof(s3)=l);

\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正

常执行输出结果,那么assert函数只有为真,才不会产生中断异常。

uassert(sizeof(s1)==3);”语句中“sizeof(sl)==3”为假,这会使程序产生异

常,不能正常执行。因为strl的值为abc,但是它还有一个尾符,它的

长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(sl)=4);”。

str2[10]说明,str2的空间为10,在第2处修改为"assert(sizeof(s2)=10)

charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为

t4assert(sizeof(s3)=l);”。

41.(1)应改为"TCobjl(l);

\n(2)应改为“Objl.SetNumber(lO);”。

\n(3)应改为“0bj2.SelNumber(lOO);"。

\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据

TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输

出结果两1,所以补全参数1,即第1处的“TCobjl(l);"。第2处处的

“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中

成员函数的使用形式应该是:对象名.成员函数,所以修改为

“objl.SetNumber(lO);类是对象的抽象,而对象是类的具体实例。

第3处“TC.SetNumber(lOO);”语句中的TC为类,并不是对象,这里

应该使用定义的对象,即obj2,所以将语句修改为

“obj2.SetNumber(lOO);"。

42.(1)应改为“TC::TC”。

\n(2)应改为"voidTC::display”。

\n(3)应改为“TC::〜TC”。

\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名

和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使

用格式为“(类名)::〈成员函数〉((参数函数)),因此第1处应改为“TC::

TC”,默认构造函数没有参数。由第2处“TC"display”后的语句看,这

是在类外实现TC函数,因此也有作用域运算符使用错误问题,display

函数返回值为void,因此第2处的语句应改为“voidTC:[display"。由第

3处的语句叮(2::1<:”可知,显然这里是在类外实现析构函数,析构函

数是一个特殊的函数,它的名称和类名相同,并在前面加”字符,用

采与构造函数加以区别,因此第3处的语句应改为“TC::〜TC”。

43.(1)应改为"usingnamespacestd;"。

(2)应改为“outl.open("l.txt",ios::binaryIios::app);"。

(3)应改为“outl.put(s[i]);九

【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,

对于C++中引入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为“usingnamespacestd;"。第2处,调用成员函数open

中,输入、输出方式是在ios类中定义的,所以“outl.openC'l.txt",

binaryIapp);”语句缺少类ios,即第2处的语句修改为

“outl.open("l.txt",ios::binaryIios::app);“。第3个标识应

该用流成员函数put输出字符,所以第3处的语句修改为

“outl.put(s[i]);

44.(1)应改为"catch(char*s)”。

⑵应改为

温馨提示

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

评论

0/150

提交评论