2023年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2023年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2023年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2023年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2023年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

2023年安徽省亳州市全国计算机等级考试

C++语言程序设计模拟考试(含答案)

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

一、1.选择题(10题)

1.数据的存储结构是指()o

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中

的顺序存储方式D.数据的逻辑结构在计算机中的表示

2.MyClock类的拷贝构造函数的声明语句为()。

A.MyClock&(MyClockx)

B.MyClock(MyClockx)

C.MyClock(MyClock&x)

D.MyClock(MyClock*x)

3.数据库系统的核心是()

A.数据库B.数据库管理系统C.数据模型D.软件工具

4.当需要将一个函数boolisnumber(charC)声明为内联函数时,则比内

联函数的函数原型为()。

A.enumboolisnumber(charC);

B.defineboolisnumber(charC);

C.inlineboolisnumber(charC);

D.externboolisnumber(chatC);

5.假定MyClass为一个类,则执行MyClassab(2),*p;语句时,自

动调用该类构造函娄()次。

A.2B.3C.4D.5

6.下列关于关系运算的叙述中正确的是()。

A.投影、选择、连接是从二维表的行的方向来进行运算

B.投影、选择、连接是从二维表的列的方向来进行运算

C.并、交、差是从二维表的列的方向来进行运算

D.以上三种说法都不对

7.下列输出字符,A,的方法中,错误的是()

A.cout<<put('A');

B.cout<<'A';

C.cout.put('A');

D.charA=,A,;cout<<A;

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

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

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

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

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

9.下列有关继承和派生的叙述中,正确的是

A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保

护成员

B.派生类的成员函数可以访问基类的所有成员

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

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

10.在下列关系运算中,可能改变关系中属性个数的是

A.并B.差C.投影D.交

二、单选题(13题)

11.关于continue语句叙述不正确的是()。

A.continue语句用于循环体中,结束循环

B.continue语句用于循环体中,它使执行流跳出循环体中尚未执行的语

句,并进行下一循环判断

C.continue可以用于if语句中

0.continue语句不能代替break语句

12.只能作为成员函数重载的是

A.=B.++C.*D.new

13.下列关于虚函数的说明中,正确的是()。

A.从虚基类继承的函数都是虚函数

B.虚函数不得是静态成员函数

C.只能通过指针或弓|用调用虚函数

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

14.以下不能作为输出流对象的是()。

A.文件B.内存C.键盘D.显示器

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

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

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

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

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

16.下列函数的运行结果是()。

#include<iostream.h>

intadd(inta,intb);

voidmain()

(

extemintX,y;

cout«add(X,y)«endl;

}

intx(20),y(5);

intadd(inta,intb)

ints=a+b:

returns;

A.25B.30C.20D.15

17.软件生命周期是指()o

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

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

C.软件的开发过程

D.软件的运行维护过程

18.下列程序的运行结果是()。

#include<iostream.h>classLocation{

private:

intX,Y:

public:voidinit(int=O,int=0);

voidvalueX(intval){X=val;}intvalueX{returnx;}

voidvalueY(intval){Y=val;}intvalueY{returnY;}};

voidLocation::init(intinitX,intinitY){X=initX;

Y=initY4}

