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

下載本文檔

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

文檔簡介

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

一、1.選擇題(10題)1.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。

inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;

A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))

2.以下程序的輸出結(jié)果是()。#include<iostream>#include<stdlib>usingnamespacestd;voidfunc(char**m){++m;cout<<*m<<endl;}main(){staticchar*a[]={"MORNING","AFTERNOON","EVENING");char**n;n=a;func(n);system("PAUSE");return0;}

A.為空B.MORNINGC.AFTERNOOND.EVENING

3.C++語言中類定義中默認(rèn)的訪問權(quán)限是

A.publicB.protectedC.pfivateD.default

4.有以下程序#include<iostream>inti=0;voidfun(){{staticinti=1;std::cout<<i++<<',';}std::cout<<i<<',';}intmain(){fun();fun();return0;}程序執(zhí)行后的輸出結(jié)果是

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

5.算法是一種()。

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

6.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

7.下列不是循環(huán)語句的是

A.while語句B.do..while語句C.for語句D.if..else語句

8.有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){intS[]={123,234};cout<<right<<setfill('*')<<setw(6);for(inti=0;i<2;i++){COUt<<s[i]<<endl;}return0;}程序的輸出結(jié)果是

A.123234B.***123234C.***123***234D.***123234***

9.設(shè)有下列定義語句:inta[3][2]={10,20,30,40,50,60};intb[3][2]={10,20,30,40,50,60};則a[1][1]*b[2][1]的結(jié)果為()。

A.2000B.1200C.2400D.3000

10.以下不正確的定義浯句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={‘1’,’2’,’3’,’4’,’5’};

D.charc2[]={‘\x10’,’\xa’,’\x8’};

二、單選題(13題)11.有如下程序:

#include<iostream>

#include<cstring>

usingnamespacestd;

classXCF{

inta;

public:

XCF(intaa=O):a(aA){cout<<”1”;}

XCF(XCF&X){a=x.a;cout<<”2”;}

~XCF(){cout<<at}

intGeta(){returnat}

};

intmain(){

XCFdl(5),d2(d1);

XCF半pd=newXCF(8);

cout<<pd->Geta();

deletepd;

return0;

}

運(yùn)行時(shí)的輸出結(jié)果是A.1215588B.1218855C.12185D.128512

12.對于模板定義關(guān)鍵字class和typename說法不正確的是()。

A.程序中的class并不能都替換為typename

B.class和typename都可互相替換

C.程序中的typename都能替換為class

D.程序中的部分class可以替換為typename

13.若磁盤上已存在某個(gè)文本文件,其全路徑文件名為d:\shiti\tes.txt,下列語句中不能打開該文件的是()。

A.ifstreamfile("d:\shiti\test.txt");

B.ifstreamfile("d:\\shiti\\test.txt");

C.ifstreamfile;file.open("d:\\shiti\\test.txt");

D.ifstream*pFile=newifstream("d:\\shiti\\test.txt");

14.關(guān)于友元,下列說法錯(cuò)誤的是A.如果類A是類B的友元,那么類B也是類A的友元

B.如果函數(shù)fun()被說明為類A的友元,那么在fun()中可以訪問類A的私有成員

C.友元關(guān)系不能被繼承

D.如果類A是類B的友元,那么類A的所有成員函數(shù)都是類B的友元函數(shù)

15.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

16.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是()。structnode{chardata;structnodeifnext;}a,b,*p:&a,*q=&b;A.a.next=q;B.p.next=&b;C.p->next=&b;D.(*p).next=q;

17.源程序的文檔化不包括()。

A.符號名的命名要有實(shí)際意義B.正確的文檔形式C.良好的視覺組織D.正確的程序注釋

18.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報(bào)告B.軟件需求規(guī)格說明書C.概要沒計(jì)說明書D.集成測試計(jì)劃

19.如果表達(dá)式--X+y中,--是作為成員函數(shù)重載的,+是作為成員函數(shù)重載的,則該表達(dá)式還可為

A.y.operator+(x.operator--(0))

B.y,operator+(x.operator--())

C.y.operator+(operator--t(x,0))

D.operator+(x.operator--t())

20.假定其中的x的單位是角度且不考慮π的值的精度,則與數(shù)學(xué)公式等的C++語言表達(dá)式是()。

A.sqrt(cos(x))

B.sqrt(abs(cos(x*3.14/180)))

