2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)_第1頁
2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)_第2頁
2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)_第3頁
2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)_第4頁
2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、1.選擇題(10題)1.在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為()。A.log2nB.nlog2nC.n/2D.(n+1)/2

2.設(shè)intx[]={2,4,6,8},y,*p=&x[1];則執(zhí)行語句y=(*--p)++;后數(shù)組元素x[0]的值為______。

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

3.下列運(yùn)算符中哪些是不能夠被重載的?

A..,.*,->*,::,?:

B.++,--,new,delete,==

C.sizeof,new,delete,++,--

D.sizeof,new,delete,+,-

4.下面關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述中,錯(cuò)誤的是()

A.析構(gòu)函數(shù)可以聲明為虛函數(shù)

B.對(duì)虛析構(gòu)函數(shù)的調(diào)用可以采用動(dòng)態(tài)聯(lián)編

C.一個(gè)類的虛函數(shù)僅對(duì)派生類中重定義的函數(shù)起作用,對(duì)其他函數(shù)沒有影響

D.構(gòu)造函數(shù)可以聲明為虛函數(shù)

5.下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;classTestClass{staticinti;public:TestClass(){i++;}~TestClass(){i--;}staticintgetVal(){retumi;}};intTestClass∷i=0;voi

A.111B.121C.211D.221

6.以下程序的執(zhí)行結(jié)果是()。#nclude<iostream.h>template<classT>Tmax(Tx,Ty){retum(x>y?x:y);}voidmain(){cout<<max(2,5)<<","<<max(3.5,2.8)<<end1;}

A.5,5.0B.3.8C.5,3.5D.3.5,5

7.有如下函數(shù)模板聲明:template<typenameT>TMax(Ta,Tb){return(a>=b)?a:b;}下列對(duì)函數(shù)模板Max()的調(diào)用中錯(cuò)誤的是()。

A.Max(3.5,4.5)

B.Max(3.5,4)

C.Max<double>(3.5,4.5)

D.Max<double>(3.5,4)

8.下列運(yùn)算符中全都可以被友元函數(shù)重載的是

A.=,+,-,\B.[],+,(),newC.->,+,*,>>D.<<,>>,+,*

9.在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,*是作為非成員函數(shù)重載的運(yùn)算符。下列敘述中正確的是______。

A.operator+有兩個(gè)參數(shù),operator*有兩個(gè)參數(shù)

B.opezator+有兩個(gè)參數(shù),operator*有一個(gè)參數(shù)

C.operator+有一個(gè)參數(shù),operator*有兩個(gè)參數(shù)

D.operator+有一個(gè)參數(shù),operator*有一個(gè)參數(shù)

10.軟件設(shè)計(jì)中,有利于提高模塊獨(dú)立性的一個(gè)準(zhǔn)則是______。A.A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合

二、單選題(13題)11.下列能對(duì)對(duì)象進(jìn)行初始化的是()。A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.靜態(tài)成員函數(shù)

12.下列對(duì)字符數(shù)組進(jìn)行初始化中,()是正確的。A.chars1[]="abcd";

B.chars2[3]="xyz";

C.chars3[][]={"a","x","y");

D.chars4[2][3]={"xyz","rnnp"};

13.下列關(guān)于對(duì)象初始化的敘述中,正確的是A.定義對(duì)象的時(shí)候不能對(duì)對(duì)象進(jìn)行初始化

B.定義對(duì)象之后可以顯式地調(diào)用構(gòu)造函數(shù)進(jìn)行初始化

C.定義對(duì)象時(shí)將自動(dòng)調(diào)用構(gòu)造函數(shù)進(jìn)行初始化

D.在一個(gè)類中必須顯式地定義構(gòu)造函數(shù)實(shí)現(xiàn)初始化

14.設(shè)有數(shù)組定義:chararray[]:”China”;則數(shù)組array所占的空間為()。

A.4個(gè)字節(jié)B.5個(gè)字節(jié)C.6個(gè)字節(jié)D.7個(gè)字節(jié)

15.若執(zhí)行下面的程序時(shí),從鍵盤上輸入3和4,則輸出結(jié)果是main(){inta,b,s;cin>>a>>b;s=a;if(a<B)s=b:s=s*s;cout<<s<<end1;}

