2021年甘肅省隴南市全國計算機等級考試C++語言程序設(shè)計真題(含答案)_第1頁
2021年甘肅省隴南市全國計算機等級考試C++語言程序設(shè)計真題(含答案)_第2頁
2021年甘肅省隴南市全國計算機等級考試C++語言程序設(shè)計真題(含答案)_第3頁
2021年甘肅省隴南市全國計算機等級考試C++語言程序設(shè)計真題(含答案)_第4頁
2021年甘肅省隴南市全國計算機等級考試C++語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2021年甘肅省隴南市全國計算機等級考試

C++語言程序設(shè)計真題(含答案)

學(xué)校:班級:姓名:考號:

一、1.選擇題(10題)

1.有如下表達(dá)式19/30*.sqrt(4.0)/5,則該表達(dá)式值數(shù)據(jù)類型為。

A.intB.floatC.doubleD.不確定

2.設(shè)有語句:charstrl[]="string",str2[8],*str3,*str4="string";則下列對

庫函數(shù)strcpy()調(diào)用不正確的是()o

A.strcpy(strl,"HeliO1");

B.strcpy(str2,"HellO2");

C.strcpy(str3,"HellO3");

D.strcpy(str4,"HellO4");

3.在軟件設(shè)計中,不屬于過程設(shè)計工具的是()。

A.PDL(過程設(shè)計語言)B.PAD圖C.N-S圖D.DFD圖

4.存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個選項和其他3

個選項不是等價的?

A.x=*pa;B.x=*(a+1);C.x=*(pa+1);D.x=a[l];

5.以下程序執(zhí)行后的輸出結(jié)果是()。#include<iostream>using

namespacestd;voidtry(int,int,int,int);intmain(){intx,y,z,r;x=l;y=2;

try(x,y,z,r);cout<<r<<endl;return0;}voidtry(intx,inty,intz,intr){z

=x+y;X=x*x;y=y*y;r=z+x+y;}

A.18B.9C.10D.不確定

6.類MyClass的定義如下,若要對value賦值,則下面語句正確的是

()O

classMyClass

(一

public:

MyClass(){}

MyClass(inti){value=newint(i);}

int*value;

};

A.MyClassmy;my.value=10;

B.MyClassmy;*my.value=10;

C.MyClassmy;my.*value=10;

D.MyClassmy(lO);

7.下面程序的輸出結(jié)果為()。#inelude<iostream.h>voidmain(){int

x;int&y=x;〃變量弓|用y=99;cout<<"x="<<x<<endl;}

A.x=99B.x=9C.x=0D.異常

8.將ER圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成()。

A.屬性B.關(guān)系C.鍵D.域

9.下列關(guān)于C++流的敘述中,錯誤的是

A.cout>>A表達(dá)式可以輸出字符A

B.eof()函數(shù)可以檢測是否到達(dá)文件尾

C對磁盤文件進(jìn)行流操作時,必須包含頭文件fstream

D.以ios_base::out模式打開的文件不存在時,將自動建立一個新文件

10.下列說法中錯誤的是()。

A.公有繼承時基類中的public成員在派生類中仍是public的

B.公有繼承時基類中的private成員在派生類中仍是private的

C.私有繼承時基類中的public成員在派生類中是private的

D.保護(hù)繼承時基類中的public成員在派生類中是protected的

二、單選題(13題)

11.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

12.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是

A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

13.假設(shè)下列語句都是程序運行后首次執(zhí)行的輸出語句,其中輸出結(jié)果

與另外三條語句不同的語句是0

A.cout<<setfillC*')<<123<<setw(9)<<321;

B.cout<<setfill('*')<<setw(6)<<left<<123<<setw(6)<<right<

<321;

C.cout<<123<<setfillC*')<<setw(6)<<321;

D.coutV<setfin('*')<<setw⑼<<left<<123<<321;

14.有下列程序:

#include<stdiO.h>

#defineN4

voidfun(inta[][N],intb[])

{inti;

for(i=0;i<N,i++)b[i]=a[i][i];

)

