2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2022年山西省忻州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、1.選擇題(10題)1.this指針是C++語(yǔ)言實(shí)現(xiàn)什么的一種機(jī)制?()

A.抽象B.封裝C.繼承D.重載

2.下列字符串中,正確的C++標(biāo)識(shí)符是()。

A.foo-lB.2bC.newD._256

3.下面的描述中,正確的是()。

A.A.virtual可以用來(lái)聲明虛函數(shù)

B.含有純虛函數(shù)的類是不可以用來(lái)創(chuàng)建對(duì)象的,因?yàn)樗翘摶?/p>

C.即使基類的構(gòu)造函數(shù)沒(méi)有參數(shù),派生類也必須建立構(gòu)造函數(shù)

D.靜態(tài)數(shù)據(jù)成員可以通過(guò)成員初始化列表來(lái)初始化

4.以下選項(xiàng)中,與k=n++完全等價(jià)的表達(dá)式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

5.下列關(guān)于虛基類的描述中錯(cuò)誤的是

A.虛基類子對(duì)象的初始化由最派生類完成

B.虛基類子對(duì)象的初始化次數(shù)與虛基類下面的派生類個(gè)數(shù)有關(guān)

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

D.帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出對(duì)虛基類構(gòu)造函數(shù)調(diào)用

6.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

7.下列敘述中正確的是()。

A.線性鏈表中的各元素在存儲(chǔ)空間中的位置必須是連續(xù)的

B.線性鏈表中的表頭元素一定存儲(chǔ)在其他元素的前面

C.線性鏈表中的各元素在存儲(chǔ)空間中的位置不一定是連續(xù)的,但表頭元素一定存儲(chǔ)在其他元素的前面

D.線性鏈表中的各元素在存儲(chǔ)空間中的位置不一定是連續(xù)的,且各元素的存儲(chǔ)J頃序也是任意的

8.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為

A.31B.32C.16D.15

9.有以下程序:#include<iostream>usingnamespacestd;classsample{private:intn;public:sample(){}sample(intm){n=m;sampleadd(samplesl,samples2){this->n=sl.n+s2.n;return(*this);}voiddisp(){cout<<"n="<<n<<end1;}};intmain(){samplesl(10),s2(5),s3;s3.add(s1,s2);s3.disp();return0;}程序運(yùn)行后,輸出的結(jié)果是()。

A.n=10B.n=5C.n=20D.n=15

10.下列運(yùn)算符不能重載為友元函數(shù)的是()。

A.=()[]→B.+-++--C.><>=<=D.+=-=*=/=

二、單選題(13題)11.為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為()。

A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.函數(shù)模板

12.有如下程序:#included<iostream>usingnamespacestd;voidfl(int&X,int&y){intz=x;x=y;y=z;)voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(X,y);f2(x,y);cout<<y<<endl;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A.10B.16C.26D.36

13.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測(cè)試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源

14.下列關(guān)于this指針的敘述中,正確的是()。

A.任何與類相關(guān)的函數(shù)都有this指針

B.類的成員函數(shù)都有this指針

C.類的友元函數(shù)都有this指針

D.類的非靜態(tài)成員函數(shù)才有this指針

15.負(fù)責(zé)數(shù)據(jù)庫(kù)中查詢操作的數(shù)據(jù)庫(kù)語(yǔ)言是()。

A.數(shù)據(jù)定義語(yǔ)言B.數(shù)據(jù)管理語(yǔ)言C.數(shù)據(jù)操縱語(yǔ)言D.數(shù)據(jù)控制語(yǔ)言

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

A.gets函數(shù)用于從終端讀入字符串

B.getchar函數(shù)用于從磁盤文件讀入字符

C.fputs函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件

17.有如下函數(shù)模板聲明:template

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(3.5,4.5)

D.Max(3.5,4)

18.在32位的計(jì)算機(jī)中,一個(gè)char型數(shù)據(jù)所占的內(nèi)存長(zhǎng)度的字節(jié)是()A.4B.1C.2D.8

19.下面排序算法中,平均排序速度最快的是()。

A.冒泡排序法B.選擇排序法C.交換排序法D.堆排序法

20.

21.算法的空間復(fù)雜度是指()。

