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

下載本文檔

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

文檔簡介

2021年浙江省湖州市全國計算機(jī)等級考試

C++語言程序設(shè)計真題(含答案)

學(xué)校:班級:姓名:考號:

一、1.選擇題(10題)

1.下列描述正確的是()。

A.表示m>n為true或m<n為true的表達(dá)式為m>n&&m<n

B.switch語句結(jié)構(gòu)中必須有default語句

C.if語句結(jié)構(gòu)中必須有else語句

D.如果至少有一個操作數(shù)為true,則包含運算符的表達(dá)式為true

2.已知有定義:

constintD=5;

inti=1;

doublef=0.32;

charc=15;

則下列選項錯誤的是

A.++i;B.D——;C.c++;D?——f;

3.若有intx=2,y=3,z=4,m;則在計算表達(dá)式m=(x<y)?z+2:z-4后,

m的值為o

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

4.下列敘述中正確的是

A.黑箱(盒)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征

B.黑箱(盒)測試方法主要考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征

C.白箱(盒)測試不考慮程序內(nèi)部的邏輯結(jié)構(gòu)

D.上述三種說法都不對

5.下列說法中錯誤的是()。

A.公有繼承時基類中的public成員在派生類中仍是public的

B.公有繼承時基類中的private成員在派生類中仍是private的

C.私有繼承時基類中的public成員在派生類中是private的

D.保護(hù)繼承時基類中的public成員在派生類中是protected的

6.下列語句中正確的是

A.char*myString=''Hello-World!'';

B.charmyString="Hello-World!";

C.charmyString[ll]=,,Hello-World!;

D.charnlyString[12]="Hello-World!";

7.有以下程序:#include<iostream>usingnamespacestd;classTestClass

{public:TestClass(intn){number=n;}〃拷貝構(gòu)造函數(shù)

TestClass(TestClass&other){number=other.number;}?TestClass(){}

private:intnumber;};TestClassfun(TestClassP){TestClasstemp(p);return

temp;}intmain(){TestClassobjl(10),obj2(0);TestClassobj3(obj1);

obj2=fun(obj3);return0:}程序執(zhí)行時,TestClass類的構(gòu)造函數(shù)被調(diào)用的

次數(shù)是()。

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

8.關(guān)于虛函數(shù),下列表述正確的是()。

A.如果重定義虛函數(shù)時使用了保留字virtual,則該重定義函數(shù)仍然是虛

函數(shù)

B.虛函數(shù)不得聲明為靜態(tài)函數(shù)

C.虛函數(shù)不得聲明為另一個類的朋友函數(shù)

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

9.下面程序的執(zhí)行結(jié)果是#include"iostream.h"void

main(){int*p,r;p=newin;*p=20;

r=sizeof(*p);cout<<r<<endl;delete

P;1

A.程序錯誤B.內(nèi)存為20地址的大小.C.20D.4

10.下列描述中正確的是()o

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

二、單選題(13題)

11.下面有關(guān)重載函數(shù)的說法中正確的是

A.重載函數(shù)必須具有不同的返回值類型

B.重載函數(shù)形參個數(shù)必須不同

C.重載函數(shù)必須有不同的形參列表

D.重載函數(shù)名可以不同

12.若磁盤上已存在某個文本文件,其全路徑文件名為d:\shiti\tes.txt,

下列語句中不能打開該文件的是()o

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");

13.有下列程序:

#include<stdiO.h>

voidmain()

{inta=S,b=l,t;

t=(a?2)|b;printf("%d\n",t);

)

程序運行后的輸出結(jié)果是()oA.21B.llC.6D.1

14.下面關(guān)于類和對象的描述中,錯誤的是()。

A.類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量

B.類和對象之間的關(guān)系是抽象和具體的關(guān)系

C.對象是類的實例,一個對象必須屬于一個已知的類

D.類是具有共同行為的若干對象的統(tǒng)一描述體

15.

21.可以用p.a的形式訪問派生類對象p的基類成員a.其中a是().

A.私有繼承的公有成員B.公有繼承的私有成員

C.公有繼承的保護(hù)成員D.公有繼承的公有成員

16.已知一函數(shù)的形參說明為intarr[5][6],則與此等效的形參說明為

()o

A.intarr[][]B.int[5][]C.int*a[6]D.int(*a)[6]

17.下列程序的運行結(jié)果為()。#include

voidmain{inta=2:intb=a+l:cout<<a/b<<endl:A.O.66667B.OC.O.7

D.O.66666666...

18.在下列枚舉符號中,用來表示“相對于當(dāng)前位置”文件定位方式的是

()O

A.ios_base::cur

B.ios_base::beg

C.ios_base::Out

D.ios_base::end

19.下列有關(guān)繼承和派生的敘述中,正確的是()。

A.派生類不彘訪問基類的保護(hù)成員

B.作為虛基類的類不能被實例化

C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)

D.虛函數(shù)必須在派生類中重新實現(xiàn)

20.在“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名

用“”括起時,尋找被包含文件的方式是

A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄

B.先在源程序所在的目錄搜索,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當(dāng)前目錄

21.若有以下定義:chars(10)="program",t[]="test";則下列選項中對

字符串操作錯誤的是()。

A.strcpy(s,t);B.strcat(s,t);C.cout<<strlen(s);D.gets(s);

22.建立派生類對象時,3種構(gòu)造函數(shù)分別是a(基類的構(gòu)造函數(shù))、b(成員

對象的構(gòu)造函數(shù))、C(派生類)構(gòu)造函數(shù)),這3種構(gòu)造函數(shù)的調(diào)用順序為

