2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年浙江省紹興市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、1.選擇題(10題)1.一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求任何派生類都必須定義自己的版本,此虛函數(shù)又稱為

A.虛析構(gòu)函數(shù)B.虛構(gòu)造函數(shù)C.純虛函數(shù)D.靜態(tài)成員函數(shù)

2.有如下類的定義。空格處的語句是()。classMyClass{____________intx,y;public:MyClass(inta=0,intb=0){x=a;y=b;}staticvoidchange(){x-=10;y-=10;}};

A.staticB.constC.privateD.不需要填入內(nèi)容

3.在inta[5]={1,3,5};中,a[1]的值是()。

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

4.知大寫字母A的ASCII碼是65,小寫a的;ASCII碼值是97,則用八進(jìn)制表示字符常量'\101'為()。

A.字符AB.字符aC.字符eD.非法常量

5.有下列程序:#include<iostream.h>usingnamespacestd;classDemo{public:Demo(){cout<<"defaultconstmctor\n";}Demo(constDemo&x){cont<<"copyconstructor\n";}};DemouserCode(Demob){Democ(b);returnc;}int

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

6.下列敘述中正確的是

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定一一對應(yīng)

B.由于計(jì)算機(jī)存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計(jì)語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上三種說法都不對

7.根據(jù)下面的程序,可以在主程序中使用的合法語句是()。#include<iostream>usingnamespacestd;classPerson{intage;public:voidSetAge(intx){age=x;}voidShowAge(){cout<<"thePerson'sageis"<<age;}};classStudent:privatePerson{public:intstudy_code;};voidmain(){Studentwangqiang;wangqiang.study_code=23;}

A.wangqiang.a(chǎn)ge=231

B.wangqiang.Setage(23)

C.wangqiang.ShowAge()

D.wangqiang.study_code=12

8.在下面的定義語句中,畫線處應(yīng)填入的內(nèi)容是classFred{public:voidprint(){cout<<data<<endl;}voidsetData(doubleD){data=d;}staticintcount;private:doubledata;};______count=0;//靜態(tài)數(shù)據(jù)成員的定義

A.intB.staticintC.intFred::D.staticintFred::

9.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

10.有以下程序main(){chara,b,c,*d;a='\';b='\xbc';c='\0xab';d="\0127";cout<<a<<b<<c<<*d<<endl;}編譯時出現(xiàn)錯誤,以下敘述中正確的是

A.程序中只有a='\=;語句不正確

B.b='\xbc';語句不正確

C.d="\0127";語句不正確

D.a='\';和c='\0xab';語句都不正確

二、單選題(13題)11.有如下程序:#include<iostream>usingnamespacestd:classPoint{intx,y;public:Point(intx1=0,inty1=0)):X(X1),y(y1){}intget(){returnx+y;)};classCircle{Pointcenter}intradius;public:Circle(intCX,intcy,intr):center(cx,cy),radius(r){}intget(){returncenter.get()+radius;}};intmain(){Circlec(3,4,5);cout<<c.get()<<endl;return0;}運(yùn)行時的輸出結(jié)果是()。A.5B.7C.9D.12

12.以下定義語句中正確的是()。

A.inta=b=0;

B.charA=65+1,b=b;

C.floata=1,"b=&a,"c=&b;

D.doublea=0.0;b=1.1;

13.下列程序的輸出結(jié)果是()。#include<iostream.h>voidmain()(char*str="12123434";intx1=0,x2=0,x3=0,x4=0,i;for(i=0;str[i]!=\0;i++)switch(str[i]){case1:x4++;case2:x3++;case3:x2++;case4:x1++;}cout<<x1<<","<<x2<:<","<<x3<<","<<x4;}A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6.4,2

14.有定義語句“chars[10];”,若要從終端給S輸入5個字符,錯誤的輸入語句是()。

A.A.gets(&s0);

B.B.scanf("%s",s+1);

C.C.gets(s);

D.D.scanf("%s",s[1]);

15.軟件生命周期中的活動不包括()。

A.市場調(diào)研B.需求分析C.軟件測試D.軟件維護(hù)

16.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。

A.靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)

B.類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員

C.類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值

D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用

17.關(guān)于在調(diào)用模板函數(shù)時模板實(shí)參的使用,下列表述中正確的是()。