A.算法在執(zhí)行過(guò)程中所需要的計(jì)算機(jī)存儲(chǔ)空間

B.算法所處理的數(shù)據(jù)量

C.算法程序中的語(yǔ)句或指令條數(shù)

D.算法在執(zhí)行過(guò)程中所需要的臨時(shí)工作單元數(shù)

22.下列描述中,()是抽象類的特性。

A.可以說(shuō)明虛函數(shù)B.可以進(jìn)行構(gòu)造函數(shù)重載C.可以定義友元函數(shù)D.不能說(shuō)明其對(duì)象

23.數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是()

A.數(shù)據(jù)存儲(chǔ)B.數(shù)據(jù)共享C.數(shù)據(jù)查詢D.數(shù)據(jù)管理

三、2.填空題(12題)24.棧中允許進(jìn)行插入和刪除的一端叫做______。

25.下列程序在構(gòu)造函數(shù)和析構(gòu)函數(shù)中申請(qǐng)和釋放類的數(shù)據(jù)成員int*a,申請(qǐng)時(shí)使用形參b初始化a,請(qǐng)?zhí)羁铡?/p>

classA

{

public:

A(intb);

~A();

private:

int*a;

};

A::A(intb)

{

【】;

}

A::~A()

{

【】;

}

26.在C++中,打開一個(gè)文件,就是將這個(gè)文件與一個(gè)【】建立關(guān)聯(lián);關(guān)閉一個(gè)文件,就是取消這種關(guān)聯(lián)。

27.在面向?qū)ο蠓椒ㄖ?______描述的是具有相似屬性與操作的一組對(duì)象。

28.C++語(yǔ)言的參數(shù)傳遞機(jī)制包括傳值和傳地址兩種,如果調(diào)用函數(shù)時(shí),需要改變實(shí)參或者返回多個(gè)值,應(yīng)該采取【】方式。

29.在算法的4個(gè)特性中,算法必須能在執(zhí)行有限個(gè)步驟之后終止指的是算法的______特性。

30.下列程序運(yùn)行后的輸出結(jié)果是【】。

#include<iostream.h>

voidmain()

{

ints=0,k;

for(k=7;k>=0;k--)

{

switch(k)

{

case1:

case4:

case7:s++;break;

case2:

case3:

case6:break;

case0:

case5:S+;2;break;

}

}

cout<<"S="<<S<<endl;

}

31.在進(jìn)行模塊測(cè)試時(shí),要為每個(gè)被測(cè)試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊。其中【】的作用是將測(cè)試數(shù)據(jù)傳送給被測(cè)試的模塊,并顯示被測(cè)試模塊所產(chǎn)生的結(jié)果。

32.對(duì)于下列語(yǔ)句

char*strl="Hello";

char*str2=."Hello";

*strl='P';

cout<<str2<<end1;

其輸出結(jié)果為:【】

33.結(jié)構(gòu)化程序設(shè)計(jì)所規(guī)定的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和【】。

34.執(zhí)行以下程序后,輸出“#”號(hào)的個(gè)數(shù)是【】。

#include<iostream.h>

main()

{

inti,j;

for(i=1;i<5;i++)

for(j=2;j<=i;j++)

cout<'#';

}

35.深度為m的滿二叉樹共有【】個(gè)節(jié)點(diǎn)。

四、程序改錯(cuò)題(10題)36.使用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;}

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

}

38.使用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ò)誤的語(yǔ)句在//******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;

}

39.使用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ò)誤的語(yǔ)句在//******error******的下面。

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

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

}

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ò)誤的語(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;}

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

}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問(wè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;}

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

}

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

number=1

number=10

number=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;

}

45.使用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;}五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型的參數(shù)x和y,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳人。請(qǐng)?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個(gè)整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請(qǐng)?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個(gè)值在輸出時(shí)以空格隔開。請(qǐng)?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z(yǔ)句。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序的其他部分。試題程序:#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;}

47.(1)“while”應(yīng)改為“while(infile.get(ch))”。

(2)應(yīng)添加“bur[len++]=ch;bur[len]=ch;len++;”。

(3)應(yīng)添加“outfile2<<bur[i++];”或“outfile2<<buf[i];i++;”。

(4)“TCobj;”應(yīng)改為“TCobi("in.txt");”。

