2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第1頁(yè)
2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第2頁(yè)
2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第3頁(yè)
2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第4頁(yè)
2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

2023年浙江省湖州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、1.選擇題(10題)1.假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)

A.void~MyClass();

B.~MyClass(intn);

C.MyClass();

D.~MyClass();

2.以下程序的輸出的結(jié)果是()。#include<iostream.h>intx=3;voidmain(){voidincre();inti;for(i=1;i<x;i++)incre();}Voidincre(){staticintx=1;x*=x+1;cout<<x<<"";}

A.33B.22C.26D.25

3.以下不屬于運(yùn)算符重載應(yīng)注意的問題是()。

A.重載的運(yùn)算號(hào)應(yīng)保持其原有的基本

B.重載的運(yùn)算符應(yīng)盡可能保持其原有的特性

C.運(yùn)算符的重載盡量不配套

D.使用引用參數(shù)還是非引用函數(shù)

4.數(shù)據(jù)庫(kù)概念設(shè)計(jì)中由分散到集中的設(shè)計(jì)方法是

A.視圖設(shè)計(jì)B.視圖集成設(shè)計(jì)C.集中式模式設(shè)計(jì)D.分散式模式設(shè)計(jì)

5.帶有虛基類的多層次派生類構(gòu)造函數(shù)的成員初始化列表中都要列出虛基類的構(gòu)造函數(shù),這樣對(duì)虛基類的子對(duì)象初始化()。

A.與虛基類下面的派生類個(gè)數(shù)有關(guān)B.多次C.二次D.一次

6.下列情況中,不會(huì)調(diào)用拷貝構(gòu)造函數(shù)的是()。

A.用一個(gè)對(duì)象去初始化同一類的另一個(gè)新對(duì)象時(shí)

B.將類的一個(gè)對(duì)象賦值給該類的另一個(gè)對(duì)象時(shí)

C.函數(shù)的形參是類的對(duì)象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí)

D.函數(shù)的返回值是類的對(duì)象,函數(shù)執(zhí)行返回調(diào)用時(shí)

7.下列關(guān)于棧的描述中錯(cuò)誤的是()

A.棧是先進(jìn)后出的線性表B.棧只能順序存儲(chǔ)C.棧具有記憶作用D.對(duì)棧的插入與刪除操作中,不需要改變棧底指針

8.模板函數(shù)的真正代碼是在()時(shí)候產(chǎn)生。

A.源程序中聲明函數(shù)時(shí)B.源程序中定義函數(shù)時(shí)C.源程序中調(diào)用函數(shù)時(shí)D.運(yùn)行執(zhí)行函數(shù)時(shí)

9.通常初始化拷貝構(gòu)造函數(shù)的參數(shù)是

A.某個(gè)對(duì)象名B.某個(gè)對(duì)象的成員名C.某個(gè)對(duì)象的引用名D.某個(gè)對(duì)象的指針名

10.設(shè)有如下說明typedefstruct{intn;charc;doublex;}STD;則有以下選項(xiàng),能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語(yǔ)句是

A.STDtt[2]={{1,'A',62},{2,'B',75}};

B.STDtt[2]=“1,"A",62,2,"B",75};

C.structt[2]={{1,'A'},{2,'B'}};

D.structtt[2]=<<1,"A",62.5},{2,"B",75.0}};

二、單選題(13題)11.軟件需求分析階段的工作,可以分為四個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及______。A.階段性報(bào)告B.需求評(píng)審C.總結(jié)D.都不正確

12.設(shè)有下列二叉樹:對(duì)此二叉樹前序遍歷的結(jié)果為()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

13.有以下程序:classDate{public:Date(inty,intm,intd);{year=Y:month=m;day=d;}Date(inty=2000){year=y;month=10;day=1;}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;temp=d;returntemp;}intmain(){Datedatel(2000,1,1),date2(0,0,0);Datedate3(datel);date2=fun(date3);return0;}程序執(zhí)行時(shí),Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。A.2B.3C.4D.5

14.下列運(yùn)算符不能重載為友元函數(shù)的是A.=()[]->B.+-++--C.><>=<=D..+=-=*=/=