A.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果能從模板函數(shù)的實(shí)參中獲得相同的信息,則都可以省略

B.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略

C.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,若能夠省略則必須省略

D.對于常規(guī)參數(shù)所對應(yīng)的模板實(shí)參,任何情況下都不能省略

18.有如下程序:#include<iostream>usingnamespacestd;intmain(){inta[6]={23,l5,64,33,40,58};ints1,s2;s1=s2=a[0];for(int*p=a+1;p<a+6;p++){if(sl>*p)s1=*P;if(s2<*p)s2=*p;}cout<<s1+s2<<endl;return0;}運(yùn)行時的輸出結(jié)果是()。A.23B.58C.64D.79

19.當(dāng)使用fstream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為A.ios::inB.ios::outC.ios::in|ios::outD.以上都不對

20.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。

A.外模式B.內(nèi)模式C.概念模式D.邏輯模式

21.下面是一個模板聲明的開始部分:Template<typenameT>double...由此可知A.這可能是一個函數(shù)模板的聲明

B.這可能是一個類模板的聲明

C.這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明

D.這肯定是一個錯誤的模板聲明

22.下面程序的運(yùn)行結(jié)果是()。#include<iostream.h>classbase{protected:inta;public:base{cout<<”0”;}};classbasel:virtualbase{public:basel{cout<<”1”;}};classbase2:virtualbaseipublic:base2{cout<<”2”;}};classderived:publicbasel,publicbase2{public:derived{cout<<”3”;}};voidmainderivedobj;cout<<endl:A.0123B.3120C.0312D.3012

23.要利用C++流進(jìn)行文件操作,必須在程序中包含的頭文件是()。A.iostreamB.fstreamC.strstreamD.iomanip

三、2.填空題(12題)24.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個。

25.請將下列棧類Stack補(bǔ)充完整。

classStack{

private:

intpList[100];//int數(shù)組,用于存放棧的元素

inttop;//棧頂元素(數(shù)組下標(biāo))

public:

Stack():top(0){}

voidPush(constint&item);//新元素item壓入棧

intPop(void);//將棧頂元素彈出棧

};

voidStack::Push(constint&item){

if(top==99)//如果找滿,程序終止

exit(1);

top++;//棧頂指針增1

______;

}

intStack::Pop(){

if(top<0)//如果??眨绦蚪K止

exit(1);

returnpList[top--];

}

26.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

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

intGetLen(char*str

{

if(【】)return【】;

elsereturn1+GetLen(str+1);

}

28.帶一個long類型參數(shù)的流成員函數(shù)______按參數(shù)值設(shè)置flags狀態(tài)變量,并返回以前設(shè)置的標(biāo)志值。

29.在一個C++程序中,每個變量都必須遵循【】的原則。

30.為了克服軟件危機(jī)提出了【】概念。

31.下面程序的輸出是:

***********5.23

5.23***********

請將下劃線上遺漏的部分補(bǔ)充完整。

#include<iostream>

#include<iomanip>

usingnamespacestd;

voidmain(){

doublei=5.23;

cout<<【】<<setw(14)<<i

cout<<endl<<【】<<setw(14)<<i;

}

32.有如下的類模板定義:

template<typenameTYPE>

classMyClass{

TYPEn;

public:

MyClass(TYPEk);

};

其中構(gòu)造函數(shù)MyClass用的值初始化數(shù)據(jù)成員n。因此在模板類體外,構(gòu)造函數(shù)MyClass應(yīng)定義______。

33.【】是數(shù)據(jù)庫設(shè)計(jì)的核心。

34.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

35.將以下程序?qū)懗扇窟\(yùn)算表達(dá)式是【】。

if(a>B)max=a;

elsemax=b;

四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

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

(1)不能刪除assert()語句。

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

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

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

{

char*s1="abc":

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

assert(sizeof(s1)==3):

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

chars2[10]="ab":

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

assert(sizeof(s2)==2);

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

chars3=23:

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

assert(sizeof(s3)==4);

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

return;

}

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:

number=1

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;

}

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

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

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

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

}

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

9,8,7,6,5

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

試題程序:

#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í)現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;}

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

Constructor,i=0,

