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

下载本文档

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

文档简介

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

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

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

一、1.选择题(10题)

1.下面这个程序的结果是#include<iostream.h>classA{private:int

a;public:voidseta();intgeta(););voidA::seta(){a=1;}int

A::geta(){returna;}class

A.lB.2C.随机输出1或2D.程序有错

2.有如下程序#include<iostream>#include<iomanip>using

namespacestd;intmain(){cout<<setprecision(3)<<fixed<<setfill('*')

<<setw(8);cout<<12.345<<<<34.567;return0;}若

程序的输出是:**12.345**34.567则程序中下划线处遗漏的操作符是()。

A.setprecision(3)B.fixedC.setfill('*')D,setw(8)

3.以下都是C++语言标识符的是()。

A.dsfa,df4,f$B.huhj,aA,k2C,3k,h,j_9D._ok,jk,k8

4.下面程序的功能是()。#include<iostream>#include<string>

usingnamespacestd;intmain(){inti=l,n=0;chars[80],*p;p=s;strcpy(p,"It

isabook..");for(;*p!='\0';p++){if(*p==")i=0;elseif(i==0){n++;i=l;}}

cout<<"n="<<n<<endl;return0;}

A.统计字符串中的单词个数B.统计字符串中的空格个数C.统计字符

串中的字母个数D.统计字符串中的全部字符个数

5.使用如setw()的操纵符对数据进行格式输出时,应包含()文件。

A.iostream.hB.fstream.hC.iomanip.hD.stdliB.h

6.对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为

50的语句应该是()。

classMyClass

(

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

)

intf()

(

MyClass*ptr=newMyClass(45);

1

A.MyClass(50)B.SetNum(50)C.ptr->SetNum(50)D.ptr->n=50

7.以下程序的输出结果是()。#include<iostream>usingnamespace

std;intmain(){inta=l,b;switch(a){casel:b=30;case2:b=20;case3:b=10;

default:b=O;}cout<<b<<endl;return0;}

A.30B.20C.10D.0

8.三种基本结构中,能简化大量程序代码行的是()。

A.顺序结构B.分支结构C.选择结构D.重复结构

9.下面关于友元的描述中,错误的是()。

A.友元函数可以访问该类的私有数据成员

B.一个类的友元类中的成员函数都是这个类的友元函数

C.友元可以提高程序的运行效率

D.类与类之间的友元关系可以继承

10.下列关于线性链表的描述中,正确的是()。I、只含有一个指针域

来存放下一个元素地址II、指针域中的指针用于指向该结点的前一个

或后一个结点(即前件或后件)in、结点由两部分组成:数据域和指针域。

A.仅I、IIB.I,IIIC.仅II、mD.全部

二、单选题(13题)

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

A.运算符函数的名称总是以operator为前缀

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

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

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

12.在满足实体完整性约束的条件下()o

A.一个关系中应该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

13.

28.对于语句cout<<setfill?*,)<<setw(10)<<l<<setfill(,*')(〈setw(2)〈〈2;的输出结

果是().

A.*********1*2B.********12

C.*******1*2D.12********

14.有如下类声明:

classBase{

protected:

intamount;

public:

Base(intn=0):amount(n){}

intgetAmountconst{returnamount;}

);

classDerived:publicBase{

protected:

intvalue;

public:

Derived(intm,intn):value(m),Base(n){}

intgetDataconst{returnvalue+amount;}

):

已知x是一个Derived对象,则下列表达式中正确的是()。

A.x.value+X.getAmount

B.x.getData-x.getAmount

C.x.getData-x.amount

D.x.value+X.amount

15.有下列程序:

#include<stdiO.h>

intfun(intx,inyy)

{if(x==y)return(x);

elsereturn((x+y)/2);

)

voidmain()

{inta=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

)

程序运行后的输出结果是()o

A.3B.6C,8D.12

16.如果表达式-X+y中,-是作为成员函数重载的,+是作为成员函数

重载的,则该表达式还可为

A.y.operator+(x.operator—(0))

B.y,operator+(x.operator-())

C.y.operator+(operator—t(x,0))

D.operator+(x.operator--t())

17.使用输入输出操作符setw,可以控制

A.输出精度B.输出宽度C.对齐方式D.填充字符

18.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的

默认打开方式为O

A.ios_base::in

B.ios_base::in|ios_base::out

C.ios_base::out

D.ios_base::in&ios_base::out

19.若有以下定义:chars(10)="program",t[]="test";则下列选项中对

字符串操作错误的是()。

A.strcpy(s,t);B.strcat(s,t);C.cout<<strlen(s);D.gets(s);

20.下列程序的运行结果为()。

#include<iostream.h>inti=0;

classA{public:A{i++;}

};

voidmain{

Aa,b[3],*C;C=b;

cout«i«endl:

)

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

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

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

()o

A.控制流B.加工C.数据存储D.源和潭

22.有下列程序:

#include<stdiO.h>

intb=2;

intfun(int*k)

{b=*k+b;return(b);)

voidmain()

{inta[10]={L2,3,4,5,6,7,8},i;

for(i=2;i<4;i++){b=fun(&a[i])+b;printf

("%d",b);}

printf("\n");

}

程序运行后的输出结果是()oA.1012B.810C.1028D.1016

23.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的

是_________O

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

三、2.填空题(12题)

24.程序的结果为o

#include"iostream.h"

template<typenameT>

Ttotal(T*data)

{

Ts=0;

while(*data)

(

S+=*data++;

}

returnS;

)

intmain()

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

cout<<total(x);

return0;

cout<<endl;}