voidmain()

{intx[][N]={{l,2,3},{4},{5,6,7,8),{9,10}),

y[N],i;

fun(x,y);

fbr(i=O;i<n;i++)printf("%d,",y[i]);

printf("\n");

程序的運行結(jié)果是()oA.1,2,3,4,B.1,0,7,0,C.1,4,5,9,

D.3,4,8,10,

15.判斷char型變量c是否為小寫字母的正確表達(dá)式是

A.'a'<=c<='z'

B.(c>=A)&&(c<=z)

C.,a'>=c)||(2<=c)

D.(c>='a')&&(c<='z')

16.下列關(guān)于虛基類的描述,錯誤的是()。

A.設(shè)置虛基類的目的是為了消除二義性

B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用

C.若同一層中包含多個虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次

序調(diào)用

D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用

派生類的構(gòu)造函數(shù)

17.有如下程序:

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain(){

cout<<left<<setw(4)<<123<<"OK"<<

endl;

return0;

)

程序的輸出結(jié)果是

A.123*OKB.123*OK**C.*123OKD.*123**OK

18.下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為

#include<conio.h>#include<iostream.h>intfun(int*s,intt,int*k){int

i;*k=0;for(i=0;i

A.7,431B.6C.980D.6,980

19.從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是()o

A.概要設(shè)計與詳細(xì)設(shè)計B.數(shù)據(jù)設(shè)計與接口設(shè)計C.軟件結(jié)構(gòu)設(shè)計與數(shù)

據(jù)設(shè)計D.過程設(shè)計與數(shù)據(jù)設(shè)計

20.程序段“intx=12;doubley=3.141593;printf("%d%8.6f",X,y);”

的輸出結(jié)果是()o

A.123.141593B.123.141593C.12,3,141593D.123.1415930

21.有如下程序:

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

)

運行時的輸出結(jié)果是()oA.10B.16C.26D.36

22.有以下程序:

classDate

(

public:

Date(inty,intm,intd);

(

year=Y:

month=m;

day=d;

)

Date(inty=2OOO)

(

year=y;

month=10;

day=l;

}

Date(Date&d)

(

year=d.year;

month=d.month;

day=d.day;

)

voidprint()

(

cout?year?"."<(month?"."?day?endl;

)

private:

intyear,month,day;

};

Datefun(Dated)

(

Datetemp;

temped;

retumtemp;

)

intmain()

{

Datedatel(2000,1,1),date2(0,0,0);

Datedate3(datel);

date2=fun(date3);

retumO;

}

程序執(zhí)行時,Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。

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

23.下列描述中,不屬于面向?qū)ο笏枷胫饕卣鞯氖莖

A.封裝性B.跨平臺性C.繼承性D.多態(tài)性

三、2.填空題(12題)

24.下列程序?qū)犹栠M(jìn)行了重載,劃線部分的語句是【】。

#include<iostream,h>

#include<math,h>

classTriangle