Destructor

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

試題程序:

#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。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;}43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#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;}

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

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出一個水果,則計(jì)算水果的重量,還要計(jì)算所有賣出水果的總重量以及總個數(shù),同時允許退貨,請按照以下的操作,把類補(bǔ)充完整。(1)定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型變量AllN0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加到AllWeight中,并且AllNo自加。請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)完成靜態(tài)成員變量的初始化為0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include(iostream.h>classTCFruit{private:floatWeight;//********1********staticintAllNo;public:TCFruit(floatw){//********2********AllWeight+=w:AllNo++:}~TCFruit{//********3********AllWeight-=Weight:}voiddisplay{cout<<"SellaFruitwith"<<Weight<<"k9"<<endl;cout<<”Allsellnumber:"<<AllNo<<endl;cout<<"Allsellweight:"<<AllWeight<<"k9"<<endl<<endl;}};//********4********floatTCFruit::AllWeight=0.0;intmain{TCFruitFruitl(1.2);Fruitl.display;TCFruitFruit2(2.3);Fruit2.display;return0;}47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員a。請?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z句。(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳人。請?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值在輸出時以空格隔開。請?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z句。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。試題程序:#include<iostream.h>classA{inta;public://********1********intgeta{returna;}};classA1: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.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test11_3。此工程包含一個test11_3.cpp,其中定義了類CPosition,但該類的定義都并不完整。請按要求完成下列操作,將類CPosition的定義補(bǔ)充完整。

(1)在類定義外完成重載的兩個構(gòu)造函數(shù)CPosition()和CPosition(doubledx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對象的默認(rèn)值為x=0,y=0,后者為帶參數(shù)的構(gòu)造函數(shù),把數(shù)據(jù)成員x和y分別初始化為參數(shù)dx和dy的值。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

(2)在類體中添加函數(shù)move(doubleax,doubleay)的定義,使得點(diǎn)的坐標(biāo)x和y分別移動ax和ay個單位,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成函數(shù)doubledistance(doublebx,doubleby)的定義,該函數(shù)返回*this和點(diǎn)(bx,by)的距離,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。

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

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

#include<iostream.h>

#include<math.h>

classCPosition

{

public:

CPosition();

CPosition(doubledx,doubledy);

doublegetx();

doublegety();

//**2**

doubledistance(doublebx,doubleby);

private:

doublex;

doubley;

};

//**1**

{

x=0;y=0;

}

CPosition::CPosition(doubledx,doubledy)

{

x=dx;y=dy;

}

doubleCPosition::getx()

{

returnx;

}

doubleCPosition::gety()

{

returny;

}

doubleCPosition::distance(doublebx,doubleby)

{

//**3**

}

voidmain()

{

doublea,b;

cout<<"Inputx,ypositionofapoint:";

cin>>a>>b;

CPositionpsA(a,b);

cout<<“Inputx,ypositionofanotherpoint:";

cin>>a>>b;

cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;

}

49.使用VC6打開考生文件夾下的工程test20_3,此工程包含一個源程序文件tes00_3.cpp,其中定義了用于表示復(fù)數(shù)的類comp,但類comp的定義并不完整。請按要求完成下列操作,將類comp的定義補(bǔ)充完整。

(1)定義comp的構(gòu)造函數(shù),函數(shù)含參數(shù)x和y,它們都是in,型的數(shù)據(jù),默認(rèn)值都為0,請使用參數(shù)列表的形式分別將類數(shù)據(jù)成員a和b初始化x和y的值。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

(2)完成類comp的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x和y分別賦值給數(shù)據(jù)成員s和b,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句;

(3)完成類comp的友元函數(shù)friendcompplus(comp&x,comp&y)的定義,該函數(shù)首先要定義一個comp類的對象c,然后將參數(shù)x和y的數(shù)據(jù)成員a與b分別相加并分別賦值給c的成員a和b,最后返回c的值,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:

10+20i

2+3i

result:12+23i

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

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

#include<iostream.h>

classcomp

{

inta;

intb;

public:

//**1**

friendcompplus(comp&x,comp&y);

voidinput(intx,inty)

{

//**2**

}

voidoutput()

{

cout<<a<<'+'<<b<<"i"<<end1;

}

};

compplus(comp&x,comp&y)

{

//**3**

c.b=x.b+y.b;

returnc;

}

voidmain()

{

compx(10,20),y,z;

y.input(2,3);

z=plus(x,y);

x.output();

y.output();

cout<<"result:";

z.output();

}

參考答案

1.C解析:本題考核純虛函數(shù)的定義。純虛函數(shù)是一種特殊的虛函數(shù),純虛函數(shù)是在虛函數(shù)的后面加上“=0”,表示該虛函數(shù)無函數(shù)體,并非賦值運(yùn)算。純虛函數(shù)的一般格式如下:

virtual<類型><函數(shù)名>(<參數(shù)表>)=0;

在很多情況下,在基類中不能對虛函數(shù)給出有意義的實(shí)現(xiàn),而把它說明為純虛函數(shù),它的實(shí)現(xiàn)留給該基類的派生類去做。

題目中描述的是純虛函數(shù)的特點(diǎn)。

2.A解析:本題考核靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。類的靜態(tài)成員函數(shù)只可以直接訪問類中的靜態(tài)成員,不能直接訪問類中的非靜態(tài)成員。對于上述類的定義,由于在靜態(tài)成員函數(shù)change()訪問了類MyClass的數(shù)據(jù)成員x和y,只能把x和y定義為靜態(tài)數(shù)據(jù)成員。

3.C解析:數(shù)組的下標(biāo)是從0開始的。

4.A解析:此題考核的知識點(diǎn)是轉(zhuǎn)義字符。此題目的關(guān)鍵是八進(jìn)制的101對應(yīng)的十進(jìn)制數(shù)是多少。八進(jìn)制101轉(zhuǎn)換為十進(jìn)制為65,也就是大寫字母A的ASCII碼。

5.C解析:此題考查的是虛函數(shù)的應(yīng)用。C++語言中,在創(chuàng)建一個對象時,會自動調(diào)用類的構(gòu)造函數(shù),所以語句“Demoa,d;”將調(diào)用函數(shù)Demo()兩次。當(dāng)一個對象作為實(shí)參傳遞給函數(shù)時,為初始化形參,要調(diào)用復(fù)制構(gòu)造函數(shù);在函數(shù)返回一個對象時調(diào)用復(fù)制構(gòu)造函數(shù)。所以語句“d=userCode(a);”調(diào)用復(fù)制構(gòu)造函數(shù)3次。

6.D解析:一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的,因此選項(xiàng)A錯誤。計(jì)算機(jī)的存儲空間是向量式的存儲結(jié)構(gòu),但一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),如線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu),因此選項(xiàng)B錯誤。數(shù)組一般是順序存儲結(jié)構(gòu),但利用數(shù)組也能處理非線性結(jié)構(gòu)。選項(xiàng)C錯誤。只有選項(xiàng)D的說法正確。

7.D解析:由于是私有繼承,基類中所有成員成為派生類中的私有成員,故不能由派生類的對象訪問,只有派生類的公有成員可由派生類對象訪問。

8.C解析:靜態(tài)數(shù)據(jù)成員在類中聲明,對它的訪問可通過類名進(jìn)行。

9.B解析:棧是限定在二端進(jìn)行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。注意:隊(duì)列組織數(shù)據(jù)的原則是“先進(jìn)先出”或“后進(jìn)后出”。注意:數(shù)據(jù)結(jié)構(gòu)中,棧和隊(duì)列組織數(shù)據(jù)的原則。

10.D解析:本題考察C++中各種類型在輸出時的轉(zhuǎn)化關(guān)系。斜杠為轉(zhuǎn)義控制字符,其后必須緊跟一個字符,故首先可以確定的是a的賦值語句是錯誤的,根據(jù)選項(xiàng)我們直接看c的賦值語句是否正確。斜杠后跟。表示其后為八進(jìn)制,其值從0到7,因此c的賦值語句也是錯誤的.據(jù)此可以判斷本題的正確答案應(yīng)該為D。

11.DD?!窘馕觥亢唵晤愔g繼承關(guān)系的調(diào)用,按照通常做法便可以得到答案。center.get函數(shù)調(diào)用后,3和4的和被返回,接著再調(diào)用Circle類的radius成員變量5相加后得到12。

12.BB?!窘馕觥勘绢}考查數(shù)據(jù)類型的定義,選項(xiàng)A中是要定義變量并且賦初值,但方式不時,必須單獨(dú)定義其類型。選項(xiàng)C給實(shí)型變量賦值時不用雙引號,也不能將地址賦予實(shí)型變量,在選項(xiàng)D中,C語言允許在一個類型說明符后說明多個相同類型的變量,各變量之間要用逗號隔開,而不是用分號隔開,選項(xiàng)B正確。