【解析】本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個(gè)字符,并判斷是否到文件結(jié)尾,所以應(yīng)使用get函數(shù);第2處應(yīng)將ch存入buf數(shù)組,同時(shí)讓len增1;第3處將buf中的字節(jié)輸出給outfile2,注意同時(shí)讓i增1,否則while循環(huán)將進(jìn)入死循環(huán);第4處TC只確一個(gè)帶char*參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對(duì)象時(shí)必須使用構(gòu)造參數(shù),根據(jù)題意這個(gè)參數(shù)應(yīng)該是“"in.txt"”。

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

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

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

(3)完成類vector的友元函數(shù)frienddoubleMultiply(vector&x,vector&y)的定義,先定義double型的臨時(shí)變量c,然后將參數(shù)對(duì)象x和對(duì)象y的數(shù)據(jù)成員a與b分別相乘再相加后賦值給c,最后返回c的值,將請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。輸出結(jié)果如下:

(10,20)

(2,3)

80

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

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

#include<iostream.h>

classvector

{

inta;

intb;

public:

//**1**

voidinput(intx,inty)

{

//**2**

}

voidoutput()

{

cout<<'('<<a<<','<<b<<")"<<end1;

}

frienddoubleMultiply(vector&x,vector&y);

}

doubleMultiply(vector&x,vector&y)

{

//**3**

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

returnc;

}

voidmain()

{

vectorx(10,20),y;

doubled;

y.input(2,3);

d=Multiply(x,y);

x.output();

y.output();

cout<<d<<end1;

}

49.使用VC6打開考生文件夾下的工程MyProj1。此工程包含千個(gè)源程序文件MyMainl.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整。請(qǐng)按要求完成下列操作,將類Date的定義補(bǔ)充完成:

①定義私有數(shù)據(jù)成員year、month和day分別用于表示年、月、日,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

②完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對(duì)象的默認(rèn)值為:year=1,month=1,day=1,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

③完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員year、month和day分別初始化為參數(shù)y、m和d的值,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

④完成成員函數(shù)print的類外定義,使其以“年-月-日”的格式將Date對(duì)象的值輸出到屏幕上。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

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

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

//MyMainl.cpp

#include<iostream>

usingnamespacestd;

classDate

{

public:

//**2**

Date(inty,intm,intd)

{

//**3**

}

voidprint()const;

private:

//datamember

//**1**

};

voidDate::print()const

{

//**4**

}

intmain()

{

Datenational_day(1949,10,1);

national_day.print();

return0;

}

參考答案

1.B解析:this指針是C++語(yǔ)言實(shí)現(xiàn)封裝的一種機(jī)制,它將對(duì)象和該對(duì)象調(diào)用的成員函數(shù)連接在一起,在外部看來(lái),每一個(gè)對(duì)象都擁有自己的函數(shù)成員。

2.D解析:第一個(gè)字符必須是字母或下劃線,中間不能有空格,在第一個(gè)字母后,可以是任意字母、下劃線和數(shù)字組成的字符序列;標(biāo)識(shí)符的長(zhǎng)度是任意的,但特定的編譯系統(tǒng)能夠識(shí)別的標(biāo)識(shí)符長(zhǎng)度是有限的。一般不要超過(guò)31個(gè)字符;標(biāo)識(shí)符中大小寫字母是有區(qū)別的;用戶定義標(biāo)識(shí)符時(shí),不要采用系統(tǒng)的保留字。

3.A在基類中用virtual聲明成員函數(shù)為虛函數(shù),所以A是正確的。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的虛函數(shù)。純虛函數(shù)是一種特殊的虛函數(shù),它沒(méi)有具體的實(shí)現(xiàn)。靜態(tài)數(shù)據(jù)成員函數(shù)只能在類外進(jìn)行初始化。