15.下面關(guān)于虛函數(shù)的表述中正確的是()。

A.虛函數(shù)不能聲明為另一個(gè)類的友元函數(shù)

B.派生類必須重新定義基類的虛函數(shù)

C.如果在重定義虛函數(shù)時(shí)使用了保留字virtual,那么該重定義函數(shù)仍是虛函數(shù)

D.虛函數(shù)不能夠聲明為靜態(tài)函數(shù)

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

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

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

C.('a'>=c)||('z'<=c)

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

17.下列關(guān)于純虛函數(shù)與抽象類的描述巾,錯(cuò)誤的是()。

A.純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)

B.抽象類是指具有純虛函數(shù)的類

C.一個(gè)基類聲明了純虛函數(shù),該基類的派生類一定不是抽象類

D.抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出

18.下面程序輸出的結(jié)果為()。#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.若MyTemp是一個(gè)具有虛擬類型參數(shù)的類模板,且有如下語(yǔ)句序列:

MyTemp<double>p2;

MyTemp<long>p3[2];

編譯系統(tǒng)在處理上面的話句序列時(shí),所生成的模板MyTemp的實(shí)例的個(gè)數(shù)是()。

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

20.下列程序的輸出結(jié)果為()。#include<iostream.h>classTestClass{public:TestClass(){val++;}static,intval;};intTestClass::val=0;voidmain(){TestClasscsl;cout<<csl.val<<"";TestClasscs2;TestClasscs3,cs4;cout<<cs2.val<<endl;}A.O3B.13C.14D.24

21.下列關(guān)于運(yùn)算符重載的描述中,正確的是()。

A.運(yùn)算符重載為成員函數(shù)時(shí),若參數(shù)表中無參數(shù),重載的是一元運(yùn)算符

B.一元運(yùn)算符只能作為成員函數(shù)重載

C.二元運(yùn)算符重載為非成員函數(shù)時(shí),參數(shù)表中有一個(gè)參數(shù)

D.C++中可以重載所有的運(yùn)算符

22.若有以下定義:inta[]={1,2,3,4,5,6,7};charc1=b,c2=2;則數(shù)值不為2的表達(dá)式是()。

A.a[1]B.dc1C.a[3-c2]D.c2-0

23.定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,F(xiàn)riday=2};則下列選項(xiàng)正確的是()。

A.表達(dá)式Wednesday==Friday的值是true

B.Dayday;day=3;

C.Dayday;day=Monday+3;

D.Daydayday=Tuesday+10;

三、2.填空題(12題)24.以下程序的執(zhí)行結(jié)果為【】。

#include<iostream>

usingnamespacestd;

classbase

{

public:

virtualvoidwho()

{

cout<<"baseclass"<<endl;

}

};

classderivel:publicbase

{

public:

voidwho()

{

cout<<"derivelclass"<<endl;

}

};

classderive2:publicbase

{

public:

voidwho()

{

cout<<"derive2class"<<endl;

}

};

voidmain()

{

baseobjl,*p;

derivelobj2;

derive2obj3;

P=&objl;

p->who();

p=&obj2;

p->who();

p=&obj3;

p->who();

}

25.樹中度為零的結(jié)點(diǎn)稱為______。

26.一個(gè)向量(即一批地址連續(xù)的存儲(chǔ)單元)第一個(gè)元素的存儲(chǔ)地址是100,每個(gè)元素的長(zhǎng)度為2,則第5個(gè)元素的地址是【】。

27.在一個(gè)容量為25的循環(huán)隊(duì)列中,若頭指針front=15,尾指針rear=6,則該循環(huán)隊(duì)列中共有【】個(gè)元素。

28.如下程序的輸出結(jié)果是______。

#include<iostream>

usingnamespacestd;

intfunl(intx){return++x;}

intfun2(int&x){return++x;}

intmain(){

intx:1,y=2;

Y=funl(fun2(x));

cout<<x<<','<<y;

return0;

}

29.假定p所指對(duì)象的值為25,p+1所指對(duì)象的值為46,則執(zhí)行“*p++;”語(yǔ)句后,p所指的對(duì)象的值為【】。