C.sqrt(abs(cos(x*(/180)))

D.sqrt(fabs(cos(x*3.14/180)))

21.已知有定義:

constintD=5;

inti=1;

doublef=0.32;

charc=15;

則下列選項(xiàng)錯(cuò)誤的是

A.++i;B.D--;C.c++;D.--f;

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

A.a<=c<=zB.(c>=A)&&(c<=z)C.(a>=c)‖(z<=c)D.(c>=a)&&(c<=z)

23.有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0intmain(){XAd1(1),d2(3);cout<<d1.get()+d2.get()+XA::b<<endl;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A.5B.6C.7D.8

三、2.填空題(12題)24.用數(shù)組A[1…n]順序存儲完全二叉樹的各結(jié)點(diǎn),則當(dāng)i>0,且i<=______時(shí),結(jié)點(diǎn)A[i]的右子女是結(jié)點(diǎn)A[2i+1],否則結(jié)點(diǎn)A[i]沒有右子女。

25.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

26.采用順序查找方法查找長度為n的線性表,平均查找長度為【】。

27.設(shè)p是指向一個(gè)類動(dòng)態(tài)對象的指針變量,則執(zhí)行"deletep;"語句時(shí),將自動(dòng)調(diào)用該類中的______函數(shù)。

28.邏輯表達(dá)式x>3&&x<10的相反表達(dá)式為【】。

29.帶參數(shù)的流操縱算子【】與成員函數(shù)unsetf執(zhí)行同樣的功能。

30.表達(dá)式x.operator+(y.operator++(0))還可以寫成______。

31.下列程序的輸出結(jié)果為2,請將程序補(bǔ)充完整。

#inelude<iostream.h>

usingnamespacestd;

classBase

{

public:

______voidfun(){cout<<1;}

};

classDerived:publicBase

{

pbulic:

voidfubn(){cout<<2;}

};

intmain()

{Base*P=newDerived;

P→fun();

deleteP;

return0;

}

32.設(shè)有定義語句:inta=12;,則表達(dá)式a*=2+3的運(yùn)算結(jié)果是【】。

33.關(guān)系操作的特點(diǎn)是【】操作。

34.若要把voidffun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句______。

35.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類描述的是具有相似性質(zhì)的一組【】。

四、程序改錯(cuò)題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯(cuò)誤的語句在//******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;}

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;}

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

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運(yùn)行有問題,請改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯(cuò)誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#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;}

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

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

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

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

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

//******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)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

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

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

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

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

試題程序:

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

}

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

number=1

number=10

number=100

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

}

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

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

}

五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)N0、Name[32],其中N0是int型的數(shù)據(jù),Name[32]為字符型。請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成函數(shù)Set的定義,分別設(shè)置N0和Name的值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)完成函數(shù)print,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句,輸出結(jié)果如下:N0=12345Name=HelloWorld!(4)添加默認(rèn)構(gòu)造函數(shù),設(shè)置N0為0,Name為空,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include<iostream.h>classTC{public://********1********//********2********{No=no;for(inti=0;strName[i]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TC(){//********4********)};intmain(){TCstu:stu.Set(12345,"HelloWorld!");stu.print();return0;}

47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出一個(gè)水果,則計(jì)算水果的重量,還要計(jì)算所有賣出水果的總重量以及總個(gè)數(shù),同時(shí)允許退貨,請按照以下的操作,把類補(bǔ)充完整。(1)定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型變量AllN0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成類TCFruit的帶一個(gè)float型變量w的構(gòu)造函數(shù),并把這個(gè)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;}

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