4.A解析:在本題中k=n++,為后綴運(yùn)算。根據(jù)其運(yùn)算規(guī)則,首先n先加一,但n++表達(dá)式的值依然n原來(lái)的值,即k的值沒(méi)有改變。選項(xiàng)A中先給k賦值為n,然后n再加1,k值沒(méi)有變化,所以這個(gè)表達(dá)式和本題中表達(dá)式等價(jià):選項(xiàng)B中先n加1,然后將n加1后的值賦給k,k變化了比原來(lái)的值大1,所以這個(gè)表達(dá)式和本題中表達(dá)式不等價(jià):選項(xiàng)C中先計(jì)算表達(dá)式左邊的表達(dá)式++=N的值,執(zhí)行++n后,左邊的表達(dá)式的值為n的值加1,然后將n+1后的值賦給k,所以這個(gè)表達(dá)式和本題中的表達(dá)式不等價(jià);選項(xiàng)D中表達(dá)式展開為k=k+(n+1),k的值發(fā)生了變化,所以這個(gè)表達(dá)式和本題中的表達(dá)式不等價(jià)。所以4個(gè)選項(xiàng)中A正確。

5.B解析:虛基類主要是為了消除在多重繼承中的二義性問(wèn)題。實(shí)際上,說(shuō)某個(gè)類是虛基類,并不是該類本身有什么特殊的地方,而是在繼承的時(shí)候加上virtual修飾詞。虛基類不同于抽象類,虛基類是可以被實(shí)例化的,派生類初始化時(shí),必須列出虛基類的構(gòu)造函數(shù)調(diào)用。虛基類對(duì)象的初始化次數(shù)只于對(duì)象的多少有關(guān),與類的層次結(jié)構(gòu)是沒(méi)有關(guān)系的。故本題正確答案為B。

6.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的過(guò)程是:先建一個(gè)堆,輸出堆頂?shù)淖畲蠡蜃钚〉脑?,再將剩余的n-1個(gè)元素重新調(diào)整成一個(gè)新堆。如此反復(fù)進(jìn)行,直到排序完成。

直接插入排序是一種最簡(jiǎn)單的排序方法,它的基本操作是將一個(gè)記錄插入到已排好的有序表中,從而得到一個(gè)新的、記錄數(shù)增1的有序表。首先,將序列中的第1個(gè)記錄看成是一個(gè)有序的子序列,然后從第2個(gè)記錄起逐個(gè)進(jìn)行插入,直至整個(gè)序列變成按關(guān)鍵字非遞減有序序列為止。

快速排序是對(duì)冒泡排序的一種改進(jìn)。它的基本思想是通過(guò)一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可以分別對(duì)這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)到整個(gè)序列有序。

直接選擇排序是通過(guò)n-i次關(guān)鍵字間的比較,從n-i+1個(gè)記錄中選出關(guān)鍵字最小的一個(gè)記錄,并和第i個(gè)記錄交換。這樣重復(fù)執(zhí)行n-1趟選擇排序。

在本題中,數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),即說(shuō)明數(shù)據(jù)表基本有序,簡(jiǎn)單移動(dòng)一些元素即可完成排序,在這種情況下,使用直接插入排序法所需時(shí)間最少,最合理。因此本題的正確答案是B。

\r\n\r\n\r\n

7.D

8.C解析:二叉樹的一個(gè)性質(zhì)是,在二叉樹的第k層上,最多有2(k-1)(k>=1)個(gè)結(jié)點(diǎn)。對(duì)于滿二叉樹,每一層上的結(jié)點(diǎn)數(shù)都達(dá)到最大值,即在滿二叉樹的第k層上有2k-1個(gè)結(jié)點(diǎn)。所以,在深度為5的滿二叉樹中,所有葉子結(jié)點(diǎn)在第5層上,即其結(jié)點(diǎn)數(shù)為2(k-1)=2(5-1)=16。

9.D解析:本題考核this指針的使用。類中成員函數(shù)add中的this指針指向該成員函數(shù)被調(diào)用的對(duì)象。在主函數(shù)main()中調(diào)s3.a(chǎn)dd(s1,s2),即對(duì)象s3的私有變量n的值為對(duì)象s1和s2私有變量的和,所以程序最后輸出15,即選項(xiàng)D。

10.A

11.A\n一般函數(shù)進(jìn)行調(diào)用時(shí),要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中.然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時(shí),是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來(lái)替換,一般只將{將規(guī)模很小而使用頻繁的函數(shù)聲明為內(nèi)聯(lián)函數(shù),可以避免函數(shù)調(diào)用時(shí)間開銷,從而提高運(yùn)行速度。

\n

12.AA?!窘馕觥吭擃}考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳遞,引用傳遞時(shí)x和y會(huì)交換,而值傳遞時(shí)二者不交換,因此選10。