30.軟件生命周期包括八個(gè)階段。為使各時(shí)期的任務(wù)更明確,又可以分為以下三個(gè)時(shí)期:軟件定義期,軟件開發(fā)期,軟件維護(hù)期。編碼和測(cè)試屬于【】期。

31.若有定義語(yǔ)句:inta=3,b=2,c=1;,則表達(dá)式a<b?a:b的值是【】。

32.在下面函數(shù)的橫線處填上適當(dāng)?shù)膬?nèi)容,使該函數(shù)能夠利用遞歸方法求解字符串str的長(zhǎng)度(不得使用系統(tǒng)提供的字符串處理函數(shù))。

intGetLen(char*str)

{

if(______)return0;

elsereturn1+GetLen(str+1);

}

33.有一種特殊的虛函數(shù),重定義時(shí)不要求同名,這種虛函數(shù)是【】。

34.下面程序的輸出結(jié)果為【】。

#inclUde<iostream.h>

voidmain()

{

inta;

int&b=a;//變量引用

b=10;

cout<<"a="<<a<<endl;

}

35.含有純虛函數(shù)的類稱為______。

四、程序改錯(cuò)題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。

注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在

//******error******的下面。

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

{

ofstreamout1;

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

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

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

{

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

out1.puts(s[i]);

}

out1.close;

}

voidClearFile

{

ofstreamout1;

out1.open("1.txt");

out1.close;

}

intmain

{

chars[1024];

ClearFile;

cout<<"pleaseinputastrin9:"<<endl;

cin.getline(s,1024);

WriteFile(s);

return0;

}

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。

注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

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

cin.getline(str,120);

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

while(str)

{

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

if(str[i])=a)

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

i++;

}

cout<<str<<endl;

return;

}

38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面。修改該語(yǔ)句即可,其他的語(yǔ)句不能修改。試題程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:

9,8,7,6,5

注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面,修改該語(yǔ)句即可。其他的語(yǔ)句不能修改。

試題程序:

#include(iostream.h>

classTC

{

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

TC(inti)

{

m_i=i;

}

voidprint

{

cout<<--m_i<<,;

}

public:

intm_i;

};

intmain

{

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

inti;

TC04(10);

while(i>5)

{

/********errOr********/

i++:

04.print;

}

cout<<endl;

return0;

}

40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為1003732注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}

41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。試題程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}

43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:number=1number=10number=100注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print;obj2.Print;}

44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。試題程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}

45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為

Constructor,i=0,

Destructor

注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。

試題程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

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

TC:TC

{

cout<<"Constructor"<<",";

i=0;

)

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

TC:display

{

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

}

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

TC:TC

{

COUI<<"Destructor"<<endl:

}

voidmain

{

TCa;

a.display;

}

五、綜合應(yīng)用題(2題)46.(1)應(yīng)添加“virtualvoidGetNamt!=0;”。

(2)應(yīng)添加“constchar*GetName2”。

(3)應(yīng)添加“TC2(char*str)”。

(4)應(yīng)添加“m_str[i]=0;”。

【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛函數(shù)”。在C++中,在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的函數(shù),即“virtualvoidGetName=0;”。第2處要求“函數(shù)GetName2實(shí)現(xiàn)獲得名字的緩存,但只獲得讀允許操作這個(gè)緩存”。只能引用數(shù)據(jù)成員,而不能修改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名”,即“constchar*GetName2”。第3處要求“實(shí)現(xiàn)TC2的構(gòu)造函數(shù)”。TC2的構(gòu)造函數(shù)與類TC2的名稱應(yīng)該相同,而且第3處的大括弧中是對(duì)字符數(shù)組str的操作,所以類TC2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補(bǔ)全為“TC2(char*str)”。第4處要求“完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理”,補(bǔ)全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對(duì)應(yīng)于類TC中的成員變量m_str,所以這里補(bǔ)全變量賦值操作“m_str[i]=0;”。

47.(1)應(yīng)添加“BA(intm){a=m;}”。

(2)應(yīng)添加“PAl(intm,intn):BA(n){b=m;}”。