{,

intx,y,z;

doublearea;

public:

Triangle(inti,intj,intk)

(

doubles;

x=i;y=j;z=k;

s=(x+y+z)/2.0;

area=sqrt(s*(s-x)*(s-y)*(s-z));

}

voiddisparea()

(

cout<<"Area="<<area<<endl;

)

frienddoubleoperator+(Triangletl,Trianglet2)

{\

);

voidmain()

(

Triangletl(3,4,5),t2(5,12,13);

doubles;

cout<<"tl:";tl.disparea()

cout<<"t2:";t2.disparea()

s=tl+t2;

tout<〈"總面積:="<<s<<end];

25.如果類B繼承了類A,則稱類A為類B的基類,類B稱為類A的

[lo

26.設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為

DBACFEG,則后序遍歷結(jié)果為【】。

27.以下程序的輸出結(jié)果是【】。

#include<iostream.h>

classobject

{private:

intval;

public:

object();

object(inti);

~object();};

object::object()

{val=0;

cout<<"Defaultconstructorforobject"<<endl;}

object::object(inti)

{val=i;

cout<<"Constructorforobject"<<val<<endl;}

object::~object()

{cout<<"Destructorforobject"<<val<<endl;}

classcontainer!private:

objectone;

objecttwo;

intdata;

public:

container();

container(inti,intj,intk);

?container();};

container::container()

{data=0;

cout<<"Defaultconstructorforcontainer"<<endl;}

container::container(inti,intj,intk):two(i),one(j)

{data=k;

cout<<"Constructorforcontainer"<<endl;}

container::~container()

{cout<<"Destructorforcontainer"<<endl;}

voidmain()

{containeranObj(5,6,10);}

28.作為成員函數(shù)重載的運算符,第一操作數(shù)就是參數(shù)表中隱含的

所指向的對象,因此并不顯示地出現(xiàn)在參數(shù)表中。

29.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程

稱為【】。

30.在有序列表(3,6,8,10,12,15,16,18,21,25,30)中,用二

分法查找關(guān)鍵碼值12,所需的關(guān)鍵碼比較次數(shù)為【】。

31.operator是運算符重載時必須使用的關(guān)鍵字,它和被重載的運算符連

在一起,作為運算符函數(shù)的專用函數(shù)名,務(wù)必把該函數(shù)說明為的。

32.以下程序的執(zhí)行結(jié)果為【】。

#include<iostream>

usingnamespacestd;

voidoverload(intnum)

(

cout<<num<<endl;

)

voidoverload(charch)

{

charc=ch+1;

cout<<c<<endl;

)

intmain()

(

overload('X');

return0;

)

33.設(shè)inta=10,b=ll,c=12;,表達(dá)式(a/b)<c&&b==c的值是[]o

34.非成員函數(shù)應(yīng)該聲明為類____函數(shù)才能訪問該類的私有成員。

35.在深度為5的完全二叉樹中,度為2的結(jié)點數(shù)最多為【】。

四、程序改錯題(10題)

36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為

Constructor,i=0,

Destructor

注意:錯誤的語句在//******error******的下面,修改該語句即可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

};

1I******error******

TC:TC

(

cout?"Constructor"?",

i=0;

)

II******error******

TC:display

(

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

}

II******error******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

{

TCa;

a.display;

}

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果

為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=l

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******errc)r******的下面。

⑴不能刪除assert()語句。

(2)只能修改后面的數(shù)字。

提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

(

char*sl="abc":

//、卜、1*、!>

//不不不不不不不個prrcr個不個不不不不不

assert(sizeof(s1)==3):

cout?"sizeof(s1)=5"?endl;

chars2[10]="ab":

II********error********

assert(sizeof(s2)==2);

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

chars3=23:

/*1**1**1**4*

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

assert(sizeof(s3)==4);

cout?"sizeof(s3)=1"?endl;

return;

38.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為

100

37

32

注意:錯誤的語句在//******error******的下面,修改該語句即

可。

試題程序:

#include<iostream.h>

!!******enor******

voidmain

II******error******

intm=0142:

II******error******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為

Constructor,i=0,

Destructor

注意:錯誤的語句在//******errc)r******的下面,修改該語句即

可。

試題程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

TC;

);

II******error******

TC:TC

cout?"Constructor"?","

i=0;

)

II******error******

TC:display

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

)

!I******enor******

TC:TC

COUI?"Destructor"?endl:

voidmain

(

TCa;

a.display;

)

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

求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸

入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕

中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

!1********error********

cin.getline(str,120);

while(str)

!1********enor********

if(str[i])=a)

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

1++;

cout?str?endl;

return;

)

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

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實

現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在

II******error******白勺_?力。j

試題程序:

#include<iostream>

#include<fstream>

IJ********error*********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

outl.open("l.txt",binarylapp);

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

/*1**1**1**1**1**4**.!?*1**1**1**1,*2**1*、1,

//小不不個不不不個m?cr個不不不個不不小

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;

)

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:

number=1

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

{

retumnumber;

)

voidPrintconst

(

cout?"number="?number?endl;

)

private:

intnumber;

};

voidmain

{

I!********error********

TCobjl;

objl.Print;

TCobj2(3);

II********error********

objl.number=10;

I!********enor*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程

序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正

確。

程序輸出:

8

8

注意:錯誤的語句在/********error********/的下面。修改該語句

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

試題程序:

#include(iostream.h>

classCO

public:

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

staticintn=O:

CO

n++:

?CO

n—:

):

