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

下载本文档

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

文档简介

2022年湖北省鄂州市全国计算机等级考试

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

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

一、1.选择题(10题)

1.若有以下定义和语句inta=4,b=3,*p,*q,*w;

p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是

A.*q=0B.w=pC.*p=a;D.*p=*w;

2.下面程序的结果是()。#include"iostream.h"voidmain(){char*str:

str="test!";cout<<str[5]:}

A.程序错误B.!C「\(TD.为空字符

3.有以下程序#include<iostream.h>intf(intn){if(n==l)retuml;else

returnf(n-l)+l}voidmain(){inti,j=O;for(i=li<3;i++)=i+=f(i);cout<

<j;)程序运行后的输出结果是()。

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

4.在一棵二叉树上第5层的结点数最多是____。

A.8B.16C.32D.15

5,定义如下枚举类型:enumNumber{one=l,two=2,fomr=4,eight=8},贝IJ

枚举类型Number的取值范()。

A.l-8B.0-8C,1〜15D.0〜15

6.设inta=l,b=2;,则(a++)+b和a+++b这两个表达式的值分别为()。

A.3,3B,3,4C.4,3D.4,4

7.下列关于运算符重载不正确的是()

A.运算符重载不能改变运算符的操作数个数

B.运算符重载不能改变运算符的优先级

C.运算符重载不能改变运算符的结合性

D.运算符重载能改变对预定义类型数据的操作方式

8.下列程序的输出结果是#include<iostream.h>voidmain()

{char*str="12123434";intxl=0,x2=0,x3=0,x4=0,i;for(i=0;

str[i]!='\O';i++)switch(str[i]){case'l1X4++;case'2'X3++;case'3'X2++;

case'4':xl++;}cout<<xl<<","<<x2<<","<<x3<<","<

<x4;}

A.8,6,4,1B.8,6,3,2C,8,8,4,1D,8,6,4,2

9.下列关于C++函数的说明中,正确的是()。

A.内联函数就是定义在另一个函数体内部的函数

B.函数体的最后一条语句必须是return语句

C.标准C++要求在调用一个函数之前,必须先声明其原型

D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形

10.下面程序的运行结果是#include"iostream.h"#definesum(a,b)a*b

voidmain(){intx;x=sum(l+2,3);cout<<x;}

A.0B.9C.7D.5

二、单选题(13题)

11.有如下程序:

#included<iostream>

usingnamespacestd;