(3)應(yīng)添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。

(4)應(yīng)添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

【解析】根據(jù)第1處要求,構(gòu)造函數(shù)的函數(shù)名和類名一致,顯然BA構(gòu)造函數(shù)的名稱為BA,在BA中通過參數(shù)m完成對(duì)成員變量a的賦值,因此構(gòu)造函數(shù)的名稱為BA(intm),在函數(shù)內(nèi)部對(duì)成員a賦值,故第1處的語(yǔ)句應(yīng)添加“BA(intm){a=m;)”。根據(jù)第2處的要求,構(gòu)造函數(shù)的形式為“PAl(intm,intn)”,m賦值給PA1類成員b,將n作為基類BA構(gòu)造函數(shù)的參數(shù)值傳入,故第2處應(yīng)添加“PA1(intm,intn):BA(n){b=m;}”。根據(jù)第3處的要求,函數(shù)形式為PA2(intm,intn,intk),在構(gòu)造函數(shù)中將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類PA1構(gòu)造函數(shù)的參數(shù)m和n,因此第3處應(yīng)添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根據(jù)第4處的要求,PA2類公有派生于PA1,而PA1公有派生于BA,因此在PA2類中可以調(diào)用基類的geta和getb來獲得基類私有成員a和b,再輸出PA2的私有成員C即滿足要求,因此第4處應(yīng)添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test7_3,此工程包含一個(gè)源程序文件test7_3.cpp,其中含有一個(gè)類Circle的定義,但該類的定義并不完整。請(qǐng)按要求完成下列操作,將類Circle的定義補(bǔ)充完整。

(1)為類Circle增加一個(gè)構(gòu)造函數(shù),該函數(shù)有一個(gè)參數(shù),并在構(gòu)造時(shí)將該參數(shù)值賦給成員radius。將該函數(shù)實(shí)現(xiàn)為一個(gè)非內(nèi)聯(lián)函數(shù),并且使用參數(shù)列表的方式將類成員賦值。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(2)為類Circle增加一個(gè)成員函數(shù)print(),使得可以輸出有關(guān)圓的信息,比如下列程序

Circlec;

c.SetRadius(5);

c.Print();

將輸出:Thecirclehasradiusof5!

請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(3)完成友元函數(shù)voidCompareR(Circle*cl,Circle*c2)的定義,在屏幕中輸出c1與c2比較radius大小結(jié)果,要求使用if-else結(jié)構(gòu)完成。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

輸出結(jié)果如下;

Thecirclehasradusof5!

Thecirclehasradiusof10!

c1<c2

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

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

#include<iostream.h>

classCircle{

public:

Circle():radius(5){}

//**1**

voidSetRadius(intr){radius=r;}

intGetRadius(){returnradius;}

//**2**

friendvoidCompareR(Circle*c1,Circle*C2);

private:

intradius;

};

voidCompareR(Circle*c1,Circle*C2)

{

//**3**

cout<<"c1>c2"<<endl;

else

if((c1->GetRadius())==(c2->GetRadius()))

cout<<"c1=c2"<<endl;

else

if((c1->GetRadius())<(c2->GetRadius()))

cout<<"c1<c2"<<endl;

}

voidmain()

{

Circlec1;

c1.SetRadius(5);

C1.Print();

Circlec2(10);

c2.Print();

CompareR(&c1,&c2);

}

49.使用VC6打開考生文件夾下的工程test40_3。此工程包含一個(gè)test40_3.cpp,其中定義了類CVector,但該類的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。

(1)完成類CVector構(gòu)造函數(shù)的定義,把傳入的int型參數(shù)a和b分別賦值給類的成員變量x和y。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(2)完成類CVector的“+”運(yùn)算符重載函數(shù)的定義,使Cvector類的兩個(gè)對(duì)象相加時(shí)可以直接使用符號(hào)“+”,并且結(jié)果仍然為類Cvector的對(duì)象,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(3)在主函數(shù)中添加適當(dāng)?shù)恼Z(yǔ)句,把類Cvector的對(duì)象a和b相加,并且把結(jié)果保存在對(duì)象c中,最后以“x,y”的形式輸出在屏幕上,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

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