25.数据库保护分为安全性控制、【】、并发性控制和数据的恢复。

26.若表达式(x+(y-z)+(m/n))+3中的变量均为double型,则表达式值的

类型为O

27.数据库的设计通常可以分为这样4个步骤:需求分析、概念设计、

[]和物理设计。

28.以下程序的输出结果是【】。

#include<iostream,h>

unsignedfun(unsignednum)

{unsignedk=l;

do{k*=num%10;num/=10;}while(num);

returnk;

)

voidmain()

{unsignedn=26;

cout<<fun(n)<<endl;

)

29.下列程序中声明了两个类AA和BB,其中函数“print”是类AA的成

员函数,但是类BB的友元函数。

请在①、②和⑧处各填入正确的内容,使程序能正常运行。

#include<iostream,h>

[];

classAA{

intt;

public:

AA(intx){t=x;}

voidprint(BB&b);

);

classBB{

ints;

public:

BB(inty){s=y;}

friendvoid[]print(BB&);

void[]

{cout<<"AA:"<<t<<"BB:"<<w,s<<endl;)<

voidmain(){

AAm(6);

BBn(8);

m.print(n);

)

输出结果为:AA:6;BB:8

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

称为【】。

31.请将下列类定义补充完整。

classBase{public:voidfun(){cout<<"Base::fun"<<endl;});

classDerived:publicBase

(

public:

voidfun()

(

[]〃显式调用基类的fun函数

cout<<"Derived::fun"<<endl;

32.表达式c3=cl.operator+(c2)或c3=operator+(cl,c2)还可以表示为

33.分析以下程序的执行结果[】。

#include<iostream,h>

classSample

(

intx,y;

public:

Sample(){x=y=O;}

Sample(inta,intb){x=a;y=b;}

〜Sample()

(

if(x==y)

cout<<"x=y"<<endl;

else

cout<<"x!=y"<<endl;

}

voiddisp()

(

cout<<"x="<<X<<",y="<<y<<endl;

)

);

voidmain()

(

Samples1(2,3);

sl.dispQ;

)

34,排序是计算机程序设计中的一种重要操作,常见的排序方法有插入

排序、【】和选择排序等。

35.若a.b和c均是int型变量,则表达式a=(b=4)+(c=2)执行后,a的

值为【]o

四、程序改错题(10题)

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

I/******epj^or******

voidmain

//******epj*or******

intm=0142:

I/******epj^or******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

(

I********ej*por********

TC(inti)

(

m_i=i;

)

voidprint

(

cout«-m_i«,;

}

public:

intm_i;

intmain

I********epj^or********I

inti;

TC04(10);

while(i>5)

(

I**************I

i++:

04.print;

)

cout«endl;

returnO;

)

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

);

II******epj*or******

TC:TC

cout«"Constructor"«","

i=0;

1I******epj^or******

TC:display

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

1I******epj^or******

TC:TC

COUI«"Destructor"«endl:

voidmain

TCa;

a.display;

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

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

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

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

构,错误的语句在

/I******or******白勺­।日j°

试题程序:

#include<iostream>

#include<fstream>

/I********ej*por********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

//********ej*por********

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

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

II********ej*j*01********

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;

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

)

//********ej*j*or********

catch(chars)

cout«s«endl;

throw((int)0);

//********ej*por********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

II********epj^or********

catch

(

cout«"ERROR"«endl;

)

retumO;

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

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

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

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

构,错误的语句在

1I************白勺-

试题程序:

#include<iostream>

#include<fstream>

1I**************

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

****************

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

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

II********epj*or********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

(

ofstreamoutl;

outl.open("1.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

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

为:

sizeof(Sl)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

⑴不能删除assert()语句。

⑵只能修改后面的数字。

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

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

(

char*sl="abc":

II********epj"or********

assert(sizeof(s1)==3):

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

chars2[10]="ab":

II********ej*por********

assert(sizeof(s2)==2);

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

chars3=23:

II********ej*por********

assert(sizeof(s3)==4);

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

return;

)

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

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

number=l

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

********error********

TCobjl;

objl.Print;

TCobj2(3);

1I********ep^or********

objl.number=10;

1I********ej*j*or*^^0******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

}

//********ej*por********

catch(chars)

(

cout«s«endl;

try

(

throw((int)0);

/j********ep^or********

catch

cout«i«endl;

)

try

(

throw(O);

throw("error");

II********epj^or********

catch

(

cout«"ERROR"«endl;

)

returnO;

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

TC;

);

/j******ej*^or******

TC:TC

cout«"Constructor"«","

i=0;

II******epj^or******

TC:display

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

II******epj^or******

TC:TC

COUI«"Destructor"«endl:

voidmain

TCa;

a.display;

五、综合应用题(2题)

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

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

⑴定义类的公有数据成员函数NO、Name[32],其中NO是int型的数

据,Name[32]为字符型。请在注释1后添加适当的语句。

⑵完成函数Set的定义,分别设置NO和Name的值,请在注释2后添

加适当的语句。

(3)完成函数print,请在注释3后添加适当的语句,输出结果如下:

N0=12345

Name=HelloWorld!

(4)添加默认构造函数,设置NO为0,Name为空,请在注释4后添加

适当的语句。

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

他的程序代码。

试题程序:

#include<iostream.h>

classTC

(

public:

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

No=no;

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

Name[i]=strName[i];

Name[i+1]=0;

voidprint()

//********3********

TC()

II********4********)

);

intmain()

TCstu:

stu.Set(12345,"HelloWorld!");stu.print();

returnO;

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

proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList

的重载运算符函数Operator+,其功能是求当前数据表与另一个相同长

度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数

据表对应元素之和。请编写这个operator+函数。程序的正确输出应该

是:

两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之

和:

4,6,8,10,12,14要求:

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

““"丑丑林"666*******51c”之间,不得修改程序

的其他部分。

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

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

//DataList.h

#inClude<iostream>usingnamespaCestd;

ClaSSDataList{〃数据表类intfen;

double*d;public:

DataList(intlen,doubledata[]=NULL);DataList(DataList&data);

intlengthConst{returnlen;}

doublegetElement(inti)Consttreturnd[i];}

DataListoperator+(ConstDataList&list)Const;〃两个数据表求和void

showConst;〃显示数据表

);

voidwriteToFile(Char$,ConstDataList&);//main.Cpp

#inClude,,DataList.h"

DataList::DataList(intlen,doubledata[]):len(ien){d=new

double[len];

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

d(^)i=(data==NULL?0.0:data[i]);

)

DataList::DataList(DataList&data):len(data.len){d=new

double[len];

for(inti=0;i<len;i++)d[i]=data.d[i];

DataListDataList::0perator+(Con8tDataList&list,)Const{〃两个数据

表求和double*dd=newdouble[list.lensth];

//********333********

〃********666********

returnDataList(list,length,dd);}

voidDataList::showConst{〃显示数据表fr(intoi=0;i<len-1;i++)

eout«d[i]«,\";

Cout«d[len-l]«endl;

intmain{

doublesl[]={l,2,3,4,5,6);

doubles2[]={3,4,5,6,7,8);

DataListlist1(6,si),list2(6,s2);〃定义两个数据表对象eout<<”两个

数据表:"<<endl:

listl.show:list2.show;eout«endl<<”两个数据表之

和:"<<endl:

(Iistl+list2).show;

writeToFile(,,,\listl+list2);return0:

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

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

testll_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按

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

(1)在类定义外完成重载的两个构造函数CPosition。和CPosition(double

dx,doubledy),其中前者为不带参数的构造函数,使CPosition对象的

默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分

别初始化为参数dx和dy的值。请在注释力**1**”之后添加适当的语句。

(2)在类体中添加函数move(doubleax,doubleay)的定义,使得点的坐标

x和y分别移动ax和ay个单位,请在注释“〃**2**”之后添加适当的语

句。

(3)完成函数doubledistance(doublebx,doubleby)的定义,该函数返回

*this和点(bx,by)的距离,请在注释“〃**3**”之后添加适当的语句。

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

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

#include<iostream,h>

#include<math.h>

classCPosition

public:

CPosition();

CPosition(doubledx,doubledy);

doublegetx();

doublegety();

〃**2**

doubledistance(doublebx,doubleby);

private:

doublex;

doubley;

);

〃**]**

(

x=0;y=0;

)

CPosition::CPosition(doubledx,doubledy)

(

x=dx;y=dy;

)

doubleCPosition::getx()

(

returnx;

}

doubleCPosition::gety()

returny;

doubleCPosition::distance(doublebx,doubleby)

(

〃****

voidmain()

(

doublea,b;

cout<<"Inputx,ypositionofapoint:";

cin>>a>>b;

CPositionpsA(a,b);

cout<<"Inputx,ypositionofanotherpoint:";

cin>>a>>b;

cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;

}

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

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

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

⑴完成构造函数的定义,把数据成员size初始化为参数s的信数据成

员buffer指向动态申请的int型size大小的空间。请在注释“〃**1**”之

后添加适当的语句。

(2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释

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

(3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,

注意如果ndx超界,请输出“errorinindex”。请在注释“〃**3**”之后添加

适当的语句。

(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer

指向的空间。请在注释“〃**4**”之后添加适当的语句。

输出结果如下:

1234567891012345678910dd

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

源程序文件testl3_3清单如下:

#include<iostream,h>

#include<stdlib.h>

classVector

(

public:

Vector(ints=100);

Vector(Vector&v);

int&elem(intndx);

voiddisplay();

voidset();

〜Vector();

protected:

intsize;

int*buffer;

Vector::Vector(ints)

II**]**

Vector::Vector(Vector&v)

**2**

*(buffer+i)=*(v.buffer+i);

int&Vector::elem(intndx)

**3**

cout<<errormindex<<end!;

exit(l);

}

returnbuffer[ndx];

)

voidVector::display()

(

for(intj=0;j<size;j++)

cout<<elem(i)<<endl;

)

voidVector::set()

(

for(intj=0;i<size;j++)

elem(j)=j+l;

Vector::〜Vector()

**4**

voidmain()

(

Vectora(10);

Vectorb(a);

a.set();

b.set();

a.display();

b.display();

参考答案

LD解析:在类A中有geta()函数,在类B中也有geta()函数,类C继

承了类A和类B,这样就产生了二义性,所以程序会出错。

2.D

3.D解析:此题考查的是标识符。标识符是由数字、字母以及下划线构

成,其中第一个字符必须是字母或下划线,中间不能有空格;标识符的

长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符

中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合

这些要求的只有选项D)。

4.B解析:本题通过for循环对字符串进行扫描,遇到、0’结束扫描。程

序首先将i的值置为Ln的值置为0。在for循环中,通过if语句判断

*P指向的字符是否为空格,如果是空格则将i的值置为0,而在elseif

语句,如果i的值为0,则n++,然后将i的值重新置为1。如此反复,

最后统计出字符串中的空格个数。

5.C

6.C

7.D解析:由于在case分支的语句后没有出现跳转语句,所以程序将一

直执行到switch语句结束。即逐步给变量b赋值30、20、10和0,最

后b的值为0。

8.D解析:重复结构又称为循环结构,它根据给定的条件,判断是否需

要重复执行某一相同或类似的程序段,利用重复结构可以简化大量的程

序行。

9.D

10.D解析:在定义的链表中,若只含有一个指针域来存放下一个元素地

址,称这样的链表为单链表或线性链表。

在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据

元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针

用于指向该结点的前一个或后一个结点(即前件或后件)。

11.C

运算符函数可以定义为类的友元函数所以C选项错误。

12.A【答案】:A

【知识点】:实体完整性与候选关键字

【解析】:在满足数据完整性约束的条件下,一个关系可以有一个或多

个候选关键字,但至少有一个候选关键字,故选A。

13.A

14.B

本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,

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

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

getAmount成员,而不能访问保护类型的amount成员,故选项C、D

错误。而类对象对类成员的访问也存在类似的情况,即类对象只能访

问类的公有成员,而value是Derived的保护成员,所以A选项也错

误。故答案为B。

15.B\nBo【解析】在程序中子函数fun(intX,inty)的功能是如果X的值

等于y的值,则返回X的值,否则返回这两个数的算术平均值,在主函

数中首先计算fun(5,6),其值等于5,然后再计算fun(8,5),其值等于

6O所以正确答案为选项B。

\n

16.B解析:C++语言中用成员函数重载--X为:x.operator-(),用成员

函数重载x+y为:x.operator+(y)。

17.B

解析:本题考查的知识点是:C++流的操作符。在C++流中,操作符

setw的作用是设置输入输出宽度。故本题应该选择B。

18.A

本题主要考查了文件输入流。当使用ifstream流类定义一个流对象并

打开一个磁盘文件时,文件的默认打开方式为ios_base::ino

19.B

20.C

外部变量i实际上记录的是调用构造函数的次数。

2LA解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变

换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数

据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、

源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的

控制流。

22.C

Co【解析】在程序中子函数fun(int*k)的作用是给静态全局变量加上

形参*k的值。在主函数中进行第一次for循环执行时,fun(&a[2])的返

回值为5,所以5+5=10,\r\n因而输出结果为10,第二次for循环执

行时,fun(&a[3])的返回值为14,所以14+14=28。

23.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与

其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到

高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有

利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连

接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合

的紧密程度,所以C与D错误。故答案为B选项。

24.20

25.完整性控制完整性控制解析:安全性控制:防止未经授权的用户有

意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性

控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造

成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操

作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库

能恢复到正确的状态。注意:数据库的其他用途,如数据定义、数据操

作和数据管理等。

26.doubledouble解析:同类数据进行四则运算类型不变。

27.逻辑设计逻辑设计解析:本题考核数据库设计的4个主要阶段。考

生需要牢记数据库设计中的这4个阶段,并会区分不同阶段的功能。其

中需求分析就是分析用户的要求。概念设计就是将需求分析得到的用户

需求抽象为信息结构及概念模型的过程。逻辑设计是在概念结构设计的

基础上,将与数据库管理系统无关的ER图转换成以数据库管理系统的

逻辑数据模型表示的逻辑模式。物理设计就是为一个给定的逻辑数据模

型选取一个最适合应用环境的物理结构的过程。

28.1212解析:函数有一个形参num,循环前变量k置1,循环中,表

达式num%10是取num的个位,将num的个位值累乘于k中,然后num

除以10o循环直至num为0结束,这是逐一求出num十进制表示的各

位数字,并累乘于变量k的循环。函数最后返回k。函数fun的功能是

求整数的各位十进数字积。

29.classBB;AA::AA::print(BB&w)

30.软件生命周期软件生命周期解析:通常,将软件产品从提出、实现、

使用维护到停止使用退役的过程称为软件生命周期。

31.Base::fun();

32.c3=cl+c2

33.x=2y=3x!=y

34.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入

排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选

择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作

用机制和区别。

35.66解析:本题考察运算优先级问题,从右向左,先括号后乘除,随

后加减,这是基本的运算规则。

36.(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;

37.⑴应添加“public:"。

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

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

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

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

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

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

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

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

循环永远不会退出。

38.⑴应改为“TC::TC”。

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

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

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

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

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

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

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

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

3处的语句“TC二TC”可知,显然这里是在类外实现析构函数,析构函

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

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

39.(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.open("l.txt",

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

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

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

“outl.put(s[i]);?,o

40.⑴应改为"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(…)”。

41.(l)应改为"usingnamespacestd;

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

,5

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

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

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

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

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

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

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

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

42.(1)应改为"assert(sizeof(sl)==4);

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

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

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

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

tcassert(sizeof(sl)==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,所以修改为

“assert(sizeof(s3)==l);

43.⑴应改为"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处=5561刖11收1'(100);”语句中的1<:为类,并不是对象,这里

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

“obj2.SetNumber(lOO);

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

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

(3)应改为"catch(...

温馨提示

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

评论

0/150

提交评论