A.14B.16C.18D.20

16.假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。

A.void~MyClass();

B.~MyClass(intn);

C.MyClass();

D.~MyClass();

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

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

B.class和typename都可互相替換

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

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

18.下列敘述中錯(cuò)誤的是()。

A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序中預(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

19.性表的下列運(yùn)算中,不改變數(shù)據(jù)元素之間結(jié)構(gòu)關(guān)系的運(yùn)算是()。

A.插入B.排序C.刪除D.定位

20.在______情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。

A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用

21.以三級(jí)模式為框架形成的三種數(shù)據(jù)庫中,真實(shí)存在于計(jì)算機(jī)外存的數(shù)據(jù)庫是()。

A.概念數(shù)據(jù)庫B.用戶數(shù)據(jù)庫C.物理數(shù)據(jù)庫D.邏輯數(shù)據(jù)庫

22.有下列程序:#include<stdi0.h>voidmain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--),continue;}printf(”%d,”,--x);}}程序的運(yùn)行結(jié)果是()。A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2

23.若要把函數(shù)voidf()定義為aClass的友元函數(shù),則應(yīng)該在類aClass的定義中加入的語句是()。

A.voidf();

B.staticvoidf();

C.friendf();

D.friendvoidf();

三、2.填空題(12題)24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用______對(duì)其中的圖形元素進(jìn)行確切解釋。

25.數(shù)據(jù)庫管理系統(tǒng)是位于【】之間的軟件系統(tǒng)。

26.函數(shù)模板既可以與______重載,也可以與______重載。

27.C++語言中關(guān)鍵字運(yùn)算符有new,delete和【】。

28.在有n個(gè)結(jié)點(diǎn)的二叉鏈表中,值為非空的鏈域的個(gè)數(shù)為【】。

29.一個(gè)類中有【】個(gè)構(gòu)造函數(shù)。

30.根據(jù)下列程序的執(zhí)行結(jié)果,可以斷定劃線部分的修飾符應(yīng)為______。執(zhí)行結(jié)果:

i9afootballiscreated.

afootballiscreated.

i=10

afootballisdestroyed.

afootballiscreated.

i=20

afootballisdestroyed.

afootballisdestroyed.

源程序:

#include<iostream.h>

classFootball

{

public:

Football(){cout<<"afootballiscreated."<<endl;}

~Football(){tout<<"afootballisdestroyed."<<endl;}

};

voidfunc(inti)

{

______Footballf1;

Footballf2;

cout<<"i="<<i<<endl;

}

voidmain()

{

func(10);

func(20);

}

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

#include<iostream.h>

#include<iomanip.h>

voidpnnt(intn)

{

if(n!=0)

{

Print(n-1);

for(inti=1;i<=n;i++)

cout<<setw(3)<<i;

cout<<endl;

}

}

voidmain()

{

print(4);

}

32.表達(dá)式operator+(x,y)還可以表示為______。

33.將x+y*z中的“+”用成員函數(shù)重載,"*"用友元函數(shù)重載應(yīng)寫為_____。

34.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______3種。

35.在MyClass類的定義中,對(duì)賦值運(yùn)算符;進(jìn)行重載。請(qǐng)將橫線處缺失的部分補(bǔ)充完整。

______MyClass::operator=(constMyClass&rhs)

{

if(this==&rhs)return*this;

value=rhs.value;

return*this;

}

四、程序改錯(cuò)題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請(qǐng)改正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;

}

37.使用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ò)誤的語句在

//******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ò),請(qǐng)改正其中的錯(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ù)如果為假,則會(huì)產(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;

}

39.使用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ò)誤的語句在//******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;}

40.使用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ò)誤的語句在//******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)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(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;}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;}

43.使用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;}

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

9,8,7,6,5