#include<iostream.h>

classCVector

{

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

};

CVector::CVector(inta,intb)

{

//**1**

}

CVectorCVector::operator+(CVectorparam)

{

//**2**

temp.y=y+param.y;

return(temp);

}

intmain()

{

CVectora(3,1);

CVectorb(1,2);

CVectorc;

//**3**

return0;

}

參考答案

1.D解析:本題考核類的析構(gòu)函數(shù)。在C++中,析構(gòu)函數(shù)名為符號(hào)“~”加類名,析構(gòu)函數(shù)沒有參數(shù)和返回值。根據(jù)以上知識(shí)可知,MyClass類的正確析構(gòu)函數(shù)的說明為~MyClass()。

2.C

3.C

4.B解析:數(shù)據(jù)庫(kù)概念設(shè)計(jì)中由分散到集中的設(shè)計(jì)方法是視圖集成設(shè)計(jì)方法,它的設(shè)計(jì)過程復(fù)雜但它能較好地反映需求,適合于大型與復(fù)雜的單位,避免設(shè)計(jì)的粗糙與不周到,目前此種方法使用較多。

5.D解析:本題考核虛基類以及構(gòu)造函數(shù)。使用虛基類解決二義性問題的關(guān)鍵是在派生類中只產(chǎn)生一個(gè)虛基類對(duì)象。虛基類子對(duì)象由最派生類的構(gòu)造函數(shù)通過調(diào)用虛基類的構(gòu)造函數(shù)進(jìn)行初始化(最派生類的構(gòu)造函數(shù)的成員初始化列表中必須列出對(duì)虛基類構(gòu)造函數(shù)的調(diào)用,否則,表示使用該虛基類的缺省構(gòu)造函數(shù))。由于最派生類總是相對(duì),因此,從虛基類直接或間接派生的派生類中的構(gòu)造函數(shù)的成員初始化列表中都要列出對(duì)虛基類構(gòu)造函數(shù)的調(diào)用。但只有用于建立對(duì)象的最派生類的構(gòu)造函數(shù)才調(diào)用虛基類的構(gòu)造函數(shù),此時(shí)最派生類的所有基類中列出的對(duì)虛基類的構(gòu)造函數(shù)的調(diào)用在執(zhí)行過程中都被忽略,從而保證對(duì)虛基類子對(duì)象只初始化一次。

6.B解析:拷貝構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù),它用一個(gè)已知的對(duì)象初始化一個(gè)正在創(chuàng)建的同類對(duì)象,它的一般格式:類名::類名(const類名&引用對(duì)象名)。當(dāng)一個(gè)類的對(duì)象賦值給該類的另一個(gè)對(duì)象時(shí),是賦值而不是創(chuàng)建對(duì)象,所以不會(huì)調(diào)用拷貝構(gòu)造函數(shù)。

7.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進(jìn)后出(FILO,F(xiàn)irstInLastOut)或后進(jìn)先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進(jìn)后出表或后進(jìn)先出表。由此可以看出,棧具有記憶作用。答案B錯(cuò)在帶鏈的棧的結(jié)點(diǎn)存儲(chǔ)順序與其邏輯順序是可以不一致的。

8.C解析:本題考核模板函數(shù)的使用。在說明一個(gè)函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)對(duì)應(yīng)的函數(shù)調(diào)用時(shí),將根據(jù)實(shí)參中的類型來確認(rèn)是否匹配函數(shù)模板中對(duì)象的形參,然后生成一個(gè)重載函數(shù)。由此可知模板函數(shù)的真正代碼是在函數(shù)調(diào)用時(shí)產(chǎn)生的。

9.C解析:拷貝構(gòu)造函數(shù)顧名思義,就是對(duì)兩個(gè)對(duì)象進(jìn)行拷貝生成。因此,其參數(shù)是指向某個(gè)對(duì)象的指針。

10.A解析:本題考查結(jié)構(gòu)體的基本知識(shí)。因?yàn)橛辛藅ypedef,故可以省略struct關(guān)鍵詞而直接使用STD名稱。結(jié)構(gòu)體數(shù)組中的元素在賦值時(shí)要求用大括號(hào)包含,故答案為A。