13.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計(jì)算機(jī)及相關(guān)應(yīng)用所需要的硬件,它是軟件開發(fā)必不可少的資源,因?yàn)闊o(wú)論什么樣的軟件工具都需要在硬件上完成任務(wù),它是其他資源的基礎(chǔ)資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測(cè)試數(shù)據(jù)無(wú)關(guān)。(3)支持軟件是指為軟件開發(fā)提供操作平臺(tái)的軟件,如常用的面向?qū)ο箝_發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過(guò)對(duì)上述分析的總結(jié),可以知道本題的正確答案選D。

14.D解析:本題考核this指針的使用。類的每一個(gè)成員函數(shù)都有一個(gè)隱含定義的常量指針,稱為this指針。它是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象的地址。成員函數(shù)可以通過(guò)這個(gè)指針知道自己屬于哪一個(gè)對(duì)象。但是在使用this指針時(shí)需要注意的是:this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對(duì)象。this指針一般用于返回當(dāng)前對(duì)象自身;靜態(tài)成員函數(shù)沒(méi)有this指針。因?yàn)轭愔挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,所以使用this指針沒(méi)有什么意義。在靜態(tài)成員函數(shù)中使用this指針會(huì)引起編譯錯(cuò)誤。

15.C數(shù)據(jù)定義語(yǔ)言:負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語(yǔ)言:負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增加、刪除、修改等操作;數(shù)據(jù)控制語(yǔ)言:負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。因此本題答案為C)。

16.B解析:本題考查的是輸入輸出函數(shù)的使用,gets和getchar函數(shù)用于從標(biāo)準(zhǔn)輸入設(shè)備終端讀八字符串和字符,并非從磁盤文件讀入,fputs用于把字符串輸出到文件,fwrite用于以二進(jìn)制形式輸出數(shù)據(jù)到文件,故選項(xiàng)B)描述錯(cuò)誤。

17.BB?!窘馕觥恳媚0搴瘮?shù)和引用一般函數(shù)在語(yǔ)法形式上沒(méi)有任何區(qū)別。說(shuō)明一個(gè)函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)對(duì)應(yīng)的函數(shù)調(diào)用時(shí),將根據(jù)實(shí)參中的類型來(lái)確認(rèn)是否匹配函數(shù)模板中對(duì)應(yīng)的形參。

18.B解析:char型數(shù)據(jù)所占內(nèi)存的大小為1個(gè)字節(jié)。注意:int型數(shù)據(jù)占內(nèi)存的大小為4個(gè),congdouble,double占內(nèi)存的大小為8個(gè)字節(jié)。注意:求字節(jié)數(shù)用sizeof運(yùn)算符。

19.DD。【解析】在各種排序方法中,快速排序法和堆排序法的平均速度是最快的,因?yàn)樗鼈兊臅r(shí)間復(fù)雜度都是O(nlog2n),其他的排序算法的時(shí)間復(fù)雜度大都是O(n2)。

20.D

21.A算法的空間復(fù)雜度是指算法在執(zhí)行過(guò)程中所需要的內(nèi)存空間。所以選擇A項(xiàng)。

22.D解析:本題考核抽象類的特性。

①抽象類是指至少有一個(gè)純虛函數(shù)的類。它往往表示一些抽象的概念,它的成員函數(shù)沒(méi)有什么意義。

②抽象類是一種特殊的類,它是為了抽象和設(shè)計(jì)的目的而建立的,它處于繼承層次結(jié)構(gòu)的上層。抽象類的主要作用是將有關(guān)的類組織在一個(gè)繼承層次結(jié)構(gòu)中,由它來(lái)為它們提供一個(gè)公共的根,相關(guān)的子類是從這個(gè)根派生出來(lái)的。

③對(duì)于抽象類的使用有幾點(diǎn)規(guī)定:抽象類只能用作其他類的基類,不能建立抽象類對(duì)象;抽象類不能用作參數(shù)類型、函數(shù)返回類型或顯式轉(zhuǎn)換的類型;可以說(shuō)明指向抽象類的指針和引用,此指針可以指向它的派生類,進(jìn)而實(shí)現(xiàn)多態(tài)性。