I********error********

intCO::n;

voidmain

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

/********error********

eout?C.n?endl;

cout?C0::n?endl;

44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

0

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h)

intmain

throw("error");

!I********error********

catch(chars)

cout?s?endl;

throw((int)0);

II********error********

catch

cout?i?endl;

)

try

(

throw(O);

throw("error");

}

I!********enor********

catch

(

cout?"ERROR"?endl;

)

retumO;

)

45.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

0

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h)

intmain

{

try

throw("error");

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

)

II********error********

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

catch

(

cout?"ERROR"?endl;

)

retumO;

五、綜合應(yīng)用題(2題)

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

義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出

一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及

總個數(shù),同時允許退貨,請按照以下的操作,把類補充完整。

⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型

變量A11N0,請在注釋1后添加適當(dāng)?shù)恼Z句。

(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加

到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。

(3)在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AHNo自減,請

在注釋3后添加適當(dāng)?shù)恼Z句。

⑷完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。

注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其

他的程序代碼。

試題程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

AllWeight+=w:

AllNo++:

)

?TCFruit

(

AllWeight-Weight:

)

voiddisplay

(

cout?"SellaFruitwith"?Weight?"k9"<<

endl;

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

cout?"Allsellweight:"<<AllWeight?"k9"?

endl?endl;

)

};

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

floatTCFruit::AllWeight=O.0;

intmain

{

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

retumO;

)

47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。請完成

以下部分,實現(xiàn)在屏幕上輸出為

C3

C2

這個程序需要修改的部分,請按照以下部分實現(xiàn)。

(1)類CO不能被實例化,請定義一個純虛函數(shù)print,在注釋1后添加

適當(dāng)?shù)恼Z句。

(2)類C1私有虛繼承類CO,請在注釋2后添加適當(dāng)?shù)恼Z句。

(3)類C2公有繼承于CO,請在注釋3后添加適當(dāng)?shù)恼Z句。

(4)類c3公有繼承于C2與C1,請在注釋4后添加適當(dāng)?shù)恼Z句。

注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修

改其他的程序代碼。

試題程序:

#include(iostream.h)

classCO

(

};

///*!>*1***1*'*I,**1***1**1**"**1***1**1***.!***1***1**

classCl:

public:

voidprint

(

cout<",,Cl"<<endl;

)

};

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

classC2:

public:

voidprint

(

cout<<"C2"<<endl;

)

};

/I********4***x****

classC3:

(

public:

voidprint

(

cout<<"C3"<<endl;

)

};

voidmain

(

C3Obj3;

C20bj2;

obj3.print;

obj2.print;

return;

)

六、3.綜合應(yīng)用題(2題)

48.使用VC6打開考生文件夾下的工程test29_3o此工程包含一個

test29_3.cpp,其中定義了二維坐標(biāo)類Coordinate和三維坐標(biāo)類

ThreeDCoord,其中ThreeDCoord類由Coordinate類public派生,但兩

個類的定義并不完整。請按要求完成下列操作,將程序補充完整。

⑴定義類Coordinate的保護(hù)數(shù)據(jù)成員x和y,它們都是int型的數(shù)據(jù),

代表二維坐標(biāo)的橫縱坐標(biāo)值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。

(2)根據(jù)類Coordinate定義后的成員函數(shù)Display的實現(xiàn),補充該函數(shù)在

類Coordinate定義體內(nèi)的聲明,Display為二維坐標(biāo)類的虛函數(shù)。請在注

釋“〃**2**。”之后添加適當(dāng)?shù)恼Z句。

⑶完成二維坐標(biāo)類Coordinate的構(gòu)造函數(shù),將參數(shù)a和b分別賦值給數(shù)

據(jù)成員x和V。請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。

(4)根據(jù)ThreeDCoord類構(gòu)造函數(shù)的聲明,補充ThreeDCoord構(gòu)造函數(shù)

的實現(xiàn),參數(shù)a和b通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類的數(shù)據(jù)成員

x和y,c賦值給數(shù)據(jù)成員2。請在注釋“〃**4**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下;

[1,2]

[3,4,5]

注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。

源程序文件tese9_3.cpp清單如下:

#include<iostream.h>

classCoordinate

{protected:

〃**]**

public:

Coordinate(inta=0,intb=0);

〃**2**

);

Coordinate::Coordinate(inta,intb)

(

〃**3**

)

voidCoordinate::Display()const

(

cout<<'['<<X<<","<<y<<']'<<endl;

)

classThreeDCoord:publicCoordinate

(

intz;

public:

ThreeDCoord(inta=0,intb=0,intc=0);

virtualvoidDisplayOconst;

);

〃**4**

voidThreeDCoord::Display()const

(

cout<<'[,<<x<<","<<y<<","<<z<<']'<<

endl;

}

voidmain()

(

Coordinatec(l,2);

ThreeDCoordt(3,4,5);

c.Display();

1.Display();

)

49.使用VC6打開考生文件夾下的工程MyProjl4。此工程包含一個源程

序文件MyMainM.cpp,程序中定義了3個類A、B和C,但類的定義并

不完整。

請按要求完成下列操作,將類的定義補充完成:

①類A的成員函數(shù)setx(inti,intj)是虛函數(shù),其實現(xiàn)的功能是將類A的

保護(hù)成員x和y分別設(shè)置成i和j并且y具有默認(rèn)值0。請在注釋“//*

*1**"之后添加適當(dāng)?shù)恼Z句。

②將類A的成員函數(shù)print。聲明成員純虛函數(shù)。請在注釋“〃**2**”之

后添加適當(dāng)?shù)恼Z句。

③完成類A的保護(hù)數(shù)據(jù)成員x和y的定義,它們都是整型變量。請在注

釋,,〃**3**”之后添加適當(dāng)?shù)恼Z句。

注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。

源程序文件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;

)

參考答案

l.C

2.C解析:本題考核庫函數(shù)strcpy()的正確調(diào)用。函數(shù)strcpy()的函數(shù)原

型為:

char*strcpy(char*strDest,constchar*strSrC);

其功能是復(fù)制strSrc所有字符到strDest,并返回strDesto

根據(jù)函數(shù)strcpy。的原型可知,選項A、B和D的調(diào)用都是正確的。在

選項C中,由于指針*str3沒有初始化其字符長度,容易引起訪問越界,

故是不正確的。

3.D解析:PDL一種設(shè)計性語言,用于書寫軟件設(shè)計規(guī)約。它是軟件設(shè)

計中廣泛使用的語言之一。N-S圖是無線的流程圖,是算法描述工具;

PAD圖是問題分析圖,它用二維樹狀結(jié)構(gòu)的圖表示程序的控制流,將這

種圖轉(zhuǎn)換為程序代碼比較容易。此3類均是過程設(shè)計工具,數(shù)據(jù)流圖

(DataFunctionDiagram):又名數(shù)據(jù)功能圖表,簡稱DFD,是采用圖形方

式來表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,

是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖

示方法。

4.A解析:本題考查的是數(shù)組和指向數(shù)組的指針之間的關(guān)系,選項A)中

x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦

值。

5.D解析:本題考核函數(shù)調(diào)用(參數(shù)的傳遞)。本題常見的錯誤解答是:把

x=l,y=2代入到函數(shù)try中,逐步計算出r=8。最后得到r的輸出值是

8o以下是正確解答,根據(jù)程序逐步分析:程序中定義了一個名為try的

void型函數(shù),即函數(shù)try沒有任何返回值。而try函數(shù)在main函數(shù)中是

以一條獨立語句的方式被調(diào)用的,且main函數(shù)最后輸出變量r的值。

但在main函數(shù)中,并沒有對變量r賦值。在C++語言中,數(shù)據(jù)只能從實

參單向傳遞給形參,稱為按值傳遞。也就是說,當(dāng)簡單變量作為實參時,

用戶不能在函數(shù)中改變對應(yīng)實參的值。所以雖然在函數(shù)try中,r的值為

8,但它并不能傳遞給實參,當(dāng)然最終的輸出肯定是不確定的隨機數(shù)了。

6.DD。【解析】因題目中定義的指針value是指淘變量i的,所以直接利

用語句MyClass(inti){value=newint(i);}對value進(jìn)行賦值即可。

7.A

8.B解析:在關(guān)系模型中,無論是從客觀事物中抽象出的實體,還是實

體之間的聯(lián)系,都用單一的結(jié)構(gòu)類型關(guān)系來表示。在對關(guān)系進(jìn)行各種處

理之后,得到的還是關(guān)系,一張新的二維表。

9.A解析:COHt流對象后面跟的應(yīng)該是插入運算符“〈<”而不是提取

運算符“>〉,,,故選項A錯。

10.B解析:公用繼承時基類中的公用成員和保護(hù)成員在派生類中保持原

有訪問屬性,其私有成員仍為基類私有。私有繼承時,基類的公有成員

和保護(hù)成員在派生類中成了私有成員,其私有成員仍為基類私有。受保

護(hù)的繼承時,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其

私有成員認(rèn)為基類私有。

H.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型

指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量

指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。

在選項A中,很顯然,不全是地址,只有point表示地址,而*&a等價

于*(&a),表示取一個數(shù)值。

在選項B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地

址。

在選項C中,與選項B類似,其中的*point表示數(shù)值。

在選項D中,都表示地址,是題目的選擇答案。

12.C

根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)

據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶

鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。

13.C

本題主要考查了輸出格式控制。操縱符setw為緊隨其后的輸出項指定

輸出寬度,在一個域輸出完后,域?qū)挾然謴?fù)成它的默認(rèn)值0,輸出項默

認(rèn)對齊方式為右對齊,操縱符setfill的作用是設(shè)置填充字符。因此選

項A、B、D的輸出結(jié)果都為123******321,選項C的輸出結(jié)果為

123***321。

14.B

Bo【解析】本題考查數(shù)組的初始化,在對二維數(shù)組元素賦初值時,如

果只對部分元素賦初值,那未賦初值的元素自動取0。fun函數(shù)是將二

維數(shù)組a中主對角線上的元素賦給數(shù)組b,所以y[4]=(l,0,7,0)o

15.D

解析:字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母

和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A?Z是從65?

90,小寫字母a?z是從97—122。所以只要變量c大于等于a并且等

于小于2就能保證其為小寫字母。

16.B

Bo【解析】虛基類的引入就是為了消除二義性,其構(gòu)造函數(shù)的調(diào)用仍

然是按照繼承的順序進(jìn)行的,對于多個虛基類則按它們說明的次序調(diào)

用,虛基類的構(gòu)造函數(shù)先于非虛基類的構(gòu)造函數(shù)執(zhí)行。

17.A

解析:本題考查了輸出流的格式控制。cout的fin()方法的作用是設(shè)置

填充字符,若輸出數(shù)據(jù)寬度小于設(shè)置寬度,則空閑位置用填充字符填

滿。left和endl是C++預(yù)定義的用于格式控制的符號常量,前者使輸

出數(shù)據(jù)在指定寬度內(nèi)左對齊,后者使輸出換行。setw()函數(shù)的作用是設(shè)

置輸入輸出寬度,不過寬度設(shè)置的效果只對一次輸入或輸出有效,在

完成了一個數(shù)據(jù)的輸入或輸出后,寬度設(shè)置自動恢復(fù)為0(表示按數(shù)據(jù)

實際寬度輸入輸出)。所以在本題中,輸出整數(shù)123時寬度為4且左對

齊,空出最后一位填入填充字符結(jié)果是123*:輸出字符串"0不時

寬度自動恢復(fù)為0,結(jié)果是OK。故程序的輸出結(jié)果是123*OK,應(yīng)該

選擇Ao

18.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針

運算,此外,一開始應(yīng)認(rèn)為*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

19.A

解析:從工程管理的角度看,軟件設(shè)計可分為概要設(shè)計和詳細(xì)設(shè)計兩

大步驟。概要設(shè)計是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架;詳細(xì)設(shè)計

是將其進(jìn)一步精化成軟件的算法或表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概

要設(shè)計和詳細(xì)設(shè)計又由若干活動組成,包括總體結(jié)構(gòu)設(shè)計/數(shù)據(jù)設(shè)計和

過程設(shè)計。因此,本題的正確答案是A。

20.A

Ao【解析】根據(jù)輸出函數(shù)printf中對輸出數(shù)值格式的要求,第一個數(shù)

和第二數(shù)之間沒有空格或分隔號,因而此題答案為選項A。

21.A

Ao【解析】該題考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳

遞,引用傳遞時x和y會交換,而值傳遞時二者不交換,因此選10。

22.B\nBo【解析】本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)

一共被調(diào)用了3次:第1次是在執(zhí)行語句Datedate3(datel)時,用已經(jīng)建

立的對象datel對正在建立的對象date3進(jìn)行初始化;第2次是在調(diào)用

fun函數(shù)時,由于是傳值調(diào)用,因此實參對象date3要對形參對象d進(jìn)行

初始化;第3次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系統(tǒng)

初始化一個匿名對象時使用了拷貝構(gòu)造函數(shù)。

\n

23.B

解析:面向?qū)ο笏枷氲?個主要特征是:封裝性、繼承性和多態(tài)性。

其中封裝性是指將數(shù)據(jù)和算法捆綁成一個整體,這個整體就是對象,

描述對象的數(shù)據(jù)被封裝在其內(nèi)部;繼承性是指一種事物保留了另一種

事物的全部特征,并且具有自身的獨有特征:多態(tài)性是指當(dāng)多種事務(wù)

繼承自一種事物時,同一種操作在它們之間表現(xiàn)出不同的行為。

24.return11.area+t2.area;return11.area+t2.area;解析:符號重載時往往采

用的方法是對對象中的每個成員分別處理,封裝之后體現(xiàn)出對象參與運

算的現(xiàn)象。

25.派生類派生類解析:如果類A為類B的基類,那么類B稱為類A

的派生類。

26.ACBEGFDACBEGFD解析:由于在前序遍歷中首先訪問根結(jié)點,因

此,前序序列中的第一個結(jié)點為二叉樹的根結(jié)點,即D為二叉樹的根結(jié)

點。又由于在中序遍歷中訪問根結(jié)點的次序為居中,而訪問左于樹上的

結(jié)點為居先,訪問右子樹上的結(jié)點為最后,因此,在中序序列中,以根

結(jié)點(D)為分界線,前面的子序列(ABC)一定在左子樹中,后面的子序列

(EFG)一定在右于樹中。同樣的道理,對于已經(jīng)劃分出的每一個子序列

的所有結(jié)點中,位于前序序列最前面的一個結(jié)點為子樹的根結(jié)點,而在

中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于

該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列。這個處理過程直到所

有子序列為空為止。

根據(jù)上述道理,該二叉樹恢復(fù)的過程如下圖所示;

根據(jù)后序遍歷的方法,對該二叉樹后序遍歷的結(jié)果為ACBEGFDO

27.Constructorforobject6Constructorforobiect5Constructorforcontainer

DestructorforcontainerDestructorforobjectsDestructorfor

obiect6Constructorforobject6\r\nConstructorforobiect5\r\nConstructorfor

container\r\nDestructorforcontainer\r\nDestructorforobject5\r\nDestructor

forobiect6解析:C++語言中的構(gòu)造函數(shù)和析構(gòu)函數(shù)分別是在聲明對象

時和對象調(diào)用完畢后調(diào)用,本題中的調(diào)用就是這樣成對出現(xiàn)的。

28.this指針this指針

29.軟件生命周期軟件生命周期解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、

使用維護(hù)到停止使用退役的過程稱為軟件生命周期。

30.4

31.public

32.YY解析:本題考核函數(shù)重載。在本題中,函數(shù)overload。有兩次實

現(xiàn)。第一次實現(xiàn)中,其形參為int型;第2飲實現(xiàn)中,其形參為char型,

所以構(gòu)成了函數(shù)重載。主函數(shù)中調(diào)用overload。函數(shù)時傳遞的實參為字

符'X]所以執(zhí)行函數(shù)的第2次實現(xiàn)。輸出丫。

33.0

34.友元友元解析:友元函數(shù)是對應(yīng)于當(dāng)前類的外部函數(shù),但它可以訪

問該類的所有成員。友元函數(shù)不是當(dāng)前類的成員函數(shù),可以是另外一個

類的成員函數(shù)。在類中聲明友元函數(shù)時,需要在函數(shù)名前加關(guān)鍵字friend。

35.15

36.⑴應(yīng)改為“TC::TC”。

0⑵應(yīng)改為“voidTC::display”。

\n(3)應(yīng)改為“TC::?TC”。

\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名

和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使

用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::

TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC=display”后的語句看,這

是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display

函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display"。由第

3處的語句"(:::丁^可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函

數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加”字符,用

采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::?TC”。

37.⑴應(yīng)改為"assert(sizeof(sl尸=4);

\n⑵應(yīng)改為"assert(sizeof(s2)=lO);”。

\n⑶應(yīng)改為"assert(sizeof(s3)=l);

\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正

常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。

“assert(sizeof(sl)=3);"語句中"sizeof(sl)==3”為假,這會使程序產(chǎn)生異

常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的

長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sD==4)二。

str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeof(s2)=10)

charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為

C4assert(sizeof(s3)=1);

38.(l)“voidmain”。

(2)“intm=0144;

(3)“intn=OX25;”或“intn===0x25;

【解析】本題主要考查了主函數(shù)定義及嘉同進(jìn)制之間的轉(zhuǎn)換,包括十

進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為

“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。

cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)

現(xiàn)變量的初值不正確,十進(jìn)制的100對應(yīng)八進(jìn)制的144,卡進(jìn)制的37

對應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分另IJ改成“intm=0144;”,

“intn=0x25;”或"intn=0x25;

39.(1)應(yīng)改為“TC::TC”。

(2)應(yīng)改為"voidTC::display”。

(3)應(yīng)改為“TC::?TC”。

【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名

和作用域運算符作用域運算符用采表示某個成員屬于哪個

類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改

為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后

的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯

誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為

“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是

在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名

相同,并在前面加“?”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處

的語句應(yīng)改為“TC::?TC”。

40.⑴應(yīng)改為“ein.getline(str,120,?);

\n⑵應(yīng)改為"while(str[i])"°

,,

\n(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)o

\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個

數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);"。第

2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)

束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,

則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”°第3處的“if(str[i]>=a)”語句是

判斷字符str用是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

,,

但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)o

41.(I)應(yīng)改為"usingnamespacestd;"。

(2)應(yīng)改為"outl.open("1.txt",ios::binaryIios::app);"。

(3)應(yīng)改為“outl.put(s[i]);

【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,

對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處

的語句修改為“usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open

中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt",

binaryIapp);”語句缺少類ios,即第2處的語句修改為

“outl.open("l.txt",ios::binaryIios::app);第3個標(biāo)識應(yīng)

該用流成員函數(shù)put輸出字符,所以第3處的語句修改為

“outl.put(s[i]);

42.⑴應(yīng)改為“TCobjl(l);

(2)應(yīng)改為“Objl.SetNumber(lO);

(3)應(yīng)改為“0bj2.SelNumber(lOO);

【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)

TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個

輸出結(jié)果兩1,所以補全參數(shù)1,即第1處的“TCobjl(l);第2處處

的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論