voidfl(int&X,int&y){intz=x;x=y;y=z;)voidf2(intX,inty){intz=x;

x=y;y=z;Jintmain(){

intx=10,y=26;

fl(X,y);

f2(x,y);

cout«y«endl;

returnO;

)

运行时的输出结果是()oA.10B.16C.26D.36

12.在下列关键字中,不能用来表示继承方式的是()。

A.privateB.staticC.publicD.protected

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

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

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

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

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

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

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

15.源程序的文档化不包括()。

A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织

D.正确的程序注释

16.已知枚举类型声明语句为:enumC01,0R{WHITE,YELLOW,

GREEN=5,RED,BLACK=10};则下列说法中错误的是()。

A.枚举常量YELLOW的值为1

B.枚举常量RED的值为6

C.枚举常量BLACK的值为10

D.枚举常量WHITE的值为1

17.下列有关继承和派生的叙述中,正确的是()。

A.派生类不彘访问基类的保护成员

B.作为虚基类的类不能被实例化

C.派生类应当向基类的构造函数传递参数

D.虚函数必须在派生类中重新实现

18.一个教师可讲多门课程,一门课程可由多个教师讲授,则实体教师和

课程间的联系是()o

A.1:1联系B.l:m联系C.m:1联系D.m:n联系

19.有如下程序:

#include<iostream>

usingnamespacestd;

voidfunction2(intn);

voidfunctionl(intn):{

if(n<=O)return;

function2(n-2);

)

voidfunction2(intn){

if(n<=O)retum;

functionl(n-l);

)

intmain(){

functionl(5);

returnO;

)

下列关于程序运行情况的描述中,正确的是()。A.function1运行1次,function2

运行2次

B.functionl运行2次,function2运行1次

C.functionl运行2次,function2运行3次

D.function1运行2次,function2运行2次

20.下面描述中体现了抽象类特性的语句是

A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.

不能定义对象

21.执行下列程序后,w的值为()。intw=A,x=14,y=15;

w=((xIIy)&&(w<a));

A.-lB.NULLC.lD.O

22.对于类定义classA{public:virtualvoidfuncl(){}voidfunc2(){}};

classD:publicA{public:voidfuncl(){cout<<"classBrune1"<<endl;}

virtualvoidfunc2(){cout<<"classBfunc2"<<endl;});下面正确的

叙述是o

A.A::func2()和B::funcl()都是虚函数

B.A::func2()和B::funcl()都不是虚函数

C.B::funcl()是虚函数,而A::func2()不是虚函数

D.B::funcl()不是虚函数,而A::func2()是虚函数

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

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

()O

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

三、2.填空题(12题)

24.模块独立性概念是模块化,抽象【】。这些软件工程基本原理的直

接产物。

25.是实现C++语言编译时多态性的机制,是实现C+

+语言运行时多态性的机制。

26.在下面的类定义中,this指针的用途是____o

#include<iostream,h>

classSample

(

intx,y;

public:

Sample(inti,intj){x=i;y=j;}

voidassign(Samplesa);

);

voidSample::assign(Samplep)

(

if(this!=&p)

(

X=p.K;

y=p.y;

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

种面向【】的设计方法。

28.下面程序的运行结果是【】。

#include<iostream,h>

doublefun(doublea,doubleb,charc='*')

(

doubled;

switch(c)

(

case'+':d=a+b;break;

case'-':d=a-b;break;

case'*':d=a*b;break;

case7':d=a/b;break;

)

returnd;

)

voidmain()

(

doubled=1.0;

d=d-fun(fun(2.5,3.5,'+'),fun(3,5),7');

cout<<"d="<<d<<endl;

)

29.下列程序的输出结果是【】。

#inClude<iostream>

rsingnamespacestd;

template<typenameT>

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

intmain()

(

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

return0;

30.数据库管理系统常见的数据模型有层次模型、网状模型和3

种。

31.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、

和自定义完整性。

32.耦会和内聚是评价模块独立性的两个主要标准,其中反映了

模块内各成分之间的联系。

33.在C++中,打开一个文件,就是将这个文件与一个【】建立关联;

关闭一个文件,就是取消这种关联。

34.非成员函数必须声明为类的才能访问这个类的private成员。

35.下列类的构造函数不能通过编译,正确的构造函数应该是____o

#include<iostream,h>

classSample

(

public:

intn;

constintcon;

Sample(intm){con=m+l;n=m;}

voiddisp(){cout<<"normal:n="<<n<<endl;}

voiddisp()const{cout<<"static:n="<<n<<endl;}

voidmain()

(

constSamplea(12);

Sampleb(13);

a.disp();

b.isp();

cout<<a.n<<<<b.con<<endl;

)

四、程序改错题(10题)

36.使用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

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

II********ej*j*or*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

II********ep^or********

cin.getline(str,120);

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

while(str)

II********ep^or********

if(str[i])=a)

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

1++;

}

cout«str«endl;

return;

38.使用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

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

II********ej*j*or*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

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

构,错误的语句在

//******eor******白勺­।日j°

试题程序:

#include<iostream>

#include<fstream>

/I********eppor********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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

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

//********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;

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«''Enterastringendwith?."«endl;

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

cin.getline(str,120);

/j********epj'or********

while(str)

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

)

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

〜TC;

);

I/******ej^0r******

cout«"Constructor"«",";

i=0;

)

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

TC:display

(

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

)

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

TC:TC

(

COUI«"Destructor"«endl:

}

voidmain

(

TCa;

a.display;

)

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

!********6j*j*or********!

TC(inti)

(

m_i=i;

)

voidprint

(

cout«-m_i«,;

)

public:

intm_i;

intmain

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

inti;

TC04(10);

while(i>5)

!**************I

1++

04.print;

)

cout«endl;

returnO;

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

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

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

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

构,错误的语句在

II******ei*ror******白勺~|\1|^*|

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

)

44.使用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;

try

(

throw((int)0);

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

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

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

catch

(

cout«"ERROR"«endl;

)

returnO;

45.使用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":

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

assert(sizeof(sl)==3):

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

chars2[10]="ab":

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

assert(sizeof(s2)==2);

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

chars3=23:

********ex*i*or********

assert(sizeof(s3)==4);

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

return;

五、综合应用题(2题)

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

proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序

proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存

放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并

输出到文件out.dat中。文件in.dat的长度不大于1000字节。

要求:

补充编制的内容写在“〃***********与"〃***********两行之间。实现

将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得

修改程序的其他部分。

注意:程序最后已将结果输出到文件Out.dat中,输出函数

writeToFile已经给出并且调用。

//proj3.cpp

#include<iostream>

#include<fstream>

#include<catting>

usingnamespacestd;

classdoc

private:

char*sir;〃文本字符串首地址

intlength;//文本字符个数

public:

//构造函数,读取文件内容,用于初始化新对象,filename是文件名字

符串首地址

doc(char*filename);

voidreverse;〃将字符序列反转

一doc;

voidwriteToFile(char*filename);

);

doc::doc(char}filename)

(

ifstreammyFile(filename);

intlen=1001,tmp;

atr=newchar[len];

length=0;

while((trap=myFile.get)!=EOF)

(

str[length++]=trap;

)

str[length]=4\0,;

myFile,close;

voiddoc::reverse{

〃将数组atr中的length个字符中的第一个字符与最后一个字符交换,

第二个字符与倒数第二个

〃字符交换

〃*************333*************

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

doc::〜doe

delete[]str;

voiddoc::writeToFile(char*filename)

OfstreamoutFile(filename);

outFile«str;

outFile.close;

voidmain

docmyDoc(5,in.dat");

myDoc.reveme;

myDoc.writeToFile("out.dat");

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

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

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

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

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

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

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

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

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

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

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

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

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

AllWeight+=w:

AllNo++:

}

〜TCFruit

(

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

A11Weight-=Weight:

)

voiddisplay

(

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

endl;

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

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

endl«endl;

)

};

II********4********

floatTCFruit::AllWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

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

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

testl2_3.cpp,其中定义了类Base和类A,类A公有继承Base,但这两

个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义枚举类型变量en,它包含两个枚举符front和back,请在注释

“〃**1**”之后添加适当的语句。

(2)在类Base中添加常成员虚函数voidE()的定义,该函数输出“InBase

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

⑶在类A中添加常成员虚函数voidE()的定义,该函数先调用基类中的

虚函数E()再输出“InAE!”,请在注释“//**3**”之后添加适当的语句。

(4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成

员,并输出“Aconstructor.",请在注释“//**4**”之后添加适当的语句。

输出结果如下:

Baseconstructor.

Aconstructor.

InBaseE!

InAE!

InBaseP!

InA!

1

Adestructor.

Basedestructor.

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

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

#include<iostream.h>

〃**]**

classBase

(

protected:

intbl;

intb2;

public:

Base();

〜Base();

intGetbl()const{returnbl;}

voidSetbl(intx){bl=x;}

intGetb2()const{returnb2;}

voidSetb2(inty){b2=y;}

voidPrint()const{cout<<"InBaseP!"<<endl;

〃**2**

);

Base::Base():bl(l),b2(5)

(

cout<<"Baseconstructor."<<endl;

)

Base::〜Base()

(

cout<<"Basedestructor."<<endl;

classA:publicBase

protected:

enenA;

public:

A();

〜A();

enGetColor()const{returnenA;}

voidSetColor(encolor){enA=color;

voidInA(){cout<<"InA!"<<endl;}

〃**3**

(

Base::E();

cout<<"InAE!"<<endl;

)

);

〃**4**

(

cout<<"Aconstructor."<<endl;

)

A::〜A()

(

cout<<"Adestructor."<<endl;

)

voidmain()

(

Aal;

al.E();

cout<<endl;

al.Print();

al.InA();

cout<<al.GetblQ<<endl;

}

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

序文件MyMainl4.cpp,程序中定义了3个类A、B和C,但类的定义并

不完整。

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

①类A的成员函数setx(inti,intj)是虚函数,其实现的功能是将类A的

保护成员x和y分别设置成i和j并且y具有默认值0。请在注释“//*

*1**"之后添加适当的语句。

②将类A的成员函数print。声明成员纯虚函数。请在注释“//**2**”之

后添加适当的语句。

③完成类A的保护数据成员x和y的定义,它们都是整型变量。请在注

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

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

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

//MyMainl4.cpp

#include<iostream>

usingnamespacestd;

classA

public:

〃***]***

〃***2***

protected:

〃***3***

);

classB:publicA

(

public:

voidprint()

(

cout<<X*X<<",

)

);

classC:publicA

(

public:

voidprint()

(

cout<<x*x*x<<endl;

)

);

intmain()

(

A*pa;

Bb;

Cc;

pa=&b;

pa->setx(5);

pa->print();

pa=&c;

pa->setx(2);

pa->print();

return0;

参考答案

1.D解析:指针是一个既强大又危险的技术,C/C++语言之所以灵括高

效,原因之一就是采用了指针技术,所以C/C++特别适合开发系统软件

和工具软件.在C#语言中已经取消了指针,而且全部属于托管代码。而

在dotnet框架中,为了保持兼容性,仍然可以使用C++,但分托管和非

托管代码。本题实际上有个圈套,只要注意到题干中“语句”,而且注意

到各个选项中都有分号结尾,就可以判断选项D是正确的:语句不是以

逗号结尾的。

2.D解析」\\(T输出为不显示,只代表一个字符串的结束。注意:C++语

言中各种字符转义序列的意义和应用。

3.B

4.B

[答案]B

[考点]数据结构与算法

[评析]依次从上到下,可得出:

第1层结点数为1;

第2层结点数为2*1=2;

第3层结点数为2*2=4;

第n层结点数为2的n-l次幕

5.D解析:enum<枚举类型名〉{<枚举元素表>};。其中,关键词enum

表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚

举元素或枚举常量组成。如果为默认设置,枚举类型从。开始赋值,本

题中最大值为8,那么它与其他值和的最大计算结果为15,所以它的取

值范围为。〜15。

6.A解析:单目的抖运算优先级高于双目的+运算,不过抖的结合性是

自右向左的,而十是自左至右的,所以上面的两个表达式都是先计算a+b

的值之后,a再自加1。

7.DD。【解析】本题考查C++语言中操作符重载的概念。运算符重载

的关键字是operator。运算符重载的规则是重载时不能改变运算符的操

作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能

改变对预定义类型数据的操作方式。

8.D解析:本题考查循环的嵌套。只要注意在C++语言中,系统在字符

指针的最后位置会增加一个字符串结束符执行8次for循环,再根

据switch语句中的条件易知答案。注意:C++中各种条件判断,循环语

句的用法。

9.C

解析:本题考查了函数的一些概念。内联函数是在一般函数定义之前

加上关键字\u3000inline声明的函数,其作用类似于预处理宏函数,而

不是定义在另一个函数体内部的函数,所以选项A不正确。在无返回

值函数中,执行完最后一条语句后将自动返回,而不必加入return语

句,所以选项B也是错误的。如果函数只是返回值类型不同,而其他

完全相同(参数个数及类型),则不能作为重载函数宋使用,所以选项D

不正确。故应该选择C。

10.C解析:理解宏定义,sum(a,Ba*b中a为1+2,b为3,故

sum(l+2,3)=l+2*3,即宏定义的替换过程是原样替换。注意:选项B的

计算方法是(1+2)*3=9是错误的,注意,不要随意的加括号。注意:宏

定义与函数的区别。

11.A

Ao【解析】该题考查了函数参数传递的两种方式:引用传递和值传

递,引用传递时x和y会交换,而值传递时二者不交换,因此选10。

12.B

解析:在C++中继承主要有三种关系:public>protected和private。这

三种继承关系中public继承是最为常用的一种继承关系。

13.B

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

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

14.B

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

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

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

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

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

C、D项错误。

15.B解析:源程序的文档化主要包括3点:(1)符号名应具有一定实

际的含义,便于理解程序功能:(2)正确的程序注释;(3)良好的视觉组

织。利用空格、空行、缩进等技巧使程序层次清晰。

16.D

枚举变量中的枚举元素系统是按照常量来处理的。如果没有进行元素

赋值操作,那么元素将会被系统从0开始自动递增地进行赋值操作,

但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进

行按前一个元素的值加1操作,故WHITER,YELLOW=1,

GREEN=5,RED=6,BLACK=10o

17.C

派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为

虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么

仍然使用基类的成员函数。

18.DD。【解析】一个教师可以上多门课程,一门课程也可以由多个教师

教授,这是典型的多对多的E—R关系。

19.D

Do【解析】函数执行过程为:functionl(5),function2(3),

functionl(2),function2(0)return。

20.D解析:抽象类指的是类中至少有一个纯虚函数,纯虚函数是虚函数

后有“=0”修饰,表示该函数在本级类中没有实现,类仅用于派生。抽象

类存在的唯一目的就是构造类层次,派生出其他类。抽象类与其他类的

最大区别就在于抽象类不能实例化。

21.C

Co【解析】把x和y化为二进制,X=14表示为1110,y=15表示为

1111,所以x||y=l,A的ASCII是65,a的ASCII是97,所以A<

a=l,因此W=l。

22.C

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

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

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

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

控制流。

24.信息隐蔽信息隐蔽

25.静态联编或静态绑定;动态联编或动态绑定静态联编或静态绑定,•动

态联编或动态绑定解析:C++语言编译时多态性的机制是静态绑定,

实现C++语言运行时多态性的机制是动态绑定。

26.33.14。3,3.14。解析:C++编译系统将根据实参表中的实参的类型

来确定函数的形参列表中的类型。函数fun(3,6)返回的值为3,函数调

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

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

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

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

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

28.d=0.6

29.33.14

30.关系模型关系模型

31.参照完整性参照完整性

32.内聚内聚

33.流流解析:在C++中,对文件的操作是由文件流完成的。文件流类

在流与文件之间建立链接。

34.友元函数友元函数解析:C++的友元提供了不同类或对象的成员函

数之间、类的成员函数与一般函数之间数据共享的机制。一个类可以利

用friend将一般函数、其他类成员函数或者其他类声明为友元。友元的

声明可以放在类的任何一个区域。定义须在类外声明在公有私有部分均

可。

35.Sample(intm):con(m+l){n=m;)Sample(intm):con(m+l){n=m;)解析:

本题考察常数据成员的初始化方法。常数据成员的定义必须出现在类体

中,而且初始化只能通过构造函数的成员初始化列表进行,而且不能被

更新。

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

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

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

【解析】本题第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);

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

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

,

\n(3)应改为"if(str[i]>=a&&str[i]<=2)*o

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

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

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

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

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

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

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

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

38.⑴应改为"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++中

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

,5

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

第3处=5501即11^1'(100);”语句中的1^为类,并不是对象,这里

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

“obj2.SetNumber(lOO);

39.⑴应改为"usingnamespacestd;"。

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

5,

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

【解析】本题第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.(1)应改为“ein.getline(str,120,?);

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

,?

(3)应改为“if(str[i]>=a&&str[i]<=2)o

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

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

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

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

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

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

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

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

tc,,

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

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

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

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

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

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

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

为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后

的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错

误问题,display函数返回值为void,因此第2处的语句应改为

“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是

在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名

相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处

的语句应改为“TC::〜TC”。

42.⑴应添加“public:"。

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

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

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

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

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

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

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

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

循环永远不会退出。

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

\n⑵应改为“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

温馨提示

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

评论

0/150

提交评论