()o

A.abCB.aCbC.CabD.Cba

23.若在表達(dá)式y(tǒng)/x中,“/”是作為成員函數(shù)重載的運算符,則該表達(dá)

式還可以表示為

A.x.operator/(y)

B.operator/(x,y)

C.y.operator/(x)

D.operator/(y,x)

三、2.填空題(12題)

24.以下程序輸出的結(jié)果是[】。

#include<iostream,h>

voidmain()

(

inta=5,b=4,c=3,d;

d=(a>b>C);

cout<<d;

)

25.C++語言中關(guān)鍵字運算符有new,delete和[]o

26.下列程序編譯錯誤,因為add函數(shù)返回值是一個引用,故對return

后返回值的要求是【]o

#include<iostream,h>

int&add(intx,inty)

(

returnx+y;

1

voidmain()

inti=3,j=19;

cout<<(add(i,j)+=20)<<endl;

27.利用表達(dá)式a[i]可以訪問int型數(shù)組a中下標(biāo)為i的元素。在執(zhí)行了

語句int*p=a后,利用指針p也可訪問該元素,相應(yīng)的表達(dá)式是_____o

28.程序的測試方法分為靜態(tài)分析和動態(tài)分析。使用測試用例在計算機(jī)

上運行程序,使程序在運行過程中暴露錯誤,這種方法稱為【]o

29.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的

邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

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

31.若結(jié)點的存儲地址與其關(guān)鍵字之間存在某種映射關(guān)系,則稱這種存

儲結(jié)構(gòu)為【】。

32.C++中封裝性、繼承性和【】是面向?qū)ο笏枷氲闹饕卣鳌?/p>

33.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的集合。

34.友元類的所有成員函數(shù)都是另一個類的【】。

35.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)

的動態(tài)存儲空間,請?zhí)羁铡?/p>

st=(char*)【];

四、程序改錯題(10題)

36.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:

number=l

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

II********epj^or********

TCobjl;

objl.Print;

TCobj2(3);

II********epj^or********

objl.number=10;

II********ej*j*0]*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯誤,請改正程序中的錯誤,使得程序輸出:

9,8,7,6,5

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

可。其他的語句不能修改。

試題程序:

#include(iostream.h>

classTC

I********epj*or********I

TC(inti)

(

m_i=i;

)

voidprint

(

cout?-m_i?,;

)

public:

intm_i;

intmain

!********6j*j*or********!

inti;

TC04(10);

while(i>5)

!**************I

1++

04.print;

cout?endl;

returnO;

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

運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為

Constructor,i=0,

Destructor

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

可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

?TC;

};

/I******ej*por******

TC:TC

