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

下载本文档

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

文档简介

2022年广东省梅州市全国计算机等级考试

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

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

一、1.选择题(10题)

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

Basepublic:Base(){x=0;}intx;};classDerivedl:virtualpublicBasepublic:

Derived1(){x=10;}};classDerived2:virtualpublicBasepubliciDerived2()

x=20;};classDerived:publicDerived1protectedDerived2{};intmain()

Derivedobj;cout<<obj.x<<endl;return0;}该程序运行后的输出结

田日

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

2.下列关于重载函数的描述中,()是错误的。

A.重载函数中不允许使用默认参数

B.重载函数中编译是根据参数表进行选择

C不要使用重载函数来描述毫不相干的函数

D.构造函数重载将会给初始化带来多种方式

3.以下函数调用语句中含有参数的个数是excc((vl,v2),(v2,v3,V4),

v6);

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

4.以下哪个基类中的成员函数表示纯虚函数()。

A.virtualvoidvf(int)

B.voidvf(int)=0

C.virtualvoidvf(=0)

D.virtualvoidvf(int){}

5.下列对派生类的描述中,错误的是()。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的默认继承方式是私有派生

D.派生类只继承了基类的公有成员和保护成员

6.下列函数中,()是对文件进行写操作的。

A.getB.readC.seekgD.put

7.有以下程序:main(){inta=5,b=4,c=3,d=2;if(a>b>C)cout

<<d<<endl;elseif((c-1)=d)==1)tout<<d+1<<endl;elsecout<

<d+2<<endl;}

A.2B.3c.4D.编译时有错,无结果

8.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的

联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

9.下面关于break语句的描述中,不正确的是(

A.break可以用于循环体内

B.break语句可以在for循环语句中出现多次

C.break语句可以在switch语句中出现多次

D.break语句可用于if条件判断语句内

10.使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方

式为()o

A.ios::inB.ios::outC.ios::inlios::outD.没有默认

二、单选题(13题)

11.己知有数组定义

chara[3][4];

下列表达式中错误的是

A.af21="WIN"

Bstrcpy(a[2],"WIN")

C.a[21[31='W'

D.a[0][1M0][1]

12.支持子程序调用的数据结构是_______。

A.栈B.树C.队列D.二叉树

13.下列语句中错误的是()。

A.Constinta;

B.Constinta=10;

C.Constint*point=0;

D.Constint*point=newint(10);

14.有如下程序:

#inClude<iostream>usingnamespaCestd;ClassBase{

public:

voidoutput{Cout«1;}

virtualvoidPrint{Cout«B,;});

ClassDerived:publicBase{public:

voidoutput{Cout«2;}voidPrint{Cout«,D;}};

intmain{

Base*ptr=newDerived;ptr一>output;

ptr一〉Print;deleteptr;

retumO;}

执行这个程序的输出结果是()oA.1BB.1DC.2BD.2D

15.有如下程序:

#include<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(inti=0){cout«1;}

MyClass(constMyClass&x){cout«2;}

MyClass&operator=(constMyClass&x){cout«3;retum$this;}

~MyClass}cout«4;}

);

intmain