由此可知,抽象類區(qū)別于其他類的最根本的特征是不能定義對(duì)象。因此也一般將抽象類的構(gòu)造函數(shù)說(shuō)明為保護(hù)的訪問(wèn)控制。

23.BB)【解析】數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織

的、可共享的大量數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個(gè)應(yīng)用程序所共享,所以數(shù)據(jù)庫(kù)技術(shù)的根本日標(biāo)是解決數(shù)據(jù)共享問(wèn)題。

24.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

25.a=newint(B)deleteaa=newint(B)\r\ndeletea解析:C++中new和delete的使用有如下幾種:①a=newint;deletea;②a=newint(10);deletea;③a=newint[10];delete[]a;。

26.流流解析:在C++中,對(duì)文件的操作是由文件流完成的。文件流類在流與文件之間建立鏈接。

27.類類

28.傳地址傳地址解析:本題考查的是傳值調(diào)用和傳址調(diào)用的區(qū)別——傳值調(diào)用只是進(jìn)行值的簡(jiǎn)單復(fù)制,返回之后不會(huì)改變?cè)瓉?lái)的值;而傳址調(diào)用是把參數(shù)的地址傳入,會(huì)改變?cè)瓉?lái)的值。

29.有窮性有窮性解析:算法的四個(gè)基本特性包括:可靠性、確定性、有窮性和擁有足夠的情報(bào),其中,算法的有窮性指的是算法必須在有限的時(shí)間內(nèi)完成,即算法必須在執(zhí)行有限個(gè)步驟之后終止。

30.s=7

31.驅(qū)動(dòng)模塊驅(qū)動(dòng)模塊解析:在進(jìn)行模塊測(cè)試時(shí),要為每個(gè)被測(cè)試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊。其中驅(qū)動(dòng)模塊的作用是將測(cè)試數(shù)據(jù)傳送給被測(cè)試的模塊,并顯示被測(cè)試模塊所產(chǎn)生的結(jié)果。

32.PelloPello解析:注意,兩個(gè)字符串都沒(méi)有名字,屬字符串常量,在內(nèi)容中是同一份內(nèi)容。因此,對(duì)strl進(jìn)行重新賦值,僅僅替換了該字符數(shù)組的第一個(gè)字符。兩個(gè)指針指向同一個(gè)字符串,因此輸出為Pello。

33.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)解析:任何一個(gè)大型的程序都由三種基本結(jié)構(gòu)所組成,由這些基本結(jié)構(gòu)順序地構(gòu)成了一個(gè)結(jié)構(gòu)化的程序。事實(shí)上,程序設(shè)計(jì)語(yǔ)言僅僅使用順序、選擇和循環(huán)三種基本結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。

34.6

35.2m-12m-1解析:對(duì)于深度為m的滿二叉樹,其節(jié)點(diǎn)數(shù)為2m-1,這是滿二叉樹的性質(zhì)之一。36.(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)”。

37.(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ù)沒(méi)有參數(shù)。由第2處“TC::display”后的語(yǔ)句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問(wèn)題,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”。

38.(1)應(yīng)改為“catch(char*s)”。(2)應(yīng)改為“cateh(inti)”。

(3)應(yīng)改為“catch(…)”。

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

39.(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);”語(yǔ)句中“sizeof(s1)==3”為假,這會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個(gè)尾符,它的長(zhǎng)度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說(shuō)明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語(yǔ)句說(shuō)明23是字符,所占存儲(chǔ)空間為1,所以修改為“assert(sizeof(s3)==1);”。

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處的語(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]);”。

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

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

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

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

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

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

\n【解析】本題第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);”。

45.(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;”。46.(1)“A(intx){a=x;}”。(2)“A1(intx,inty):A(y){b=x;}”。(3)“A2(intx,inty,intz):A1(y,z){c=x;}”。(4)“cout<<geta<<""<<getb<<""<<c<<endl;”?!窘馕觥勘绢}第1處要求定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a,構(gòu)造函數(shù)沒(méi)有返回值類型,所以應(yīng)填“A(intx){a=x;}”。第2處第3處根據(jù)繼承中對(duì)象的初始化語(yǔ)法規(guī)則可知。第4處要求調(diào)用基類成員函數(shù),由于都是公有繼承,ge-ta、getb都是自身類的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論