(1)定義CRectangle的構(gòu)造函數(shù),函數(shù)含參數(shù)dx,dy,da和db,它們都是double型的數(shù)據(jù),請將類數(shù)據(jù)成員x,y,a和b初始化,并輸出“CRectangleConstructed.”(另起一行輸出該文字)。請?jiān)谧⑨尅?/**1**之后添加適當(dāng)?shù)恼Z句。

(2)完成類CRectangle的成員函數(shù)getperimeter()的定義,將以a和b為邊的矩形周長的值返回,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成類CRectangle的成員函數(shù)getarea()的定義,將以a和b為邊的矩形面積的值返回,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。

(4)完成類CRectangle的友元函數(shù)frienddoubledist(CRectangle&rt)的定義,先定義兩個(gè)double型的臨時(shí)變量tx和ty,然后將參數(shù)對象rt的數(shù)據(jù)成員x與a的一半相加,y與b的一半相加,分別賦值給tx和ty,最后求出tx與ty的平方和的值之后將它的平方根返回,將請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下:

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.

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

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

{

//**1**

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)

{

//**4**

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打開考生文件夾下的工程test23_3,此工程包含一個(gè)源程序文件test23_3.cpp,其中定義了類X和它的友元類Y,但它們的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。

(1)將類X的靜態(tài)數(shù)據(jù)成員y初始化為1。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

(2)完成類Y的構(gòu)造函數(shù)Y(inti,intj)的定義,將參數(shù)i賦值給類Y的數(shù)據(jù)成員,X的對象a中的數(shù)據(jù)成員x,并且把參數(shù)j賦值給類X的數(shù)據(jù)成員y,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成類Y的成員函數(shù)voidDisplay()的定義,將Y的數(shù)據(jù)成員,X的對象a中的數(shù)據(jù)成員x和類X的數(shù)據(jù)成員y按照“x=_,y=_”的形式顯示出來(“_”代表一個(gè)數(shù)字),請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下:

x=5,y=l

x=6,y=9

x=5,y=9

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

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

include<iostream.h>

classX

{

friendclassY;

public:

voidSet(inti){x=i;}

voidDisplay()

{

cout<<"x="<<x<<",";

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

}

private:

intx;

staticinty;

};

classY

{

public:

Y(inti,intj)

voidDisplay();

private:

Xa;

};

//**1**

Y::Y(inti,intj)

{

//**2**

}

voidY::Display()

{

//**3**

}

voidmain()

{

Xb;

b.Set(5);

b.Display();

Yc(6,9);

c.Display();

b.Display();

}

參考答案

1.D解析:本題考查數(shù)組指針的應(yīng)用。選項(xiàng)D)第一層括號中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒有意義。

2.C

3.C解析:lC++語言中類定義中默認(rèn)的類的訪問權(quán)限是private。注意:C++語言中沒有default權(quán)限。注意:結(jié)構(gòu)體默認(rèn)的訪問權(quán)限是public,注意它們之間的區(qū)別。

4.D解析:本題考核變量的作用域、生存周期和存儲類別(自動(dòng)、靜態(tài)、存儲器、外部)。題中即定義全局變量i,又在函數(shù)fun內(nèi)部定義了局部靜態(tài)變量i,當(dāng)進(jìn)入函數(shù)fun里面的大括號時(shí),局部靜態(tài)變量i有效,所以輸出1,然后局部靜態(tài)變量i加1,出了里面的大括號后,全局變量i有效,所以輸出0。同理,第二次調(diào)用fun后,輸出2和0。

5.B

6.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實(shí)施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護(hù)工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

7.D解析:本題很簡單,選項(xiàng)D是條件語句,不是循環(huán)語句。

8.B解析:setfill('*')填充設(shè)置僅影響緊跟其后的輸出操作,第二次循環(huán)時(shí)失效

9.C解析:只為a中由第0個(gè)位置開始,所以a[1][1]*b[2][1]為二維數(shù)組中,第二行二列乘以b中第三行二列,即40*60。

10.B解析:在一維數(shù)組中要注意的是作為下標(biāo)表達(dá)式的常量表達(dá)式的值必須是大于等于0,并且小于自身,本題中選項(xiàng)B)的下標(biāo)表達(dá)式的值超過了自身。

11.B解析:在主函數(shù)中XCFd1(5),d2(d1);,d1調(diào)用了第一個(gè)構(gòu)造函數(shù),輸出1;d2調(diào)用了拷貝構(gòu)造函數(shù),輸出2;xcF*pd=IleWXCF’(8);調(diào)用了構(gòu)造函數(shù),輸出l;cout<<pd->Geta();調(diào)用了成員函數(shù)Geta(),輸出8;deletepd;調(diào)用了析構(gòu)函數(shù),輸出8;return0;,在返回O之前程序會自動(dòng)調(diào)用d1和d2的析構(gòu)函數(shù),輸出55。因此總的輸出應(yīng)該是1218855。

12.BB?!窘馕觥吭贑++程序中的typename是都可以替換為class的,但class不能都替換為typename。

13.A

14.A本題考核友元類和友元函數(shù)。友元關(guān)系是單向的,并且只在兩個(gè)類之間有效。即使類X是類Y的友元,類Y是否是類X的友元也要看類X中是否有相應(yīng)的聲明。即友元關(guān)系不具有交換性,所以A選項(xiàng)的說法是錯(cuò)誤的。類的友元函數(shù)可以直接訪問該類的所有成員;類A是類B的友元類,那么類A的所有成員函數(shù)都是類B的友元函數(shù)。

15.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

16.B解析:要把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后,必須把b的地址給a的next指針,選項(xiàng)A中,指針變量q保存的就是變量b的地址,選項(xiàng)B中的p是指針變量,應(yīng)該是p->next=&b;在選項(xiàng)D中,用*運(yùn)算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。

17.B解析:源程序的文檔化主要包括3點(diǎn):(1)符號名應(yīng)具有一定實(shí)際的含義,便于理解程序功能:(2)正確的程序注釋;(3)良好的視覺組織。利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦?/p>

18.BA錯(cuò)誤,可行性分析階段產(chǎn)生可行性分析報(bào)告。C錯(cuò)誤,概要設(shè)計(jì)說明書是總體設(shè)計(jì)階段產(chǎn)生的文檔。D錯(cuò)誤,集成測試計(jì)劃是在概要設(shè)計(jì)階段編寫的文檔。B正確,軟件需求規(guī)格說明書是后續(xù)工作如設(shè)計(jì)、編碼等需要的重要參考文檔。

19.B解析:C++語言中用成員函數(shù)重載--x為:x.operator--(),用成員函數(shù)重載x+y為:x.operator+(y)。

20.D解析:本題考查數(shù)學(xué)表達(dá)式的掌握,首先應(yīng)轉(zhuǎn)換為弧度,然后作為COS函數(shù)的參數(shù),求絕對值,最后是開方函數(shù)。考生需要掌握的是常用的數(shù)學(xué)函數(shù)。

21.B解析:“++”,“--”運(yùn)算符不能用于常量。

22.DD?!窘馕觥孔址蛿?shù)據(jù)在計(jì)算機(jī)內(nèi)部是以AsCIl碼存儲的,英文大寫字母和小寫字母在ASCIl碼表中都是連續(xù)的。大寫字母A~z是從65~90,小寫字母a~z是從97~122。所以只要變量C大干等于a并且等于小于2,就能保證其為小寫字母。

23.CC。【解析】每調(diào)用一次get函數(shù)時(shí),對新的類A對象進(jìn)行一次實(shí)例化,調(diào)用一次構(gòu)造函數(shù),類A的靜態(tài)成員變量b便加1。

24.(n-1)/2(n-1)/2解析:完全二叉樹中除最下面一層外,各層都被結(jié)點(diǎn)充滿了,每一層結(jié)點(diǎn)個(gè)數(shù)恰是上一層結(jié)點(diǎn)個(gè)數(shù)的2倍。因此,從一個(gè)結(jié)點(diǎn)的編號就可以推知它的雙親及左、右子女結(jié)點(diǎn)的編號。當(dāng)i<=n/2時(shí),結(jié)點(diǎn)i的左子女是結(jié)點(diǎn)2i,否則結(jié)點(diǎn)i沒有左子女;

當(dāng)i<=(n-1)/2時(shí),結(jié)點(diǎn)i的右子女是結(jié)點(diǎn)2i+1,否則結(jié)點(diǎn)i沒有右子女:

當(dāng)i≠1時(shí),結(jié)點(diǎn)i的雙親是結(jié)點(diǎn)[i/2]。

25.變換型變換型解析:典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型,,變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流。它可以引發(fā)一個(gè)或多個(gè)處理,這此處理能夠完成液作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

26.(n+)/2

27.析構(gòu)析構(gòu)

28.x<=3||x>=10x<=3||x>=10解析:根據(jù)邏輯表達(dá)式的定義得到。

29.resetioflags

30.x+y++或x+(y++)x+y++或x+(y++)

31.virtualvirtual解析:本題考查虛函數(shù)的概念。在C++中,一個(gè)基類的指針可以用于指向它的派生類對象。而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際指向的對象類的那個(gè)重定義版本。在本題中,通過對象指針P調(diào)用的是派生類中重定的。fun函數(shù),那么基類中的fun只有是虛函數(shù)才能滿足要求。

32.60

33.集合集合解析:在關(guān)系操作中,所有操作對象與操作結(jié)果都是關(guān)系。而關(guān)系定義為元數(shù)相同的元組的集合。因此,關(guān)系操作的特點(diǎn)是集合操作。

34.friendvoidffun()

35.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。

36.(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”后的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。

37.(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個(gè)標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

38.(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ù)名之后必須是一對括號,因此第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)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

39.(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的對象,應(yīng)改為“cout<<c->n<<endl;”。

40.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象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)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

41.(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īng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,則轉(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)”。

42.(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個(gè)標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

43.(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)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個(gè)尾符,它的長度應(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);”。

44.(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ù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.numb

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論