11.B解析:需求分析階段的工作,可以概括為以下4個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評(píng)審。本題的正確答案為B。

12.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時(shí),上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。對(duì)于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為“ZBTYCPXA”和“TZBACYXP”。

13.BB?!窘馕觥勘绢}考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)一共被調(diào)用了3次:第1次是在執(zhí)行語(yǔ)句Datedate3(date1)時(shí),用已經(jīng)建立的對(duì)象date1對(duì)正在建立的對(duì)象date3進(jìn)行初始化;第2次是在調(diào)用fun函數(shù)時(shí),由于是傳值調(diào)用,因此實(shí)參對(duì)象date3要對(duì)形參對(duì)象d進(jìn)行初始化;第3次是在執(zhí)行fun函數(shù)中的返回語(yǔ)句returntemp;時(shí),系統(tǒng)初始化一個(gè)匿名對(duì)象時(shí)使用了拷貝構(gòu)造函數(shù)。

14.A解析:本題考查運(yùn)算符重載的概念。C++語(yǔ)言規(guī)定,=、[]、()、->以及所有的類型轉(zhuǎn)換運(yùn)算符只能作為成員函數(shù)重載。而要重載為友元函數(shù)就必須重載為非成員函數(shù),故應(yīng)該選擇A。

15.D

16.D字符型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是以ASCII碼存儲(chǔ)的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A~z是從65~90,小寫字母a~z是從97~122。所以只要變量c大于等于a并月小于等于z就能保證其為小寫字母。

17.CC?!窘馕觥考兲摵瘮?shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的虛函數(shù)。不定義對(duì)象而只作為一種基本類型作為繼承的類,稱為抽象類。凡是包含純虛函數(shù)的類都是抽象類。抽象類的作用是作為一個(gè)類族的共同基類。

18.CC。【解析】本題考查類的繼承、類的實(shí)例化和構(gòu)造函數(shù)、析構(gòu)函數(shù)的調(diào)用方式以及何時(shí)調(diào)用。每實(shí)例化一個(gè)類就要調(diào)用其構(gòu)造函數(shù),結(jié)束運(yùn)行該實(shí)例后調(diào)用析構(gòu)函數(shù)。

19.B\nB。【解析】類橫板是一系列相關(guān)類的模板或樣板,成員函數(shù)的源代碼形式相同,不同的是所針對(duì)的類型不一樣,如題中的一個(gè)double類型,一個(gè)long類型;類模板中數(shù)據(jù)類型本身是它的參數(shù),它是類的生成器。

\n

20.CC?!窘馕觥坑芍骱瘮?shù)main入手,定義TestClass類的對(duì)象cs1,執(zhí)行cs1.va1,其中va1為靜態(tài)變量,根據(jù)intTestClass::val=0;初始化,TestClass中的TestClass{val++;}構(gòu)造函數(shù)執(zhí)行后,val值為1。主函數(shù)中接著定義對(duì)象cs2,cs3,cs4。執(zhí)行cout<<cs2.va1<<endl;中的val值為4,所以輸出為14。

21.AA?!窘馕觥勘绢}考查的知識(shí)點(diǎn)是運(yùn)算符的重載。運(yùn)算符重載為成員函數(shù)時(shí),形參個(gè)數(shù)一般為運(yùn)算符的元數(shù)減1,因?yàn)榇顺蓡T函數(shù)所屬的對(duì)象可成為運(yùn)算符的一個(gè)運(yùn)算分量。重載為非成員函數(shù)時(shí),形參個(gè)數(shù)一般和運(yùn)算符元數(shù)相等。所以,二元運(yùn)算符重載為非成員函數(shù)時(shí),參數(shù)表中應(yīng)有兩個(gè)參數(shù),運(yùn)算符重載為成員函數(shù)時(shí),若參數(shù)表中無參數(shù),重載的是一元運(yùn)算符。一元運(yùn)算符中,一取負(fù)運(yùn)算符、++增1運(yùn)算符、--減1等運(yùn)算符均可重載為成員函數(shù),C++中,有…*、->*、::、?:五個(gè)運(yùn)算符不能重載。