voidmain(X

{LocationA,B;

A.init;

B.valueX(5);

cout«A.valueX«cndl«A.valueY«cndl;B.init(6,2);

B.valueY(4);

eout«B.valueX«endl«B.valueY«endl;

)

A.5064B.O064C.5062D,O062

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

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

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

20.下列数据模型中,具有坚实理论基础的是()o

A.层次模型B.网状模型C.关系模型D.以上3个都是

21.静态成员函数没有()。

A.返回值B.this指针C.指针参数D.返回类型

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

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

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

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

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

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

A.charstr[]={,a\'b','C'}

B.charstr[2]={,a,,B''c'}

C.charstr⑵[3]={{'a','b'},{'C','d'},{'e',f}}

D.charstr={~a,〜b,~C}

三、2.填空题(12题)

24.一个模块直接调用的其他模块的个数称为o

25.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率

都相等时,插入一个元素所需移动元素的平均个数为【】。

26.算法复杂度主要包括时间复杂度和____复杂度。

27.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一

种面向【】的设计方法。

28.有以下程序:

#include<iostream>

usingnamespacestd;

classMyClass

(

public:

MyClass();

~MyClass();

staticints;

voidSetValue(intval);

);

intMyClass::s=0;

MyClass::MyClass()

(

・s++;}

VoidMyClass::SetValue(intv

29.若有定义:doublea[3][5];那么数组a的最后一个元素是【

30.有如下程序:

#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;

)

执行上面程序的输出是______o

31.若已定义,以下fun函数的功能是:在第一个循环中给前10个数组

元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数

组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、

lo请填空。

fun(intalJ)

(

inti;

for(i=l;i<=10;i++)[]=i;

for(i=0;i<5;i++)[]a[i];

1

32.执行下列语句后,变量n的值是_____。

intn=0;

for(inti=l;i<=3;i++)

for(intj=l;j<<=i;j++)

n++;

33.数据结构分为逻辑结构和存储结构,循环队列属于结构,

34.在下面程序横线处填上适当内容,使程序输出为:55599。

#include<iostream>

usingnamespacestd;

template<classTYPE>

classHisClass

TYPEdata;

public:

HisClass(TYPEa,TYPEb,TYPEC);

TYPEgetData(){returndata;)

);

template<classTYPE>

HisClass<TYPE>::HisClass(TYPEa,TYPEb,TYPEC)

(

[];

else主f(b>C)

data=b;

else

data=c;

)

intmain()

(

HisClass<int>xl(3,4,5),x2(5,3,4),x3(4,5,3),x4(7,8,9),

x5(8,7,9);

cout<<xl.getData()<<x2.getData()<<x3.getData()

<<x4.getData()<<X5.getData();

return0;

)

35.若有以下程序:

#include<iostream>

usingnamespacestd;

classTestClass1

public:

TestClass1()

X

}

in

};

classTestClass2:virtualpublicTestClassI

(

public:

TestClass2()

(

x=10;

};

classTestClass3:virtualpublicTestClass1

(

public:

TestClass3()

(

x=20;

)

};

classTestClass4:publicTestClass2,protectedTestClass3

(};

intmain()

(

TestClass4obj;

cout<<obj.x<<endl;

return0:

该程序运行后的输出结果是_____O

四、程序改错题(10题)

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

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

number=l

number=10

number=100

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

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

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number二i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout«,,number=,,«number«endl;

}

private:

intnumber;

);

voidmain

TCobjl;

objl.Print;

TCobj2(3);

l*1**1**1**1**1**1**1**4*

//小小小小小小小小「rrcr不不不不不不不不

objl.number=10;

Ii********error*%()******

TC.SetNumber(100);

objl.Print;

obj2.Print;

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

try

(

throw("error");

}

/*p*i**i**i**i**r*r*r不不不不不不不不

catch(chars)

(

cout«s«endl;

}

try

(

throw((int)0);

)

/不不不不不不不不error不不不不不不不不

catch

(

coul«i«endl:

)

try

(

throw(O);

throw("error");

catch

(

cout«nERRORn«endl;

)

returnO:

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

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

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

中。

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

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

试题程序:

#include<iostrearn.h>

voidmain

(

inti=O;

charstr[120];

cout«nEnterastringendwith?.,'«endl;

//

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

cin.getline(str,120);

不不不不不不不不error不不不不不不不不

while(str)

1*1**1**1*

//汴不不PmiT*不不不不不不不不

if(strlij)=a)

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

i++;

cout«str«endl;

return;

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

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

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

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

构,错误的语句在

II******eiTor******的下

试题程序:

#include<iostream>

#include<fstream>

//

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

outl.opcn(nl.txt",binary|app);

for(inti=0;sli]!=0;i++)

outl.puts(s[i]);

outl.close;

voidClearFile

ofstreamoutl;

outl.open(Hl.txt");

outl.close;

}

intmain

(

chars[1024];

ClearFile;

cout«',pleaseinputastrin9:u«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

}

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

行时有错误,请改正程序中的错误,使得程序输出:

9,8,7,6,5

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

可。其他的语句不能修改。

试题程序:

#include(iostream.h>

classTC

7*7*7*7*7*7*7*

不不“门•门”门error干不干不干干干不

TC(inti)

m_i=i,

)

voidprint

(

cout«-m_i«,;

)

public:

intm_i;

intmain

/*£**4**4**4*/

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

inti;

TC04(10);

while(i>5)

I********en*Or********/

i++:

04.print;

)

cout«endl;

returnO;

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

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

为:

sizeof(Sl)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