注意:錯(cuò)誤的語句在/********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;

}

45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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。類People包括姓名和年齡兩個(gè)字段。函數(shù)fun獲得年齡比較大的人的姓名,然后輸出這個(gè)姓名到屏幕。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類的構(gòu)造函數(shù)功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù)對(duì)姓名的賦值,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)定義類的友元函數(shù)fun,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)補(bǔ)充函數(shù)fun的年齡比較功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來,請(qǐng)不要修改其他的程序代碼。試題程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}

47.請(qǐng)使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayvl={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:補(bǔ)充編制的內(nèi)容寫在“//*********333*********”與“//*********666*********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。//ValArray.h#include<iostream>usingnamespacestd;classValArray{int*v:intsize;public:ValArray(constint*P,intn):size(n){v=newint[size];for(inti=0;i<size;i++)v[i]=P[i];

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

(1)定義類CRectangle的數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

(2)添加類CRectangle的友元函數(shù)duplicate()的聲明,其返回值類型和參數(shù)類型均為Crectangle的,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成類Crectangle的成員函數(shù)set_values的定義,把傳入的參數(shù)a和b分別賦值為數(shù)據(jù)成員width和height,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。

(4)完成派生類Crectangle的友元函數(shù)duplicate的定義,把函數(shù)中的臨時(shí)對(duì)象rectres的值返回主函數(shù),請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。

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

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

#include<iostream.h>

classCRectangle

{

//**1**

public:

voidset_values(int,int);

intarea(void){return(width*height);}

//**2**

};

voidCRectangle::set_values(inta,intb)

{

//**3**

}

CRectangleduplicate(CRectanglerectparam)

{

CRectanglerectres;

rectres.width=rectparam.width*2;

rectres.height=rectparam.height*2;

//**4**

}

voidmain()

{

CRectanglerect,rectb;

rect.set_values(2,3);

rectb-duplicate(rect);

cout<<rectb.area()<<end1;

}

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

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

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

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

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

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

}

參考答案

1.A解析:在長度為n的有序線性表中進(jìn)行二分查找,在最壞情況下,需要的比較次數(shù)為log2n。

2.B

3.A解析:C++語言中的不能重載的操作符是.,.*,->*,::和?:。

4.D析構(gòu)函數(shù)可以聲明為虛函數(shù),但是構(gòu)造函數(shù)不能聲明為虛函數(shù):類的虛函數(shù)僅對(duì)派生類中重定義的函數(shù)起作用,對(duì)其他函數(shù)沒有影響。

5.D解析:由主函數(shù)mian入手,首先定義TestClass對(duì)象ob1,調(diào)用構(gòu)造函數(shù)后,i等于1。在“intTestClass∷i=0”語句中,i首先被賦值為0,它是靜態(tài)函數(shù)可以被所有對(duì)象引用,并且靜態(tài)成員變量,當(dāng)它值被改變后,則在各對(duì)象中這個(gè)數(shù)據(jù)成員的值都同時(shí)改變。主函數(shù)中首先調(diào)用fun函數(shù),其中又定義了對(duì)象ob2,調(diào)用gtVal;i等于2,輸出。主函數(shù)“obj*ob3=newTestClass;cout<<o(jì)b3->getVal();”動(dòng)態(tài)分配,i等于2,輸出。“deleteob3;”析構(gòu)函數(shù)后,i等于1,

6.C

7.B解析:本題考核函數(shù)模板的使用。引用模板函數(shù)和引用一般的函數(shù)在語法形式上沒有任何區(qū)別。所有的類型替換都是編譯器在幕后悄悄進(jìn)行的。但是要注意的是說明一個(gè)函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)對(duì)應(yīng)的函數(shù)調(diào)用時(shí),將根據(jù)實(shí)參中的類型來確認(rèn)是否匹配函數(shù)模板中對(duì)應(yīng)的形參。例如,本題中的B)選項(xiàng),編譯系統(tǒng)從第一個(gè)參數(shù)“3.5”獲得的信息是“T對(duì)應(yīng)于double”,而從第二個(gè)參數(shù)“4”處獲得的信息是“T對(duì)應(yīng)于int”,二者相互矛盾,在編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。對(duì)于D)選項(xiàng)中緊跟在函數(shù)名后的<double>就是模板實(shí)參表,通過它通知編譯系統(tǒng)在調(diào)用過程中,int型的參數(shù)“4”將被自動(dòng)換成double型。

8.D解析:運(yùn)算符重載為成員函數(shù)的形式為:函數(shù)類型operator運(yùn)算符(形參表){函數(shù)體;};運(yùn)算符重載為友元函數(shù)的形式為:friend函數(shù)類型operator運(yùn)算符(形參表){函數(shù)體;)。一般來講,單目運(yùn)算符最好重載為成員函數(shù),雙目運(yùn)算符最好重載為友元函數(shù)。=、[]、()、->以及所有的類型轉(zhuǎn)換運(yùn)算符只能作為成員函數(shù)重載。

9.C解析:operator+作為成員函數(shù)重載,本身便是一個(gè)參數(shù),所以只有一個(gè)參數(shù),而*是作為非成員函數(shù)重載,需要兩個(gè)參數(shù),此題選擇C。

10.C耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,耦合度越高,則模塊的獨(dú)立性越差。內(nèi)聚反映一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。高內(nèi)聚是指一個(gè)軟件模塊是由相關(guān)性很強(qiáng)的代碼組成,只負(fù)責(zé)一項(xiàng)任務(wù),也就是常說的單一責(zé)任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關(guān)心模塊內(nèi)部的實(shí)現(xiàn)。

11.A類的構(gòu)造函數(shù)的作用就是在類實(shí)例化對(duì)象時(shí),即對(duì)象還沒有生成時(shí)完成一些初始化的工作。此時(shí),析構(gòu)函數(shù)和靜態(tài)成員函數(shù)都還沒有建立,而友元函數(shù)是類外部的函數(shù),根本無法完成類的實(shí)例化工作。

12.A

13.C解析:構(gòu)造函數(shù)的作用是在對(duì)象被創(chuàng)建的時(shí)候?qū)?duì)象進(jìn)行初始化。構(gòu)造函數(shù)在對(duì)象被創(chuàng)建的時(shí)候由系統(tǒng)自動(dòng)調(diào)用。故C項(xiàng)正確。

14.C解析:本題考查在C++語言中,字符串的存放規(guī)則。即字符串存放在字符數(shù)組中,而且在字符的后面自動(dòng)插入標(biāo)識(shí)字符串結(jié)束的標(biāo)識(shí)符’\\0’,因此,共6個(gè)字符,每個(gè)字符占用一個(gè)字節(jié),故正確答案為C。

15.B解析:按照程序的執(zhí)行順序.考生可以很快得出正確答案為B。

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

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

18.DD?!窘馕觥款A(yù)處理命令是以“#”開始的語句,每一條預(yù)處理命令必須單獨(dú)占用一行,由于不是C語言的語句,并且命令行的最后不能以分號(hào)表示結(jié)束,定義格式為“#de-fine標(biāo)識(shí)符字符串”,預(yù)處理命令行是系統(tǒng)對(duì)源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。

19.D解析:選項(xiàng)A插入和選項(xiàng)C刪除因?yàn)橛袛?shù)據(jù)變更,因此會(huì)改變數(shù)據(jù)元素之間的結(jié)構(gòu)關(guān)系,而排序則因?yàn)轫樞虻母淖儠?huì)改變數(shù)據(jù)元素之間的結(jié)構(gòu)關(guān)系。

20.A

21.CC。【解析】以概念模式為框深所組成的數(shù)據(jù)稱為概念數(shù)據(jù)庫;以外模式為框架所組成的數(shù)據(jù)庫稱為用戶數(shù)據(jù)庫;以內(nèi)模式為框架所組成的數(shù)據(jù)庫稱為物理數(shù)據(jù)庫。這三種數(shù)據(jù)庫只有物理數(shù)據(jù)庫是真實(shí)存在于計(jì)算機(jī)外存中。

22.DD。【解析】x--后綴表示先用x的值再令x減1,--x前綴表示先將x減1,再執(zhí)行程序,則輸出(X--)繼續(xù)下一次循環(huán),輸出“8,”,此時(shí)x自減值變?yōu)?,執(zhí)行x--,x=6,x%3=0,后面語句不執(zhí)行,執(zhí)行語句“printf("%d,",--x);”,輸出“5”,繼續(xù)for循環(huán)中的x--,得到x=5,輸出“5”;判斷x%3為真,輸出“4”,執(zhí)行兩次x--后,x=2,執(zhí)行“{printf("%d",x--);cotinue;}”后,輸出“2”;然后執(zhí)行兩次x--后,x=0,不符合“x>0”,循環(huán)結(jié)束。

23.D

24.數(shù)據(jù)字典數(shù)據(jù)字典解析:DFD圖是數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)的功能建模。DFD圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出變換過程。

數(shù)據(jù)詞典是結(jié)構(gòu)化分析方法的核心,數(shù)據(jù)詞典是對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)組織的列表。概括來說,數(shù)據(jù)詞典的作用是對(duì)DFD中出現(xiàn)的被命名的圖形元素的確切解釋。

25.用戶與操作系統(tǒng)用戶與操作系統(tǒng)解析:本題考核數(shù)據(jù)庫管理系統(tǒng)的基本概念。數(shù)據(jù)庫管理系統(tǒng)是一個(gè)幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。

26.函數(shù)模板非函數(shù)模板函數(shù)模板非函數(shù)模板

27.sizeofsizeof解析:C++語言中關(guān)鍵字運(yùn)算符有3個(gè)分別new,delete和sizeof。new是申請(qǐng)內(nèi)存,delete是釋放內(nèi)存,sizeof是求字節(jié)數(shù)。

28.n-1

29.多多解析:一個(gè)類中可以有多個(gè)構(gòu)造函數(shù),但只能由一個(gè)析構(gòu)函數(shù)。如果沒有特殊定義構(gòu)造函數(shù)或者析構(gòu)函數(shù),系統(tǒng)都會(huì)自動(dòng)建立一個(gè)默認(rèn)的構(gòu)造函數(shù)或者析構(gòu)函數(shù)。

30.staticstatic解析:觀察一下輸出中對(duì)象的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行次數(shù)可以看出,再次進(jìn)入時(shí)某對(duì)象沒有被構(gòu)造,亦即該對(duì)象在func執(zhí)行后沒有被銷毀,再次進(jìn)入時(shí)則不需要重構(gòu),可以體現(xiàn)這種功能的標(biāo)識(shí)符只有static。

31.1121231234

32.x+yx+y解析:本題考查的是運(yùn)算符函數(shù)的調(diào)用,可以像一般函數(shù)那樣用函數(shù)名進(jìn)行調(diào)用,也可通過運(yùn)算符構(gòu)成表達(dá)式的形式進(jìn)行調(diào)用。

33.x..operator+(operator*(yz))x..operator+(operator*(y,z))解析:C++中用成員函數(shù)重載x*y為:x.operator*(y);用友元函數(shù)重載x*y為:operator*(x,y);用成員函數(shù)重載x+y為:x.operator+(y);用友元函數(shù)重載x+y為:operator+(x,y)。

34.關(guān)系模型關(guān)系模型

35.MyClass&MyClass&解析:此題考查“=”運(yùn)算符的重載。運(yùn)算符“=”的重載需要注意:返回值應(yīng)聲明為引用,函數(shù)體中總是用語句return*this;返回;如果參數(shù)被聲明為指向同類對(duì)象的引用或指針,應(yīng)判別所指向的對(duì)象是否與被賦值對(duì)象為同一對(duì)象,如果是則不做任何處理;如果被賦值對(duì)象占用了動(dòng)態(tài)空間,應(yīng)先釋放這些資源,以便接收新的資源;如果參數(shù)被聲明為指針或引用,通常應(yīng)加上const修飾;一個(gè)類如果需要重載運(yùn)算符=,通常也就需要定義自身特有的復(fù)制構(gòu)造函數(shù),反之亦然。

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

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

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

\n【解析】本題第1處的“TCobjl;”語句是聲明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);”語句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

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

38.(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ù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。“assert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會(huì)使程序產(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是字符,所占存儲(chǔ)空間為1,所以修改為“assert(sizeof(s3)==1);”。

39.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明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);”語句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

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,對(duì)于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)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

41.(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;”。

42.(1)應(yīng)改為“catch(char*s)”。(2)應(yīng)改為“cateh(inti)”。(3)應(yīng)改為“catch(…)”。【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個(gè)標(biāo)識(shí)前的異常拋出語句為“throw((int)0);”,其中的類型為int。對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。

43.(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)”。

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

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

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

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論