22.DD?!窘馕觥孔址谶M(jìn)行數(shù)學(xué)運(yùn)算時(shí)取其ASCⅡ碼值,其中b的ASCⅡ碼值為98,‘d’的ASCⅡ碼值為100,字符2的ASCⅡ碼值為50??芍狣選項(xiàng)中表達(dá)式c2-0的值為50。

23.AA?!窘馕觥棵杜e類型定義了一些整型符號(hào)常量的集合,使用枚舉類型時(shí)應(yīng)該注意以下幾點(diǎn):枚舉類型的第一個(gè)常量默認(rèn)值是0;枚舉類型常量的值允許彼此相同;雖然枚舉類型常量是整數(shù)類型,但是不允許使用整數(shù)直接賦值給枚舉類型變量,也不允許與整數(shù)進(jìn)行運(yùn)算,只可以與整數(shù)進(jìn)行比較。

24.baseclassderivelclassderive2classbaseclass\r\nderivelclass\r\nderive2class解析:類base含有虛函數(shù)who(),該類派生出derivel類和derive2類,兩個(gè)派生類中都有虛函數(shù)who()的定義。在main()函數(shù)中定義了一個(gè)指向base類的指針,它也被允許指向其派生類。在執(zhí)行過程中,不斷改變它所指的對(duì)象,當(dāng)P->who()時(shí)就能調(diào)用不同的版本。這是因?yàn)槭褂昧颂摵瘮?shù),因而進(jìn)行動(dòng)態(tài)聯(lián)編。注意:應(yīng)掌握靜態(tài)聯(lián)編的使用方法。

25.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)

26.108108解析:第一個(gè)元素占用100和101,第二個(gè)元素占用102和103,第三個(gè)元素占用104和\u3000105,第四個(gè)元素占用106和107,第五個(gè)元素占用108和109……

27.1616解析:設(shè)循環(huán)隊(duì)列的容量為m.

如果rear>front.則循環(huán)隊(duì)列中的元素個(gè)數(shù)為rear-front;

如果rear<front,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為m+(rear-front)。

在本題中,front=15,rear=6,即rear<front,因此,循環(huán)隊(duì)列中的元素個(gè)數(shù)為

m+(rear-front)=25+(6-15)=16。

28.23

29.4646解析:*P++的結(jié)合順序?yàn)橄葓?zhí)行p++,然后取值。答案為46。

30.軟件開發(fā)軟件開發(fā)解析:通常,軟件生命周期包括八個(gè)階段,問題定義、可行性研究,需求分析、系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、運(yùn)行維護(hù)。為使各時(shí)期的任務(wù)更明確,又可以分為以下三個(gè)時(shí)期:

軟件定義期:包括問題定義、可行性研究和需求分析三個(gè)階段;

軟件開發(fā)期:包括系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì),編碼和測(cè)試四個(gè)階段;

軟件維護(hù)期;即運(yùn)行維護(hù)階段。

31.2

32.*str=NULL或!*str或*str='\0'或sir[0]='\0'或str[0]=NULL*str=NULL或!*str或*str='\\0'\r\n或sir[0]='\\0'或str[0]=NULL解析:此題考查的是遞歸函數(shù)的定義。分析題目可以看出GetLen的定義中缺少遞歸終止的條件,顯然此函數(shù)遞歸終止的條件是讀到了字符串的終止符'\\0',此時(shí)的返回值為0。

33.虛析構(gòu)函數(shù)虛析構(gòu)函數(shù)解析:分析構(gòu)函數(shù)也可以通過virtual修飾而聲明為虛函數(shù)。虛析構(gòu)函數(shù)與一般虛函數(shù)的不同之處在于:

①重定義函數(shù)就是派生類的析構(gòu)函數(shù),不要求同名。

②一個(gè)虛析構(gòu)函數(shù)的版本被調(diào)用執(zhí)行后,接著就要調(diào)用執(zhí)行其基類版本,依次類推,直到調(diào)用執(zhí)行了派生序列的最開始的那個(gè)虛析構(gòu)函數(shù)版本為止。