(1)不能删除assert()语句。

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

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

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

chartsl=nabc":

assert(sizeof(s1)==3):

cout«Msizeof(s1)=5"«endl;

chars2[101="abH:

//^1*

Ij不不不不不不不不error不不不干不干不不

assert(sizeof(s2)==2);

cout«nsizeof(s2)=10H«endl;

chars3=23:

不不不不不不不不prrcr不干不不不不不不

assert(sizeof(s3)==4);

cout«,,sizeof(s3)=r*«endl;

return;

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

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

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

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

构,错误的语句在

1I******error******白勺।。

试题程序:

#include<iostream>

#include<fstream>

/不不不不不不不不prrcr不不不予不干干不

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

/年不不不不小不小error于不寿寿寿寿不不

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

for(inti=0;sfi]!=O;i++)

/*1**1«•)«•!«

//******汴*ermr不不不不不不不不

outl.puts(s[i]);

outl.close;

voidClearFile

(

ofstreamoutl;

outl.open(nl.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:,,«endl;

cin.getline(s,1024);

WriteFile(s);

returnO:

)

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

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

100

37

32

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

可。

试题程序;

#include<iostream.h>

/«£*«*»«*»**»«*»«*»

//*平*平不平prrc广’•、不’•、*•'

voidmain

/•1«•)«•1«•?*

//******errcr不不不不不不

intm=0142:

/*1**1**1**1**1**1*»!•*1•

//小小小小・年prmr不不不不不不

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

}

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw(nerrorH);

)

catch(chars)

(

cout«s«endl;

}

try

(

throw((int)0);

1

/不不不不不不不不prr()r苓不苓苓不苓不不

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

}

/«*•

//**军*汴汴举不PITOT*不予3333,.、

catch

cout«',ERROR,'«endl;

returnO:

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

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

number=l

number=10

number=100

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

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

试题程序:

#include<iostrearn.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intmi

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

cout«"number="«number«endl;

private:

intnumber;

);

voidmain

TCobjl;

objl.Print;

TCobj2(3);

//-X*

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

objl.number=10;

II********error*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

五、综合应用题(2题)

46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定

义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要

求完成下列操作,将类CRect的定义补充完整。

(1)定义私有数据成员leftPoint、topPoint、rightPoint>bottomPoint,分

别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数

据。请在注释1之后添加适当的语句。

⑵完成默认构造函数CRect的定义,指定默认实参为0,它们都是

double型的数据。请在注释2之后添加适当的语句。

⑶定义函数体为空的析构函数。请在注释3之后添加适当的语句。

⑷在main函数中定义GReet类的实例rect2,并把re­

cti的值赋给rect2。请在注释4之后添加适当的语句。

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

试题程序:

#include<iostream.h>

classCRect

(

private:

/*1**1**1**1**1**1**1**1*1*1**1**1*

/f|*7*

public:

/7*7*7*7**1»7*7*7*

/frj*・:••卜•卜•卜•卜t•卜•卜•卜•卜・卜・卜・卜•卜

/«1«*1«•1«*1*«1««1««1««14•1«•!««1«•)««1«

//»4*»4*»4**4**J*

voidSetPoints(double,double,double,double);

voidSetLeftPoint(doublem){leftPoint=m;}

voidSetRightPoint(doublem){rightPoint=m;)

voidSetTopPoint(doublem){topPoint=m;}

voidSetBottomPoint(doublem){bottomPoint=ni;}

voidDisplay();

};

CReet::CRect(doublel,doublet,doubler,doubleb)

(

leftPoint=1;topPoint=t;

rightPoint=r;bottomPoint=b;

)

voidCRect::Setpoints(doublel,doublet,doubler,doubleb)

(

leftPoint=1;topPoint=t;

rightPoint=n;bottomPoint=b;

)

voidCRect::Display()

(

cout«nleft-toppointis(',«leftPoint«",H«top-

Point«")n«\n:

cout«',right-bottompointis("«rightPoint«,',"

«bottomPoint«n)n«\n;

)

voidmain()

(

CRectrectO;

rectO.Display();

rectO.SetPoints(20,20.6,30,40);

rectO.Display();

CRcctrcctRO,0,150,150);

rect1.SetTopPoint(10.5);

recti.SetLeftPoint(10.5);

II********4********rect2Display();}

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

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

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

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

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

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

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

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

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

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

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

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

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

7*7*7*•7卜*•7卜*•7卜*•7卜*•7卜*■•卜•卜•*卜1*•卜•*卜1*7*7*7*

staticintAHNo;

public:

TCFruit(floatw)

/*1**1**1**1**1**!**!**1•»!•»1•*1•

//木木木木木木木木2木木木木半木木木

AHWeight+=w:

AllNo++:

TCFruit

/

//^T»^T»^T»^T»*T»*7**T*-7**T»«T»*T»^T»^T»

AllWeight-=Weight:

)

voiddisplay

(

cout«',SenaFruitwith,'«Weight«"k9"«

endl;

cout^'Allsellnumber:"«AllNo«endl;

cout«nAllsellweight:H«AllWeight«"k9,'«

endl«endl;

)

1;

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

floatTCFruit::AIIWeight=O.0;

intmain

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

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

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

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

将类的定义补充完整。

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

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

为皿型。请在注释“〃**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**

I;

intmain()

(

Earthobj(9300000,365);

obj.show;

return0;

)

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

test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求

完成下列操作,将程序补充完整。

⑴完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不

是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然

后把i赋值给类的数据成员num。请在注释"之后添加适当的语

句。

⑵完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,

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

⑶完成类ARRAY的重载的运算符函数口,参数i为int型,如果i超界

则输出错误信息并退出,否则把下标为i的元素返回,请在注释“〃**3***

之后添加适当的语句。

⑷完成类ARRAY的重载的运算符函数二,同样需要注意解决重复删除

的问题,不能只是简单的赋值,请在注释“〃**4**”之后添加适当的语句。

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

源程序文件test27_3.cpp清单如下;

#include<iostream.h>

#include<stdlib.h>

classARRAY

(

private:

int*p,num;

public:

ARRAY(){p=newint[10],num=10;}

ARRAY(inti)

(

//**।**

(

cout<<"错误!数组长度应为正。\屋;

exit(O);

)

p=newint[i];

num=i;

)

ARRAY(constARRAY&a);

int&operator[J(inti);

-ARRAY(){deletep;}

ARRAY&operator=(constARRAY&a);

friendARRAYoperator+(ARRAY&a,ARRAY&b);

friendostream&operator<<(ostream&os,ARRAY&a);

);

ARRAY::ARRAY(constARRAY&a)

for(int1=0;i<num;i++)

p[i]=a.p[i];

&ARRAY::operator[J(inti)

cout<(”越界访问!”;

exit(0);

}

returnp[i];

)

ARRAY&ARRAY::operator=(constARRAY&a)

(

num=a.num;

p=newint[num];

for(inti=0;i<num;i++)

p[i]=a.p[i];

H**4**

)

ARRAYoperator+(ARRAY&a,ARRAY&b)

(

if(a.num!=b.hum)

(

cout<<“数组长度不相同!”<<cndl;

exit(0);

}

ARRAYt(a.num);

for(inti=0;i<a.num;i++)

t.pLiJ=a.pliJ+b.pLiJ;

returnt;

ostream&operator«(ostream&os,ARRAY&a)

inti=0;

for(;i<a.num;i++)

cout<<a.p[i]<<1

if(!((i+l)%10))cout<<endl;

}

returnos;

)

voidmain()

(

ARRAYa(3);

a[0]=a[l]=a[2]=3;

cout<<'a'<<a<<end1;

ARRAYb(a);

cout<<V<<b<<endI;

ARRAYc(2);

c=a+b+b;

cout<<*c'<<c<<end1;

c=((b=(a+b))+c);

cout<<'a1<<a<<'b'<<b<<'c'<<c<<endl;

参考答案

l.D

数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存

储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据

的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的

数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储

进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储

中是利用物理存储空间上的连续性来表达线性表中数据的前后件关

系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据

的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数

据的存储结构不止一种。因此选项D正确。

2.C解析:拷贝构造函数头的一般形式为:〈类名〉::〈类名〉(const<

类名>&<引用对象名>)。

3.B数据库管理系统是对数据库进行管理的系统软件,它的职能是有效

地组织和存储数据,获取和管理数据,接受和完成用户提出的访问数据

的各种请求,是数据库系统的核心

4.C

5.A解析:C++在创建一个对象时,会调用类的构造函数。语句

\u3000MyClass\u3000a\u3000b(2),*p;创建了两个对象a、b和指针p,

在创建对象a和b后会调用构造函数,而创建指针p时,由于p本身不

是对象,所以不调用类的构造函数。

6.B

\r\n

A和B是互相矛盾的,答案必然是这两者之一。在关系模型的数据语言

中,常规的集合运算(并、交、差、笛卡尔积等),是将关系(即二维

表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行

的;投影、选择、连接等运算主要是从二维表的列的方向来进行运

算。正确答案是B。

7.A

8.D

9.D解析:如果派生类私有继承基类,不能访问基类中的私有成员,所

以选项A)、B)是错误的。派生类是对基类的具体化,所以选项C)精

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

象类,即选择选项D)。

10.C解析:投影运算是在给定关系的某些域上进行的运算。通过投影

运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成

一个新的关系,而新关系的各个属性值来自原关系中相应的属性值;

因此,经过投影运算后,会取消某些列,即投影运算可能改变关系中

属性韵个数。

11.A解析:continue是跳出了本次循环中尚未执行的语句,重新执行

循环,但没有终止循环。注意:注意break,continue和goto语句的用

法和区别。

12.A解析:运算符重载为成员函数的形式为:函数类型。perator运算

符(形参表){函数体力;运算符重载为友元函数的形式为:friend函数类

型。peralor运算符(形参表){函数体;}。一般来讲,单目运算符最好重

载为成员函数,双目运算符最好重载为友元函数。二、小()、・>以及

所有的类型转换运算符只能作为成员函数重载。

13.B

在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员

函数一虚函数必须是基类的非静态成员函数,其访问权限可以是

protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所

以本题答案为B。

14.C

输出流对象包括基本的输出设备,如显示器,内存和文件,而输入流

对象则包括键盘,文件以及其他输入设备。

15.B

解析•:如果一个非空的数据结构满足以下两个条件:⑴有且只有一个

根结点;(2)每个结点最多有一个前件,也最多有一个后件。则称该数

据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线

性结构,故A项错误。有一个根结点的数据结构不一定是线性结构,

如二叉树,B项说法正确。循环链表和双向链表都属于线性链表。故

C、D项错误。

16.A

Ao【解析】由主函数main入手,定义外部变量x和y,调用函数

addo因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是

有效的,即add函数的运算结果为25。

17.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程

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

产品不能使用为止的整个时期都属于软件生命周期。

18.A

本题中有成员函数和它的重载函数,要注意它们的不同,在本题中先

调用了init函数,初始化了x、Y,都为0,valueX(5);又将x变为

5,所以输出5和0,然后初始化init(6,2),接着又valueY(4);将x、

Y设为6和4,所以输出6和4。

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

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

数传递规则。

20.C在数据库设计口,目前常用的数据模型主要有三种,分别是层次模

型、网状模型和关系模型。

层次模型是数据库系统中最早出现的数据模型。我们通常把满足以下两

个条件的数据模型称为层次模型。

(1)有且仅有一个结点无双亲,这个结点称为根结点。

(2)其他结点有且仅有一个双亲。

层次模型用树形结构来表示各实体与实体间的联系。实体是数据库中数

据描述的对象,可以是一个人、一种商品等。在层次模型中,每个结点

表示一个记录类型,记录之间的联系用结点之间的连线表示,这种琰系

是父子之间一对多的联系.记录就是描述实体的相关数据。

如果取消层次模型中的两个限制,即允许一个以上的结点无双亲,则每

一个结点可以有多个父结点,便形成了网状。我们把网状表示实体之间

联系的模型称为网状模型。

关系模型用表格形式表示实体类型及其实体间的联系。关系模型是目前

最重要的一种模型,它是建立在严格的数学概念的基础上的,具有最坚

实的理论基础。关系模型的基本数据结构是二维表,每一张二维表称为

一个关系。

21.B

22.A

Ao【解析】本题考查的知识点是运算符的重载。运算符重载为成员函

数时,形参个数一般为运算符的元数减1,因为此成员函数所属的对象

可成为运算符的一个运算分量。重载为非成员函数时,形参个数一般

和运算符元数相等。所以,二元运算符重载为非成员函数时,参数表

中应有两个参数,运算符重载为成员函数时,若参数表中无参数,重

载的是一元运算符。一元运算符中,一取负运算符、++增1运算

符、■■减1等运算符均可重载为成员函数,C++中,有…*、

・>*、::、?:五个运算符不能重载。

23.A

本题考查的是字符数组的初始化。选项B中用3个位素初始化大小为

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

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

24扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇

入,一个模块直接调用的其他模块个数称为扇出。

25.n/2n/2解析:性表的任何位置插入一个元素的概率相等,即概率为

P=l/(n+l),则插入一个元素时所需移动元素的平均次数为E=l/(n+l)

(n-i+l)=n/2o

26.空间空间解析:算法的复杂度包含时间复杂度和空间复杂度,空间

复杂度指的是程序运行所要消耗的存储空间。一个算法的优劣主要从算

法的执行时间和所需要的存储空间两个方面来衡量

27.数据结构数据结构解析:结构化分析方法主要包括:面向数据流的

结构化分析方法(SAStucturedanalysis),面向数据结构的Jackson方法

(JSD—Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数

据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)0

28.3。3。解析:本题程序中把变量s定义为静态数据成员,它的作用

域是类范围。在类MyClass的构造函数中,每创建一个对象,s就增1,

由此可知s用来记录建立对象的个数。由十创建对象指针p时并不会调

用构造函数,所以s最后的值是3。

29.a[2][4]a[2][4]解析:C++中,数组每一维的下标都是从0开始,到n.

1结束。因此a[3]因共有15个元素,最后一个元素是a⑵⑷。

30.20

31.a[i-l]a[9-i]

32.66解析:当i=l时,内循环中的i的值为1,n目加一次,n=l;当

i=2时,内循环中的j的值为i和2,n自加两次,n=3,当i=3时,内循

环中的i的值为1、2、3,n自加三次,n=6o

33.存储存储解析:数据结构包括逻辑结构和物理结构(存储结构),逻辑

结构包括集合、线性、树、网络等,而存储结构主要指的是逻辑结构的

存储,包括顺序、链表、索引、散列等。

34.if(a>b&&a>C)data=aif(a>b&&a>C)data=a解析:本题考核类模

板的定义。其构造函数实现的功能是将a、b、c中的最大值赋给私有成

员data。

35.20

36.⑴应改为“TCobjl(l);

(2)应改为“Objl.SetNumber(lO);

(3)应改为“0bj2.SelNumber(lOO);

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

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

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

的“objLnumber=10;”应该是调用成员函数SetNumber赋值。在C+

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

uobj1.SetNumber(lO);类是对象的抽象,而对象是类的具体实

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

这里应该使用定义的对象,即。bj2,所以将语句修改为

“obj2.SetNumber(lOO);

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

(2)应改为"cateh(inti)”。

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

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

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

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

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

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

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

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

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

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

改为“catch(…)”。

38.(1)应改为“ein.getline(str,120,?);

\n(2)应改为"while(str[i])”。

\n(3)应改为"iRst巾]>=a&&str[i]<=2)^^。

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

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

数,终止标志字符咒所以第1处改为“cin.getline(str,120,?)户。第

2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结

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

则转换。所以应该修改为“whilst巾])二第3处的“if(str[i]>=a)”语句是

判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a,

但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=zf0

39.⑴应改为"usingnamespacestd;"。

\n(2)应改为“outl.open(1l.txt1,ios::binary|ios::app);"。

\n(3)应改为“outl.put(stij);

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

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

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

输入、输出方式是在ios类中定义的,所以“out1.open”.txt1,binary|

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

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

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

40.(1)应添加“public:"。

\n(2)“inti”应改为“inti(10);

\n(3)“i++;”应改为“i--;”。

\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、

保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类

的对象被访问。故应在构造函数前添加“public:”,否则该类无法被实例

化。变量的初始化可以通过』”号,也可以和初始化对象一样添加构造

参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i

每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则

循环永远不会退出。

41.(1)应改为"385©11区2€0心1)=4);”。

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

\n⑶应改为"assert(sizeoRs3)==l);”。

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

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

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

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

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

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

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

4tassert(sizeof(s3)==I);

42.(1)应改为"usingnamespaccstd;

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

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

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

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

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

中,输入、输出方式是在ios类中定义的,所以“outl.open(nl.txt",

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

“outl.open(H1.txt”,ios::binaryIios::app);第3个标识应

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

“outl.put(s[i]);

43.⑴“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;”。

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

⑵应改为“catch(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(…)”。

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

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

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

\n【解析】本题第1处

温馨提示

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

评论

0/150

提交评论