13.DD。【解析】本題考查循環(huán)的嵌套、for和switch語句的應(yīng)用、C++中各種條件判斷,循環(huán)語句的用法。只要注意在C++語言中,系統(tǒng)在字符指針的最后位置會增加一個字符串結(jié)束符\0,執(zhí)行8次for循環(huán),再根據(jù)switch語句中的條件易知答案。

14.DD?!窘馕觥窟x項(xiàng)A調(diào)用函數(shù)gets使得s數(shù)組從s[0]開始得到輸入的字符;選項(xiàng)B使得數(shù)組從元素s[1]開始得到輸入的5個字符;選項(xiàng)C使得數(shù)組從s[0]開始得到輸入的字符;而選項(xiàng)D的scan[(”%S”,S[1])調(diào)用錯誤,應(yīng)為scanf(”%s”,&s[1])輸入項(xiàng)部分應(yīng)該是一個地址值。

15.A軟件的生命周期描述了軟件從產(chǎn)生到最終消亡的全過程,生命周期中的活動包括需求分析、軟件設(shè)計(jì)(分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、軟件實(shí)現(xiàn)、軟件測試和軟件維護(hù),不包括市場調(diào)研。

16.A靜態(tài)成員表示整個類范圍共享的信息;必須對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化;靜態(tài)數(shù)據(jù)成員是屬于類的,不能通過類的對象調(diào)用。

17.D在調(diào)用一個模板函數(shù)時,編譯系統(tǒng)需要足夠的信息來判別每個虛擬類型參數(shù)所對應(yīng)的實(shí)際類型,可以從兩個不同的渠道獲得這樣的信息:從模板實(shí)參表(用“<>”括起來的參數(shù)表)或從模板函數(shù)實(shí)參表(用“”括起來的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類型參數(shù)所對應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實(shí)參表中的那幾個參數(shù)可以省略。如果模板實(shí)參表中的實(shí)參都被省略了,則空表“<>”也可以不要,因此選項(xiàng)D錯誤。反之,對于某個模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無法獲得同樣的信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實(shí)參,則其自身還是不能省略。

18.DD?!窘馕觥扛鶕?jù)題意,找出數(shù)組a中最大值sl和最小值s2并計(jì)算二者的和。

19.D解析:使用fstream類建立文件流必須定義打開方式,否則編譯器無法判斷該文件流是讀還是寫。

20.B數(shù)據(jù)庫有三層模式結(jié)構(gòu),邏輯模式是數(shù)據(jù)的全局邏輯結(jié)構(gòu)的描述,外模式也稱為子模式,是局部數(shù)據(jù)的邏輯結(jié)構(gòu)描述,而內(nèi)模式也稱為存儲模式,是數(shù)據(jù)庫物理存儲結(jié)構(gòu)和存取方法的描述。

21.A解析:類模板說明的一般形式是:

template<類型形參表>

class<類名>

{//類說明體??

};

函數(shù)模板的一般說明形式如下

template<模板形參表>

<返回值類型><函數(shù)名>(模板函數(shù)形參表)

//函數(shù)定義體

22.A本題考查的是含有虛基類的繼承中構(gòu)造函數(shù)的調(diào)用順序,應(yīng)該先調(diào)用基類的構(gòu)造函數(shù),接著是按照派生類繼承列表的順序依次調(diào)用虛基類的構(gòu)造函數(shù),最后調(diào)用派生類自己的構(gòu)造函數(shù)。

23.B解析:iostream通用I/O流類和其他I/O流的基類;fstream類用來對文件流進(jìn)行操作,fstream類的頭文件是fstream.h:stxstream類同時可以支持C風(fēng)格的串流的輸入輸出操作iomanip是I/O流控制頭文件,就像c中的格式化輸出一樣。

24.32

25.pList[top]=itempList[top]=item解析:此題考查的是堆棧數(shù)據(jù)結(jié)構(gòu)。堆棧是一種先進(jìn)后出的隊(duì)列,每次入棧在棧頂,出棧也在棧頂。當(dāng)棧頂指針?biāo)肝恢檬亲詈笠粋€有效數(shù)據(jù)時,下次出棧直接取出棧頂指針?biāo)笖?shù)據(jù),然后棧頂指針再減1;入棧時需要將棧頂指針先增1,然后將數(shù)據(jù)存入棧頂指針?biāo)肝恢?。本題中,從Pop()函數(shù)中可以看出,是先取數(shù)然后top才會減1,Push()函數(shù)應(yīng)先增1再取數(shù)。所以應(yīng)填入pList[top]=item。