34.a=10

35.抽象類抽象類

36.(1)應(yīng)改為“usingnamespacestd;”。

\n(2)應(yīng)改為“outl.open('1.txt',ios::binary|ios::app);”。

\n(3)應(yīng)改為“out1.put(s[i]);”。

\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語(yǔ)句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open('1.txt',binary|app);”語(yǔ)句缺少類ios,即第2處的語(yǔ)句修改為“out1.open('1.txt',ios::binary|ios::app);”。第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語(yǔ)句修改為“out1.put(s[i]);”。

37.(1)應(yīng)改為“ein.getline(str,120,?);”。

\n(2)應(yīng)改為“while(str[i])”。

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

\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個(gè)數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語(yǔ)句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語(yǔ)句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語(yǔ)句只是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。

38.(1)“staticintn=O”應(yīng)改為“staticintn;”。(2)“intCO::n;”應(yīng)改為“intCO::n=0;”。(3)“cout<<c.n<<endl;”應(yīng)改為“cout<<c->n<<endl;”?!窘馕觥勘绢}要在屏幕上輸出兩個(gè)字符,首先要靜態(tài)變量初始化,第1處應(yīng)改為“staticintn;”,第2處要給n賦值,第3處輸出時(shí)引用c的對(duì)象,應(yīng)改為“cout<<c->n<<endl;”。

39.(1)應(yīng)添加“public:”。

\n(2)“inti”應(yīng)改為“inti(10);”。

\n(3)“i++;”應(yīng)改為“i--;”。

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類的對(duì)象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:”,否則該類無法被實(shí)例化。變量的初始化可以通過“=”號(hào),也可以和初始化對(duì)象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求輸出5個(gè)數(shù),while的循環(huán)變量i每次減1,在i>5時(shí)循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則循環(huán)永遠(yuǎn)不會(huì)退出。

40.(1)“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ù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,卡進(jìn)制的37對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

41.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語(yǔ)句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問題,display函數(shù)返回值為void,因此第2處的語(yǔ)句應(yīng)改為“voidTC::display”。由第3處的語(yǔ)句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語(yǔ)句應(yīng)改為“TC::~TC”。

42.(1)應(yīng)改為“usingnamespacestd;”。(2)應(yīng)改為“outl.open("1.txt",ios::binary|ios::app);”。(3)應(yīng)改為“out1.put(s[i]);”。【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語(yǔ)句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open("1.txt",binary|app);”語(yǔ)句缺少類ios,即第2處的語(yǔ)句修改為“out1.open("1.txt",ios::binary|ios::app);”。第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語(yǔ)句修改為“out1.put(s[i]);”。

43.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語(yǔ)句是聲明TC類的對(duì)象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語(yǔ)句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語(yǔ)句修改為“obj2.SetNumber(100);”。

44.(1)應(yīng)改為“ein.getline(str,120,?);”。

(2)應(yīng)改為“while(str[i])”。

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

【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個(gè)數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語(yǔ)句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語(yǔ)句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語(yǔ)句只是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。

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

\n(2)應(yīng)改為“voidTC::display”。

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

\n【解析】在類的外部定義成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語(yǔ)句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問題,display函數(shù)返回值為void,因此第2處的語(yǔ)句應(yīng)改為“voidTC::display”。由第3處的語(yǔ)句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語(yǔ)句應(yīng)改為“TC::~TC”。

46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。程序通過繼承關(guān)系,實(shí)現(xiàn)對(duì)姓名的控制。類TC1實(shí)現(xiàn)對(duì)名字訪問的接口,TC2實(shí)現(xiàn)對(duì)名字的設(shè)置和輸出。

\n程序輸出為

\nTC2Name

\nMay

\n其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。

\n(1)在類TCl中定義接口函數(shù)GetName為純虛函數(shù)。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。

\n(2)函數(shù)GetName2用于獲得名字的緩存,但只獲得允許讀操作這個(gè)緩存,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。

\n(3)實(shí)現(xiàn)TC2的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。

\n(4)完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。

\n注意:增加或者修改代碼的位置已經(jīng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論