(

cout?"Constructor"?",";

i=0;

I/******ej*j^0r******

TC:display

(

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

)

I/******ej^0r******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

)

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序

要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可

能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出

到屏幕中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******err()r******的下面。

試題程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

/I********epj*or********

cin.getline(str,120);

II********epj^or********

while(str)

/I********epj*or********

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

40.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

//********epj^or********

catch(chars)

(

cout?s?endl;

try

(

throw((int)0);

/j********epj'or********

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

II**************

catch

cout?"ERROR"?endl;

returnO;

)

41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:

number=l

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

}

intGetNumberconst

retumnumber;

voidPrintconst

cout?"number="?number?endl;

)

private:

intnumber;

voidmain

II********ep^or********

TCobjl;

objl.Print;

TCobj2(3);

II********ep^or********

objl.number=10;

II********ej*j*or*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實

現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在

//************白勺-?日j°

試題程序:

#include<iostream>

#include<fstream>

/I********ep^or********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

/I********ep^or********

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

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

II**************

outl.puts(s[i]);

}

outl.close;

)

voidClearFile

(

ofstreamoutl;

outl.open("l.txt");

outl.close;

intmain

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為

100

37

32

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

可。

試題程序:

#include<iostream.h>

//******epj*or******

voidmain

(

I/******epj^or******

intm=0142:

/I******epj*or******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

);

1I******ej*j*or******

cout?"Constructor"?",";

i=0;

)

II******ej*^*or******

TC:display

(

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

}

II**********

TC:TC

(

COUI?"Destructor"?endl:

}

voidmain

(

TCa;

a.display;

)

45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)

構(gòu),錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

II********ej*j*01********

catch(chars)

(

cout?s?endl;

try

(

throw((int)0);

II**************

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

//********epj^or********

catch

cout?"ERROR"?endl;

returnO;

五、綜合應(yīng)用題(2題)

46.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。其中定

義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出

一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及

總個數(shù),同時允許退貨,請按照以下的操作,把類補(bǔ)充完整。

⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型

變量A11N0,請在注釋1后添加適當(dāng)?shù)恼Z句。

(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加

到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。

(3)在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請

在注釋3后添加適當(dāng)?shù)恼Z句。

(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。

注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其

他的程序代碼。

試題程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

(

//********2********

AllWeight+=w:

AllNo++:

)

?TCFruit

(

//********3********

A11Weight-=Weight:

)

voiddisplay

('

cout?"SellaFruitwith"?Weight?"k9"<<

endl;

cout<<"Allsellnumber:"?AllNo?endl;

cout?"Allsellweight:"<<AllWeight?"k9"?

endl?endl;

)

};

II********4********

floatTCFruit::AllWeight=O.0;

intmain

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程

proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個

類的賦值運算符成員函數(shù)Operator:,以實現(xiàn)深層復(fù)制。

要求:

,力****************666*************"J^間o不多改的部

分。

注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile

已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

intn;//動態(tài)數(shù)組的元素個數(shù)

int*p;〃動態(tài)數(shù)組首地址

CDeepCopy(int);

CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);//賦值運算符函數(shù)

);

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}〃構(gòu)造函數(shù)實現(xiàn)

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃賦值運算

符函數(shù)實現(xiàn)

〃//半半舉”舉舉舉舉舉舉舉舉舉

//***********666***********

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.p[O]=666;〃對象a,d數(shù)組元素的賦值

CDeepCopyb(3);//調(diào)用賦值運算符函數(shù)

a.p[O]=88;b=a;

cout?b.p[O];〃顯示內(nèi)層局部對象的數(shù)組元素

cout?d.p[O];//顯示d數(shù)組元素a.p[O]的值

cout?”dfadeaway;\n";

cout?a.p[0];//顯示a數(shù)組元素a.p[0]的值

,,,,

writeToFile();

return0;

)

六、3.綜合應(yīng)用題(2題)

48.使用VC6打開考生文件夾下的工程test26_3o此工程包含一個

test26_3.cpp,其中定義了類queue,但該類的定義并不完

整。請按要求完成下列操作,將程序補(bǔ)充完整。

⑴完成類queue的無參數(shù)的構(gòu)造函數(shù)的定義,要求把數(shù)據(jù)成員bl和el

都初始化為0,同時輸出queueinitializedo請在注釋“〃**1**”之后添加

適當(dāng)?shù)恼Z句。

(2)完成類queue的成員函數(shù)qput(intj)的定義它的功能是把新的元素

加入隊列,過程是先依據(jù)bl的值判斷數(shù)組是否已經(jīng)滿了,如果是就輸出

queueisfull,否則bl自加一,并且把參數(shù)j的值存入bl指向的數(shù)組元

素中,請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成類queue的成員函數(shù)qget()的定義,它的功能是把隊列開頭的元

素提取出隊列,并返回該值,過程是先比較el和bl的值判斷隊列是否

已空,如果是就輸出queueisempty,否則el自加一,并且把el指向的

數(shù)組元素返回,請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。

程序輸出結(jié)果如下:

queueinitialized

queueinitialized

3311

4422

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

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

#include<iostream.h>

classqueue

(

intq[100];

intbl,el;

public:

queue();

voidqput(intj);

intqget();

);

queue::queue()

〃**1**

1

voidqueue::qput(intj)

(

〃**2**

(

cout<<"queueisfull\n";

return;

)

bl++,

q[bi]=j;

intqueue::qget()

H**3**

(

cout<<"queueisempty\n";

return0;

)

el++;

returnq[el];

)

voidmain()

(

queueaa,bb;

aa.qput(ll);

bb.qput(22);

aa.qput(33);

bb.qput(44);

cout<<aa.qget()<<""<<aa.qget()<<"\n";

cout<<bb.qget()<<""<<bb.qget()<<"\n";

49.使用VC6打開考生文件夾下的工程test29_3o此工程包含一個

test29_3.cpp,其中定義了二維坐標(biāo)類Coordinate和三維坐標(biāo)類

ThreeDCoord,其中ThreeDCoord類由Coordinate類public派生,但兩

個類的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。

⑴定義類Coordinate的保護(hù)數(shù)據(jù)成員x和y,它們都是int型的數(shù)據(jù),

代表二維坐標(biāo)的橫縱坐標(biāo)值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。

(2)根據(jù)類Coordinate定義后的成員函數(shù)Display的實現(xiàn),補(bǔ)充該函數(shù)在

類Coordinate定義體內(nèi)的聲明,Display為二維坐標(biāo)類的虛函數(shù)。請在注

釋“〃**2**。,,之后添加適當(dāng)?shù)恼Z句。

(3)完成二維坐標(biāo)類Coordinate的構(gòu)造函數(shù),將參數(shù)a和b分別賦值給數(shù)

據(jù)成員x和yo請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。

(4)根據(jù)ThreeDCoord類構(gòu)造函數(shù)的聲明,補(bǔ)充ThreeDCoord構(gòu)造函數(shù)

的實現(xiàn),參數(shù)a和b通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類的數(shù)據(jù)成員

x和y,c賦值給數(shù)據(jù)成員2。請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下;

[1,2]

[3,4,5]

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

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

#include<iostream,h>

classCoordinate

{protected:

〃**]**

public:

Coordinate(inta=0,intb=0);

〃**2**

);

Coordinate::Coordinate(inta,intb)

(

〃**3**

)

voidCoordinate::Display()const

cout<<'['<<x<<","<<y<<']'<<endl;

classThreeDCoord:publicCoordinate

intz;

public:

ThreeDCoord(inta=0,intb=0,intc=0);

virtualvoidDisplayOconst;

);

〃**4**

voidThreeDCoord::Display()const

(

cout<<'['<<x<<","<<y<<","<<z<<']'<<

endl;

}

voidmain()

(

Coordinatec(l,2);

ThreeDCoordt(3,4,5);

c.Display();

t.Display();

參考答案

l.D解析:本題主要考查Ct+語言的基本語法,選項A中應(yīng)該為m>

n||m<n:選項B中default語句可有可無;選項C中訂可以單獨作為一

條語句,不必須和else搭配。

2.B解析:“+-”運算符不能用于常量。

3.A

4.A解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只

是根據(jù)程序功能導(dǎo)出測試用例,選項A是正確的,選項B錯誤。白箱

測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,選項C錯誤。

正確答案為A。

5.B解析:公用繼承時基類中的公用成員和保護(hù)成員在派生類中保持原

有訪問屬性,其私有成員仍為基類私有。私有繼承時,基類的公有成員

和保護(hù)成員在派生類中成了私有成員,其私有成員仍為基類私有。受保

護(hù)的繼承時,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其

私有成員認(rèn)為基類私有。

6.A解析:選項C、D的數(shù)組下標(biāo)超界,?對于選項B,不能將字符串賦

值給字符,可以將一個字符串賦值給字符指針,指針指向字符數(shù)組的首

地址。

7.C解析:objl(10)執(zhí)行一次構(gòu)造函數(shù),obj2(0)也執(zhí)行一次構(gòu)造函數(shù);

obj3(objl)t3t.objl作為參數(shù)執(zhí)行一次構(gòu)造函數(shù);fun(obji3)中的temp(p)

將執(zhí)行一次構(gòu)造函數(shù),而fun本身是以按值傳遞參數(shù),形參在fun函數(shù)

內(nèi)也要分配獨立的空間,所以也要執(zhí)行一次構(gòu)造函數(shù),其返回結(jié)果也是

TestClass類型的,同樣需要執(zhí)行一次構(gòu)造函數(shù),所以一共要執(zhí)行4次。

8.B

9.D解析:理解sizeof的用法,它可以運算出各種數(shù)據(jù)類型所占內(nèi)存空

間的多少。注意:選項C)中是指針p所指向的內(nèi)存地址中內(nèi)容是20。

注意:在用完申請后的內(nèi)存應(yīng)立刻釋放。

10.C

\r\n

軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計算機(jī)

軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)

工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需

求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以

保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)

生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項目的管

理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的

部分問題。因此選項C正確。

11.C解析:函數(shù)重載允許用同一個函數(shù)名定義多個函數(shù)。被重載的函數(shù)

必須要有不同的形參列表。不可以根據(jù)函數(shù)返回值類型來重載函數(shù)。

12.A

13.A

Ao【解析】本題考查移位運算符在程序中對5邏輯左移2位,其值擴(kuò)

大4倍等于20,然后再進(jìn)行按位運算,其值等于21。

14.A解析:在C++語言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及

操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。

15.D

16.D解析:二維數(shù)組可以看作是一維數(shù)組的擴(kuò)展。選項D表示的是一

個一維數(shù)不清組,里面每個元素是一個指針,而指針肯定指向某個地址,

從而完成二維數(shù)組的擴(kuò)展。考生要注意選項C中*和口的運算優(yōu)先級。

17.B

表達(dá)式值的類型是由操作數(shù)的類型決定的,因為本題的兩個數(shù)都是int

型的,所以得出的結(jié)果也為int型,即去掉小數(shù)點后的部分,只取商的

整數(shù)部分。

18.A

Ao【解析】主要考查文件流的定位問題。冀中iosbase::beg表示相

對于文件首,ios_base::cur表示相對于當(dāng)前位置(負(fù)數(shù)表示當(dāng)前位置

之前),ios_base::end表示相對于文件尾,ios_base::out表示在文

件流的建立中為文件的輸出而打開。

19.C

派生類可以訪問基類的保護(hù)成員,而不能訪問基類的私有成員。作為

虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么

仍然使用基類的成員函數(shù)。

20.B

21.B

22.A

本題考查的是在繼承中派生類的對象調(diào)用構(gòu)造函數(shù)的順序,應(yīng)該是先

調(diào)用基類的構(gòu)造函數(shù),然后是成員中的對象對應(yīng)類的構(gòu)造函數(shù),最后

是派生類自己的構(gòu)造函數(shù)。

23.C

解析:“/”是一個二元運算符,作為成員函數(shù)重載時形參表中只有一

個參數(shù),對應(yīng)于第二操作數(shù),而第一操作數(shù)就是對象本身,以this指

針的形式隱藏在形參表中。本題中,y為第一操作數(shù),x為第二操作

數(shù),故正確答案為C。

24.00解析:水題的關(guān)鍵在于對變量c的賦值運算:

d=(a>b>c)

d=(5>4>3)

先算5>4,為真,得1,即:d=(l>3),此時1>3,為假,得0。

25.sizeofsizeof解析:C++語言中關(guān)鍵字運算符有3個分別new,delete

和sizeof。new是申請內(nèi)存,delete是釋放內(nèi)存,sizeof是求字節(jié)數(shù)。

26.不能是表達(dá)式不能是表達(dá)式解析:引用是變量的別名,其實質(zhì)是變

量的地址。return在返回值時,如果其后為表達(dá)式,則系統(tǒng)為該表達(dá)式

生成一個臨時變量用于存放該表達(dá)式的結(jié)果,函數(shù)執(zhí)行完畢之后該變量

被系統(tǒng)回收,因此,返回的該變量的地址對調(diào)用函數(shù)來說已經(jīng)沒有意義

了。

27.*(p+i)*(p+i)解析:指針p指向數(shù)組首地址,p+i指向第i個元素地

址,貝U*(p+i)表示第i個元素的值。

28.動態(tài)分析動態(tài)分析解析程序的測試方法分為靜態(tài)分析和動態(tài)分析。

使用測試用例在計算機(jī)上運行程序,使程序在運行過程中暴露錯誤,這

種方法稱為動態(tài)分析。

29.物理獨立性物理獨立性解析:數(shù)據(jù)獨立性是數(shù)據(jù)與程序間的互不依

賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序而不依賴于應(yīng)用程序。也就是說,

數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。數(shù)據(jù)

獨立性一般分為物理獨立性與邏輯獨立性兩級。

30.operator+(operator*(yz))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)o

31.順序存儲結(jié)構(gòu)順序存儲結(jié)構(gòu)

32.多態(tài)性多態(tài)性解析:面向?qū)ο笙到y(tǒng)包含了三個特征-封裝性、繼承性

和多態(tài)性,這三個特征可以很好的實現(xiàn)數(shù)據(jù)抽象,進(jìn)行行為共享,完成

進(jìn)化求解和描述一個系統(tǒng)的確定行為。

33.軟件工具軟件工具解析:軟件開發(fā)環(huán)境或稱軟件工程環(huán)境是全而支

持軟件開發(fā)全過程的軟件工具集合。這些軟件工具按照一定的方法或模

式組合起來,支持軟件生命周期內(nèi)的各個階段和各項任務(wù)的完成。

34.友元函數(shù)友元函數(shù)解析:C++語言中友元類中的函數(shù)都是另一個類

的友元函數(shù)。

35.malloc(ll)或malloc(sizeof(char)*11)malloc(11)或

malloc(sizeof(char)*11)解析:malloc函數(shù)的參數(shù)可以是一個具體的常數(shù),

也可以是一個表達(dá)式。在本題中,可以是malloc(ll),也可以借助于sizeof

運算符來表示。

36.⑴應(yīng)改為“TCobjl(l);

(2)應(yīng)改為“Objl.SetNumber(lO);"。

(3)應(yīng)改為“0bj2.SelNumber(lOO);

【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)

TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個

輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處

的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C+

十中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為

,5

“objl.SetNumber(lO);O類是對象的抽象,而對象是類的具體實

例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,

這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為

“obj2.SetNumber(lOO);

37.⑴應(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:否則該類無法被實例

化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(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)不會退出。

38.⑴應(yīng)改為“TC::TC”。

(2)應(yīng)改為"voidTC::display”。

(3)應(yīng)改為“TC::?TC”。

【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名

和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個

類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改

為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后

的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯

誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為

“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是

在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名

相同,并在前面加“?”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處

的語句應(yīng)改為“TC::?TC”。

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

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

,?

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

【解析】本題中要求以輸入字符“?”為結(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(st巾]>=a)”語句是判斷字符str用是否為小寫字符,而現(xiàn)有的語句只

是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為

5,

“if(str[i]>=a&&str[i]>=z)o

40.⑴應(yīng)改為"catch(char*s)”。

(2)應(yīng)改為"cateh(inti)”。

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

【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");",其

中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類

型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語

句修改為“catch(char*S)”。第2個標(biāo)識前的異常拋出語句為

“throw((int)0);”,其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)

該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配

的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處

的語句修改為"catch(inti)”。如果在catch子句中沒有指定異常信息的類

型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修

改為“catch(…)”。

41.⑴應(yīng)改為"TCobjl(l);

\n(2)應(yīng)改為“Objl.SetNumber(lO);”。

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

\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)

TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸

出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處的

“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中

成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為

,5

“objl.SetNumber(lO);0類是對象的抽象,而對象是類的具體實例。

第3處叮5$61m11^1'(100);”語句中的立為類,并不是對象,這里

應(yīng)該使用定義的對象,即obj2,所以將語句修改為

“obj2.SetNumber(lOO);

42.(1)應(yīng)改為"usingnamespacestd;

(2)應(yīng)改為"outl.open("1.txt",ios::binaryIios::app);"。

5,

(3)應(yīng)改為“outl.put(s[i]);o

【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,

對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處

的語句修改為"usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open

中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt",

binaryIapp);”語句缺少類ios,即第2處的語句修改為

“outl.open("l.txt",ios::binaryIios::app);“。第3個標(biāo)識應(yīng)

該用流成員函數(shù)put輸出字符,所以第3處的語句修改為

“outl.put(s[i]);?,o

43.(l)“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,因

溫馨提示

  • 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

提交評論