26.黑盒或者黑箱黑盒或者黑箱解析:軟件測試的方法。

27.*str==NULL或者!*str0*str==NULL或者!*str\r\n0解析:如果結(jié)束,返回0值。

28.flags()

29.先定義后使用先定義后使用

30.軟件工程軟件工程解析:軟件工程的出現(xiàn)是由于軟件危機(jī)的出現(xiàn)。

31.setfill('*'leftsetfill('*'\r\nleft解析:本題考核格式控制數(shù)據(jù)的輸入輸出。函數(shù)setfill(charC)用于設(shè)置填充字符,在輸出數(shù)據(jù)時,如果數(shù)據(jù)寬度小于設(shè)置的寬度,則空閑位置要用填充字符填滿。函數(shù)setw(intn)用于設(shè)置輸入輸出寬度,寬度設(shè)置的效果只對一次輸入或輸出有效,在完成一次數(shù)據(jù)的輸出或輸入后,寬度設(shè)置自動恢復(fù)為0。輸出的初始狀態(tài)為右對齊,所以第一行輸出的為右對齊,而第二行為左對齊,所以要填入關(guān)鍵字“l(fā)eft”。

32.template<typenameTYPE>TyClass<TYPE>::MyClass(TYPEk):n(k){}template<typenameTYPE>\r\nTyClass<TYPE>::MyClass(TYPEk):n(k){}

33.數(shù)據(jù)模型數(shù)據(jù)模型解析:數(shù)據(jù)模型是對客觀事物及聯(lián)系的數(shù)據(jù)描述,它反映了實(shí)體內(nèi)部及實(shí)體與實(shí)體之間的聯(lián)系。因此,數(shù)據(jù)模型是數(shù)據(jù)庫設(shè)計(jì)的核心。

34.可重用性可重用性解析:本題考查了繼承的優(yōu)點(diǎn):相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的叫重用性。

35.max=(a>B?a:b;max=(a>B?a:b;解析:條件運(yùn)算符要求有三個操作對象,稱三目(元)運(yùn)算符,它是C++語言中惟一的一個三目運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3。所以我們可以寫成(a>B?a:b,它是一個“條件表達(dá)式”。執(zhí)行順序是如果(a>B條件為真,則條件表達(dá)式取值a作為整個表達(dá)式的值,否則取值b作為整個表達(dá)式的值。

36.(1)應(yīng)改為“assert(sizeof(s1)==4);”。

\n(2)應(yīng)改為“assert(sizeof(s2)==1O);”。

\n(3)應(yīng)改為“assert(sizeof(s3)==1);”。

\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。“assert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個尾符,它的長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。

37.(1)應(yīng)改為“TCobjl(1);”。

\n(2)應(yīng)改為“0bj1.SetNumber(10);”。

\n(3)應(yīng)改為“0bj2.SelNumber(100);”。

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

38.(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,對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open('1.txt',binary|app);”語句缺少類ios,即第2處的語句修改為“out1.open('1.txt',ios::binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

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

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

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

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:”,否則該類無法被實(shí)例化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則循環(huán)永遠(yuǎn)不會退出。40.(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,對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open("1.txt",binary|app);”語句缺少類ios,即第2處的語句修改為“out1.open("1.txt",ios::binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

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

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

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

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

42.(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ù)組,字符個數(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[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。43.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,

溫馨提示

  • 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

提交評論