(

MyClassobjl(l),obj2(2),obj3(objl);

return0;

(

执行这个程序的输出结果是()。A.112444B.11114444C.121444D.11314444

16.下列选项中,不是C++关键字的是()。

A.classB.functionC.friendD.virtual

17.设有a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、

m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为

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

18.有如下程序:

#include<iostream>

usingnamespacestd;

classTest(

public:

Test(){}

Test(constTest8Lt){cout«l;}

};

Testfun(Test&u){Testt=U;returnt;}

intmain(){Testx,y;x=fun(y);returnO;}

运行这个程序的输出结果是()oA.无输出B.lC.11D.111

19.下面描述中错误的是()o

A.系统总体结构图支持软件系统的详细设计

B.软件设计是将软件需求转换为软件表示的过程

C.数据结构与数据库设计是软件设计的任务之一

D.PAD图是软件详细设计的表示工具

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

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

A.-lB.NULLC.lD.O

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

#include<iostream.h>voidswap(int&a,intB.inttemp;

temp=a++:a=b:

b=temp;

)

voidmain

(

ima=2,b=3;swap(a,B.;

eout«a«,\,,«b«endl;

A.2,3B,3,2C,2,2D,3,3

22.在结构化设计方法中生成的结构图(SC)中,带有箭头的连线表示

A.模块之间的调用关系B.程序的组成成份C.控制程序的执行顺序D.

数据的流向

23.下列各组类型声明符中,含义相同的一组是()。

A.unsignedlongint和long

B.signedshortint和short

C.unsignedshort和short

D.shortint和int

三、2.填空题(12题)

24.以下程序段给数组A的所有元素输入数据,请填空。

#include<iostream,h>

voidmain(){

inta[10],i;

i=0;

while(i<10)cin>>[]

)

25.Jackson方法是一种面向的结构化方法。

26.头文件【】中包含了处理用户控制的文件操作所需的信息。

27.C++语言支持的两种多态性分别是编译时的多态性和的多

态性。

28.软件开发环境是全面支持软件开发全过程的集合。

29.派生类中的成员不能直接访问基类中的成员。

30.下面程序的结果为【】。

#include<iostream,h>

voidmain()

(

inta=l,b=2;

boolc=l;

if((a>b)||c)cout<<"true"<<endl;

else

cout<<"false"<<endl;

)

31.我们通常用到的cin>>,是属于【】输入。

32.派生类的成员一般分为两部分,一部分是【】,另一部分是自己定

义的新成员。

33.符合结构化原则的三种基本控制结构是:选择结构、循环结构和

34.有以下程序:

#include<iostream>

#include<fstream>

usingnamespacestd;

intmain()

(

fstreamfile;

file.open("abc.txt",ios::in);

if(!file)

(

cout<<"Cannotopenabc.txt"<<endl;

abort();

)

charbuf[80];

inti=0;

while(!file,eof())

(

file.getline(buf,80);

i++;

)

cout<<"Lines:"<<i<<endl;

file.close();

return0;

程序实现的功能是【】。

35.在C++流类库中,根基类为

四、程序改错题(10题)

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

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

catch(chars)

(

cout«s«endl;

try

throw((int)0);

/I********ej'j"or********

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

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

catch

(

cout«"ERROR"«endl;

)

returnO;

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

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

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.。打开考生文件夹下的源程序文件1.cpp,该程序

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

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

voidmain

(

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

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

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

number=l

number=10

number=100

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

构,错误的语句在//******err()r******的下面

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

cout«"number="«number«endl;

private:

intnumber;

);

voidmain

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

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

构,错误的语句在

II******or******白勺~

试题程序:

#include<iostream>

#include<fstream>

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

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,该程序

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

try

throw("error");

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

catch(chars)

cout«s«endl;

try

throw((int)0);

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

catch

(

cout«i«endl;

)

try

(

throw(O);

throw("error");

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

catch

(

cout«"ERROR"«endl;

)

returnO;

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«''Enterastringendwith?."«endl;

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

cin.getline(str,120);

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

while(str)

(

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

if(str[i])=a)

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

1++;

)

cout«str«endl;

return;

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

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

为:

sizeof(Sl)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

⑴不能删除assert()语句。

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

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

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

char*sl="abc":

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

assert(sizeof(sl)==3):

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

chars2[10]="ab":

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

assert(sizeof(s2)==2);

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

chars3=23:

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

assert(sizeof(s3)==4);

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

return;

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

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

确。

程序输出:

8

8

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

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

试题程序:

#include(iostream.h>

classCO

public:

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

staticintn=O:

CO

n++:

CO

n—:

):

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

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

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

eout«C.n«endl;

cout«C0::n«endl;

)

五、综合应用题(2题)

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

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

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

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

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

加适当的语句。

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

N0=12345

Name=HelloWorld!

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

适当的语句。

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

他的程序代码。

试题程序:

#include<iostream.h>

classTC

(

public:

/********2********

(

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.使用VC++6.O打开考生文件夹下的源程序文件3.cpp,其中定

义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公

有派生。

⑴定义类A的构造函数,该构造函数有一个整型的参数x,在构造函

数中请将x赋值给数据成员a。请在注释“//********1********”之

后添加适当的语句。

(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构

造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数

值传人。请在注释“//********2********”之后添加适当的语句。

(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,

在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1

构造函数的参数x和y。请在注释“//********3********”之后添加

适当的语句。

(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输

出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值

在输出时以空格隔开。请在注释“//********4********”之后添加适

当的语句。

程序输出结果如下:

7

3

738

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

试题程序:

#include<iostream.h>

classA

inta;

public:

intgeta{returna;}

);

classAl:publicA

intb;

public:

///********2********

intgetb{returnb;}

);

classA2:publicA1

intC;

public:

****,****3********

voidshow

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

)

);

voidmain

(

A2a(8.3.7):

cout«a.geta«endl:

cout«a.getb«endl:

a.show;

)

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

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

序文件MyMain4.cpp,该程序将通过把类Distance定义为类Point的

友元类来实现计算两点之间距离的功能。但程序中定义的类并不完

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

①把类Distance定义为类Point的友元类。请在注释“〃**1**”之后添加

适当的语句。

②定义类Point的构造函数,完成给私有数据成员x和y的赋值,并且

两个参数的默认值都为Oo请在注释“//**2**”之后添加适当的语句。

③完成类Distance的成员函数Dis(Point&p,Point&q)的定义,并在其

中计算点p、q之间的距离,并且返回结果。假设两点之间的距离

distance=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y))。请在注释“〃**3**"

之后添加适当的语句。

源程序文件MyMain4.cpp中的程序清单如下:

//MyMain4.cpp

#include<iostream>

#include<cmath>

usingnamespacestd;

classPoint

(

public:

〃**]**

//定义类Point的构造函数

//**2**

voidpint()

(

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

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

)

private:

floatx,y;

);

classDistance

(

public:

floatDis(Point&p,Point&q);

);

floatDistance::Dis(Point&p,Point&q)

{,

〃**3**

)

intmain()

(

Pointp(10,10),q(20,20);

Distanced;

cout<<d.Dis(p,q)<<endl;

return0;

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

test40_3.cpp,其中定义了类CVector,但该类的定义并不完整。请按要

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

⑴完成类CVector构造函数的定义,把传入的int型参数a和b分别赋

值给类的成员变量x和yo请在注释“//**1**”之后添加适当的语句。

⑵完成类CVector的“+”运算符重载函数的定义,使Cvector类的两个对

象相加时可以直接使用符号“+”,并且结果仍然为类Cvector的对象,请

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

⑶在主函数中添加适当的语句,把类Cvector的对象a和b相力口,并且

把结果保存在对象c中,最后以“x,y”的形式输出在屏幕上,请在注释

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

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

#include<iostream,h>

classCVector

(

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

);

CVector::CVector(inta,intb)

(

〃**]**

CVectorCVector::operator+(CVectorparam)

〃**2**

temp.y=y+param.y;

return(temp);

)

intmain()

(

CVectora(3,1);

CVectorb(l,2);

CVectorc;

〃**3**

return0;

参考答案

l.A解析:本题考核虚基类的应用。本题中,虽然Derived1和Derived2

都是由共同的基类x派生而来的,但山于引入了虚基类,使得它们分别

对应基类的不同副本。这时数据成员x只存在一份拷贝,不论在类

Derivedl修改,还是在类Derived2中修改,都是直接对这惟一拷贝进行

操作。本题程序执行语句“Derivedobj”时,就会先调用虚基类Base的构

造函数,使得x=0,然后执行类Derivedl的构造函数使得x=10,再执行

类Derived2的构造函数,使得x=20o最后输出x的值为20o

2.A解析:在选项A)中,重载函数中是允许使用默认参数的;为了使

重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函数

中编译是根据参数表进行选择,包括参数的个数和类型。

3.A解析:函数的参数个数是以第一层的逗号为区分的,本题中调用语

句中有3个参数。

4.B

5.D解析:对于选项A,在C++中,一个派生类可以作为另一派生类的

基类,所以选项A是正确的。

对于选项B,在C++语言中,可以从一个类派生出另一个类。派生其他

类的类称为基类,被派生的类称为派生类。一个派生类可以从一个基类

派生,也可以从多个基类派生。所以派生类应至少有一个基类。

对于选项C,在C++中,当派生类时,如果没有特别指定派生的类型,

C++编译器会自动指定其为私有派生。所以选项C也是正确的。

对于选项D,在C++中,派生类中包含了基类的所有成员,但基类的私

有成员在派生类中是隐蔽的,不能被访问。所以选项D是错误的。

6.D

7.B解析:本题考查逻辑表达式的结合特性,即左结合性。对于表达式

a>b>c,首先判断a>b为真,结果为1,然后判断l>c,为假,故转去判

断c-l):d是否成立,成立,结果为1,再判断1=1,结果为真,因此,

执行d+1,答案为B。

8.A解析:两个实体之间的联系实际上是实体集间的函数关系,这种函

数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和

多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于

具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型

等各种模型转换。

9.D

Do【解析】本题考查break语句的使用。break可以结束switch语句

和for循环语旬,但是不能使用在条件判断语句内。

10.DDo【解析】使用ifstream流类定义流对象并打开磁盘文件时,文件

没有默认的打开方式。其中ios::in是为输入而打开;iso::out是为输

出而打开。

11.A

12.A栈支持子程序调用。栈是-种只能在-端进行插入或删除的线性表,

在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子

程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继

续向下执行,这种调用符合栈的特点,因此本题的答案为A。

13.A

const是一个C++语言的关键字,它限定一个变量不允许被改变。使用

const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量

照能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。

14.B

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

函数,本题中定义了一个指向派生类对象的基类指针ptr,执行ptr

一>outpnt后,会执行基类的output函数,输出1,由于Print是虚函

数,所以ptr->Print会执行派生类的Print,即输出D,所以本题答案为

Bo

15.A

本题:考查构造函数和复制构造函数以及重载运算符。本题中先后定

义了两个对象objl,obj2,依次输出口,然后定义了对象obj3,凋用

复制构造函数,输出2,最后执行三次析构函数,输出444。

16.B

17.C解析:在&&运算中,如果第1个表达式的值为假时,第2个表达

式将不再计算。在表达式中第1个表达式m=a>b的值为0,也就是假,

所以第2个表达式的将不再计算。所以n的值没有变。

18.C

Co【解析】本题调用了fun函数。

19.A详细设计的任务是为软件结构图中而非总体结构图中的每一个模

块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数

据结构的细节,所以A错误。

20.C

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

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

a=l,因此W=l。

21.D

本题考查的是引用调用,因为函数swapOl用调用参数a,所以在swap

函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改

变。

22.A解析:在结构图中,用带有箭头的连线表示模块之间的调用关系。

箭头由前一个模块指向后一个模块,表示前一个模块调用后一个模块。

本题的正确答案为A。

23.B

解析:本题考查的知识点是;基本类型的派生类型。C++语言中,基

本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基

本类型的派生类型。派生类型声明符是由基本类型关键字char、int、

float、double前面加上类型修饰符组成的。类型修饰符包括:short短

类型,缩短字长:long长类型,加长字长;signed有符号类型,取值

范围包括正负值:unsigned无符号类型,取值范围只包括正值。其中

signed和unsigned只能同时出现一个,如果省略则默认为signed0

short和long也只能同时出现一个,如果修饰的类型是int,则可以省

略into由此可见,选项A中,unsigned\u30001ong\u3000int的省略形

式为unsigned\u30001ong;选项B中,signed\u3000short\u3000int的省

略形式就是short,正确;选项C中,unsigned\u3000short\u3000int的

省略形式是unsigned\u3000short:选项D中,short\u3000int的省略形

式是short。故本题应该选择B。

24.a[i++]

25.数据结构数据结构

26.fstream.h

27.运行时运行时解析:本题考查的是多态性的概念,多态性主要是指

发出同样的消息而被不同类型的对象接收时导致完全不同的行为,它一

般分为编译时的多态性和运行时的多态性,比如函数重载和虚函数。

28.软件工具软件工具解析:软件开发环境或称软件工程环境是全而支

持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模

式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。

29.私有私有解析:派生类成员在私有继承方式下不能访问基类的所有

成员,在保护继承方式下不能访问基类的私有成员,在公有继承方式下

不能访问基类的私有成员。

30.真真解析:本题考查的是对于逻辑运算符号的理解,运算符的任

何一边取值为真,则整个运算结果为真。

31.有格式有格式解析:C++中运算符“>>”和“<<”都是属于有格式

的输入输出。注意:使用cin,cout进行输入输出时应包括头文件

'iostream.ho

32.从基类继承的成员从基类继承的成员解析:派生类的成员由继承的

成员和自己定义的成员组成。

33.顺序结构结构化程序设计方法是程序设计的先进方法和工具。其中结

构化程序设计的三种基本控制结构是选择结构、循环结构、顺序结构。

34.统计文件abc.txt的行数统计文件abc.txt的行数解析:函数

getline(char*s,streamsizen)从当前输入位置开始提取字符存入s所指向

的具有n个字节的字符空间中。程序中这种调用方式是以换行符为结束

标志输入字符序列,即输入一行字符(回车换行前的所有字符序列)。程

序中通过while循环来统计abc.txt中行数。

35.ios类ios类

36.(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(...)"。

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

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

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

,,

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

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

函数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

40.⑴应改为“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);

41.⑴应改为"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,即第2处的语句修改为“outl.open('l.txt[ios::

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

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

42.(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(…)”。

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

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

,,

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

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

函数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)”。

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

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

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

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

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

4tassert(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)==1);”。

45.(l)“staticintn=O"应改为"staticintn;"。

(2)“intCO::n;”应改为“intCO::n=0;

(3)“cout«c.n«endl;"应改为"cout«c->n«endl;"。

【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1

处应改为“statici

温馨提示

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

评论

0/150

提交评论