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

下载本文档

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

文档简介

2022年江西省萍乡市全国计算机等级考试

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

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

一、L选择题(10题)

L软件结构设计的图形工具是()o

A.DFD图B.结构图C.PAD图D.N-S图

2.设intb=12表达式b+=b-=b*b求值后b的值是。

A.552B,264C,144D.-264

3.信息隐蔽的概念与下述哪一种概念直接相关()。

A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度

4.下面的程序的结果是main(){intx=3,y=0,z=0;

if(x=y+z)cout<<"***elsecout<<"###

#";}

A.有语法错误不能通过编译

B.输出****

C.可以通过编译,但是不能通过连接,因而不能运行

D.输出####

5.有如下的对类“X”的说明,其中是错误的。classX{

A.inta=10;B.X();public:C.X(intval);D.~X();}

6.类的析构函数的作用是()。

A.一般成员函数B.创建对象C.初始化对象D.删除对象

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

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

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

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

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

8.有下列二叉树,对此二叉树前序遍历的结果为()o

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

9.设有intx=ll;,则表达式(x++*2/3)的值是

A.7B,8C.11D.12

10.下列对变量的引用中,错误的是()。

A.inta;int&p=a;

B.chara;char&p=a;

C.inta;int&p;p=a;

D.floata;float&p=a;

二、单选题(13题)

11.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各

种数据结构进行的运算,以及()。

A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

12.对于一个类定义,下列叙述中错误的是()。

A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数

B.如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函

C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷

贝构造函数

D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造

函数

13.已知类MyClass声明如下:

classMyClass{

intn;

public:

MyClass(intk):n(k){}

intgetValue()const{returnn;}

};

在下列数组定义中正确的是O

A.MyClassxl[2];

B.MyClassx2[2]={newMyClass(l),newMyClass(2)};

C.MyClass*x3[2];""

D.MyClass*x4[2]={MyClass(l),MyClass(2)};

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

A.charstr[]={,a,,'b',5C5}

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

C.charstr[2][3]={{'a','b'},{'C','d'},{V,T}}

D.charstr={-a,-b,-C)

15.要利用C++流进行文件操作,必须在程序中包含的头文件是

()。

A.iostreamB.fstreamC.strstreamD.iomanip

16.有如下程序:

ClassBase{public:

intdata;};

ClassDerivedl:publicBase{};

ClassDerived2:protectedBase{};

intmain(){

Derivedldl;Derived2d2;dl.data=O;〃①

d2.data=O;〃②return0;

)

下列关于程序编译结果的描述中,正确的是()。

A.①②皆无编译错误B.①有编译错误,②无编译错误C.①无编译错误,

②有编译错误D.①②皆有编译错误

17.软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分

析、编写需求规格说明书以及。

A.阶段性报告B.需求评审C.总结D.都不正确

18.下面程序输出的结果为()。

#include''iostream.h"

classA

{public:

A(){cOUt<<"CLASSA"<<endl;}

〜A(){)};

ClaSSB:publicA

{public:

B(){cout<<"CLASSB"<<endl;}

〜B(){}};

voidmain()

{A*P;

P=newB:

B*q:

q=newB;}

A.CLASSA

B.CLASSACLASSBCLASSBCLASSB

C.CLASSA

D.CLASSACLASSBCLASSBCLASSACLASSBCLASSBCLASSB

19.设int&max(int&,int&)返回两参数中较大者,如有两整型变量inta=5;int

b=10;在执行max(a,b)++后,a,b的值分别为

A.5,10B,6,10C,5,11D,6.11

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

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

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

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

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

21.设R是一个2元关系,S是一个3元关系,则下列运算中正确的是

()o

A.R-SB.RxSC.RASD.RUS

22.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是

A.10B.8C.6D.4

23.C++语言类体系中,不能被派生类继承的有()o

A.转换函数B.构造函数C.虚函数D.静态成员函数

三、2.填空题(12题)

24.结构化设计主要分为系统设计和模块设计,【】的任务是决定系统

的模块结构。

25.阅读下面程序:

#include<iostream.h>

voidfunl(chara,charb)

(

charc;

c=a;a=b;b=C;

)

voidfun2(char&a,charb)

(

charc;

c=a;a=b;b=c;

)

voidfun3(char&a,char&b)

(

charc;

c=a;a=b;b=C;

)

voidmain()

(

chara,b;

a='A';b='B';

funl(a,b);cout<<a<<b;

a='A';b='B';

fun2(a,b);cout<<a<<b;

a='A';b='B';

fun3(a,b);cout<<a<<b;

则该程序的输出为【】。

26.在数据库的概念结构设计中,常用的描述工具是【】。

27.在长度为n的有序线性表中进行二分查找,最坏的情况下需要的比

较次数为【】。

28.下列程序的招待结果是【]o

#include<iostream,h>

floattemp;

float&fn2(floatr)

(

temp=r*r*3.14;

returntemp;

)

voidmain()

(

floata=fn2(5.0);

float&b=fn2(5.0)

b=20;

cout<<temp<<endl;

29.在扩展的E-R模型中;子类【】超类所有的联系和属性。

30.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功

能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成

程序。

31.写出下列程序的运行结果【】。

#include<iostream.h>.

#include<fstream.h>

#include<stdlib.h>

voidmain()

(

fstreamoutfile,infile;

outfile.open("data.clat",ios::out);

if(!outfile)

(

cout<<"Can'topenthefile."<<endl;

abort();

)

outfile<<"1234567890"<<endl;

outfile<<"aaaaaaaaa"<<endl;

outfile<<”**********"<<endl;

outfile.close();

infile.open("data.dat",ios::in);

if(Jinfile)

(

cout<<"Can'topenthefile."<<endl;

abort();

charline[80];

int1=0;

while(Jinfile.eof())

I++;

infile.getline(line,sizeof(line));

cout<<I<<<<line<<endl;

)

infile.close();

32.main函数中发生编译错误的语句是[]o

#include<iostream,h>

classA

(

public:

inta;

constintb:

A():a(10),b(20){

voidfun()const

(

cout<<"a="<<a<<"\tb="<<b<<endl;

voidmain()

Aobj1;

constA*ptr=newA:

ptr=&obj1;

ptr->a=100;

ptr->fun(),

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

#include<iostream>

usingnamespacestd;

intmain()

intdata=l;

int&r=data;

data+=5;

r+=5;

cout<<data<<endl;

return0;

)

34.在树形结构中,树根结点没有【】。

35.静态成员函数可以直接访问类的【】成员,不能直接访问类的【】

成员。

四、程序改错题(10题)

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

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

number=l

number=10

number=100

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

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

试题程序:

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

II********ej*j*or********

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

I********ei*ror********/

TC(inti)

(

m_i=i;

)

voidprint

(

cout«—m_i«,;

}

public:

intm_i;

intmain

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

inti;

TC04(10);

while(i>5)

I********eirOr********I

1++

04.print;

)

cout«endl;

returnO;

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

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

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

到屏幕中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

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

cin.getline(str,120);

II********ej*j*or********

while(str)

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

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

39.使用VC++6.。打开考生文件夹下的源程序文件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);

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

objl.number=10;

II********ej*j*0j**^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

确。

程序输出:

8

8

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

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

试题程序:

#include(iostream.h>

classCO

public:

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

staticintn=0:

CO

n++:

〜CO

):

I********enor********I

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

/********epj^0r********I

eout«C.n«endl;

cout«C0::n«endl;

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

inti=0;

charstr[120];

cout«"Enterastringendwith?."«endl;

II********ej*j*or********

cin.getline(str,120);

II********eppor********

while(str)

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

if(str[i])=a)

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

i++;

cout«str«endl;

return;

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

******ei^or******

voidmain

//******enor******

intm=0142:

//************

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

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

TC:TC

cout«"Constructor"«"

i=0;

II******ej*x*or******

TC:display

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

II******ej*x*or******

TC:TC

COUI«"Destructor"«endl:

voidmain

TCa;

a.display;

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

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

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

程序异常,输出信息为

error

0

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

catch(chars)

(

cout«s«endl;

)

try

(

throw((int)0);

)

//********e

catch

cout«i«endl;

try

throw(O);

throw("error");

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

catch

(

cout«"ERROR"«endl;

)

returnO;

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

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

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

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

构,错误的语句在

/I************白勺-।,jo

试题程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

outl.open("l.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;

五、综合应用题(2题)

46.使用VC++6.。打开源程序文件3.cpp。其中类TC用于把文件

输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的

大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将

in.txt文件中的内容输出到

屏幕,并且将文件按照以上方式分割,存于文件。utl.txt和out2.txt

中。

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

整。

⑴从输入文件中获得一个字符,并判断是否到文件结

尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。

(2)把获得的输入文件的内容存储到bur中,并且用len

记录下文件的长度。请在注释2后添加适当的语句。

(3)将输入文件的后一半内容存储在第二个文件中,请

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

(4)使用文件流对象打开输入文件in.txt,请在注释4

后添加适当的语句。

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

改其他的程序代码。

试题程序:

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h)

classTC

(

public:

TC(char*fileName)

(

len=O;

fstreaminfile;

infile.open(fileName,ios::in)

charch;

while

(

cout«ch;

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

)

infile,close;

)

voidsplit

(

fstreamoutfilel;

fstreamoutfile2;

outfilel.open("outl.txt",ios::out);

outfile2.open("out2.txt",ios::out);

inti=0:

for(i=0;i<len/2;i++)

outfilel«buf[i];

do

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

)

while(i!=len);

outfilel.close;

outfile2.close;

)

prwate:

intlen;

charbuf[1024];

);

voidmain

(

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

TCobj;

obj.split;

return;

)

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

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

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

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

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

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

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

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

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

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

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

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

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAHNo;

public:

TCFruit(floatw)

(

//•I>•I>•I>*1**1**1**1**1**1**1^

AllWeight+=w:

AllNo++:

TCFruit

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

A11Weight-=Weight:

)

voiddisplay

(

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

endl;

cout«,,Allsellnumber:''«A11No«endl;

cout«"Allsellweight:"«A11Weight«"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打开考生文件夹下的工程test21_3,此工程包含一个源程

序文件test21_3.cpp,其中定义了用于表示长方形的类CRectangle,但类

CRectangle的定义并不完整。请按要求完成下列操作,将类CRectangle

的定义补充完整。

⑴定义CRectangle的构造函数,函数含参数dx,dy,da和db,它们都

是double型的数据,请将类数据成员x,y,a和b初始化,并输出

“CRectangleConstructed."(另起一行输出该文字)。请在注释“〃**1**之后

添加适当的语句。

(2)完成类CRectangle的成员函数getperimeter。的定义,将以a和b为

边的矩形周长的值返回,请在注释“〃**2**”之后添加适当的语句。

(3)完成类CRectangle的成员函数getarea。的定义将以a和b为边的矩

形面积的值返回,请在注释“〃**3**”之后添加适当的语句。

(4)完成类CRectangle的友元函数frienddoubledist(CRectangle&rt)的定

义,先定义两个double型的临时变量tx和ty,然后将参数对象rt的数

据成员x与a的一半相加,y与b的一半相加,分别赋值给tx和ty,最

后求出tx与ty的平方和的值之后将它的平方根返回,将请在注释

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

输出结果如下:

CRectangleConstructed.

Down_Leftcornerpointis:(100,50)

a=1200,b=700

Perimeterofthisrectangleis:3800

Areaofthisrectangleis:840000

TheDistanceis:806.226

CRectangleConstructed.

Down_Leftcornerpointis:(200,150)

a=2000,b=800

Perimeterofthisrectangleis:5600

Areaofthisrectangleis:1.6e+006

TheDistanceis:1320.04

CRectangleDestructed.

CRectangleDestructed.

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

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

#include<iostream.h>

#include<math.h>

classCRectangle

(一

private:

doublex;

doubley;

doublea;

doubleb;

public:

CRectangle()

(-

cout<<"\nCRectangleConstructed."<<endl;

)

CRectangle(doubledx,doubledy,doubleda,doubledb)

(“

〃**]**

a=da;

b=db;

cout<<"\nCRectangleConstructed."<<endl;

CRectangle()

cout<<"CRectangleDestructed."<<endl;

)

voidputxy(doubledx,doubledy){x=dx;y=dy;}

voidputab(doubleda,doubledb)(a=da;b=db;}

doublegetx(){returnx;}

doublegety(){returny;}

doublegeta(){returna;}

doublegetb(){returnb;}

doublegetperimeter()

(-

〃**2**

)

doublegetarea()

(一

〃**3**

)

frienddoubledist(CRectangle&rt);

);

doubledist(CRectangle&rt)

{,

ty=rt.y+rt.b/2.0;

returnsqrt(tx*tx+ty*ty);

)

voidmain()

(

CRectanglerect;

rect.putxy(100.0,50.0);

rect.putab(1200.0,700.0);

cout<<"Down_Leftcornerpointis:("<<rect.getx()<<","<<

rect.gety()<<")"<<endl;

cout<<"a="<<rect.geta()<<",b="<<rect.getb()<<endl;

cout<<"Perimeterofthisrectangleis:"<<rect.getperimeter()<<endl;

cout<<"Areaofthisrectangleis:"<<rect.getarea()<<endl;

cout<<

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

序文件testl8_3.cpp,其中定义了用于表示雇员的类Employee,但类

Employee的定义并不完整。请按要求完成下列操作,将类Employee的

定义补充完整。

(1)补充类Employee的构造函数,请使用字符串函数将数据成员name,

address,city,province和zipcode分另初始化为参数*nm,*addr,*city,

*prov和*zip的值。请在注释“〃**1**”之后添加适当的语句;

(2)完成类Employee的成员函数ChangeName(char*newName)的定义

将newName指向的内容赋值给数据成员name,请在注释“〃**2**”之后

添加适当的语句;

(3)完成类Employee的成员函数Display。的定义,先使用指针buffer动

态申请一个char型的200单位大小的空间,然后使用字符串函数将数

据成员name和address依次复制其中,最后返回该指针buffer,将请在

注释“〃**3**,,之后添加适当的语句。输出结果如下:

王东建国路大街105号

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

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

#include<iostream.h>

#include<string.h>

classEmployee{

protected:

charname[20];

charaddress[100];

charcity[20];

charprovince[20];

charzipcode[10];

public:

Employee(char*nm,char*addr,char*city,char*prov,char*zip);

voidChangeName(char*newName);

char*Display();

};

Employee::Employee(char*nm,char*adr,char*cit,char*prov,char*zip)

(

〃**]**

strcpy(city,cit);

strcpy(province,prov);

strcpy(zipcode,zip);

}.

voidEmployee::ChangeName(char*newName)

{”

〃**2**

)

char*Employee::Display()

{'

〃**3**

strcat(buffer,address);

returnbuffer;

)

voidmain()

(

Employeeemp("李华","建国路大街105号","石家庄“,“河北“,"103400");

emp.ChangeName("王东”);

cout<<emp.Display()<<endl;

)

参考答案

1.BB.【解析】常用的软件结构设计工具是结构图,也称程序结构图。

DFD图(数据流图)是以图形的方式描述数据在系统中流动和处理的过

程,只反映系统必须完成的逻辑功能。它是需求分析阶段的图形工具。

盒式图(N—S图)和问题分析图(PAD.是详细设计的常用工具。

2.D

3.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不

需要这些信息的其他模块来说是不能访问的。模块独立性是指每个模块

只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简

单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的

耦合性越强,则该模块的模块独立性越强。

4.D解析:注意本题本意是考察x==y+z,但是少写了一个=,因此逻辑

表达式变成了赋值语句,故x的值为0,即假,因此程序执行else部分。

本题答案为D。

5.A

6.D解析:析构函数的作用是删除对象。

7.D

8.C解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,

最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依

次访问其左、右子树。

9.A解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有

变量的值增1,所以表达式(x++*2/3)相当于(11*2/3)取整后为7。

10.C解析:本题考核引用的定义和初始化。引用具有如下特点:

①引用能够使用任何合法变量名。

②引用不是变量,所以必须在定义时初始化,而且一旦初始化之后,

就不能再成为其他变量的引用。

③引用不是值,不占存储空间,说明引用时,目标的存储状态不会改

变。所以,引用只有说明,没有定义。

④引用仅在说明时带有“&”,以后就像普通变量一样使用,不能再带

在选项C中,由于在定义引用p后没有进行初始化,所以此语句是错

误的。故本题答案是C。

1LA解析:数据结构作为计算机的一门学科,主要研究和讨论以下三

个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即

数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的

存储关系,即数据的存储结构;③对各种数据结构进行的运算。

12.B

本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器

将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构

造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定

义拷贝构造函数,编泽器将生成一个拷贝构造函数。

13.C

本题主要考查了对象数组、指针数组和new运算符。new运算符返回

指向指定类型的一个指针。对象数组是指数组元素为对象的数组,该

数组中的每一个元素都是同一个类的对象。定义对象数组时,系统将

自动调用构造函数创建每一个对象元素,因为类MyClass中定义了一

个有一个整型参数的构造函数,编译器将不再为其生成缺省构造函

数,所以定义对象数组时必须分别调用有参构造函数为每一个数组元

素指定初始值。因此选项A错误,没有初始化对象数组;选项B中,用

指向对象的指针初始化对象数组,类型不匹配,因此选项B错误;指针

数组是由指针组成的数组,即数组中的每一个元素都是指向同一类型

对象的指针。选项C定义了指向MyClass类对象的指针数组x3,该定

义语句正确;选项D中,只能用指向MyClass类对象的指针或用已有的

MyClass类对象的地址来初始化指针数组x4的每一个元素,不能用对

象进行初始化,因此选项D错误。

14.A

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

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

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

15.B

解析:iostream通用I/O流类和其他I/O流的基类;fstream类用来对文

件流进行操作,fstream类的头文件是fstream.h:stxstream类同时可以

支持C风格的串流的输入输出操作iomanip是I/O流控制头文件,就

像c中的格式化输出一样。

16.C

本题考查公用继承和保护继承对基类成员的访问属性。在公用继承

中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私

有成员仍为基类私有、稿.受保护继承中,基类的公用成员和保护成

员在派生类中成了保护成员,其私有成员仍为基类私有。本题中

Derivedl公用继承Base.所以①编译正确,Derived2保护继承Base,

所以②编译不正确。

17.B解析需求分析阶段的工作,可以概括为以下4个方面需求获取、

需求分析、编写需求规格说明书和需求评审。本题的正确答案为B。

18.C

Co【解析】本题考查类的继承、类的实例化和构造函数、析构函数的

调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束

运行该实例后调用析构函数。

19.C

考点:本题主要考查知识点为引用作为函数参数透析:执行

max(a,b)++后,函数返回变量b后加1,即b=ll.因为函数参数采用的

引用方式,使用改变的是实参变量b的值。

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

21.B解析:关系的交⑺)、并(U)和差(一)运算要求两个关系是同元的,

显然作为二元的R和三元S只能做笛卡儿积运算。

22.C

根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是

比度为2的结点多一个。

23.B

Bo【解析】派生类对象的数据结构是由基类中说明的数据成员和派生

类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须

重新定义。

24.系统设计系统设计解析:结构化设计主要分为系统设计和模块设计

-系统设计的任务是决定系统的模块结构:模块设计的任务是具体考虑

每一个模块内部采用什么算法,模块的输入、输出以及该模块的功能。

25.ABBBBA

26.E-R图E-R图

27.1og2nlog2n解析:在长度为n的有序线性表中进行二分查找,最坏的

情况下需要的比较次数为logzn。

28.2020解析:本题考察全局变量和引用的综合使用。在主函数中,b实

际上是temp的一个引用。因此在给b赋值20的时候,输出的temp就

是20o

29.继承继承

30.自顶而下自顶而下

31.1:12345678902:aaaaaaaaa3:**********4:

32.ptr->a=100;ptr->a=100;解析:本题考察的是const的使用。const

修饰的是指针变量的值,及指针本身是可变的,但指针所指对象的值是

常量,即ptr->a是不能被改变的。

33.11

34.前件前件解析:在树形结构中,每一个结点只有一个前件,称为父

结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有

多个后件,它们都称为该结点的了结点。没有后件的结点称为叶子结点。

35.静态非静态静态\r\n非静态解析:静态成员函数可以直接访问该类

中的静态数据成员,而不能访问该类中的非静态数据成员。

36.⑴应改为"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处"(2.5611^11加61"(10());”语句中的1(2为类,并不是对象,这里

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

“obj2,SetNumber(lOO);

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.(1)应改为“ein.getline(str,120,?);

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

(3)应改为“if(str[i]>=a&&str[i]<=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,所以修改为

,5

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

39.(1)应改为"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);

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

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

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

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

处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用c的对

象,应改为"cout«c->n«endl;"。

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

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

5,

W(3)应改为"iRstr[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)”。

42.(1)“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;

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

3(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”。

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

⑵应改为“cateh(

温馨提示

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

评论

0/150

提交评论