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頁,還剩42頁未讀, 繼續(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題)

i.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測

試用例的測試方法是o

A.黑箱測試法B.白箱測試法C.錯誤推測法D.安裝測試法

2.類的說明如下,請指出錯誤的地方oclassMyclass{inta=lll;

public:Myclass(intx,inty);Myclass(intval);~Myclass();}

A.inta=lll;

B.Myclass(Intx,inty);

C.Myclass(intval);

D.?Myclass。;

3.C++對C語言作了很多改進(jìn),下列描述中,()使得C++語言發(fā)生了質(zhì)

變,即從面向過程變成了面向?qū)ο蟆?/p>

A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)C.規(guī)

定函數(shù)說明必須用原型D.引進(jìn)了類和對象的概念

4.關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是o

A.A.實(shí)體完整性約束B.參照完整性約束C.域完整性約束D.用戶自定

義的完整性約束

5.對于拷貝構(gòu)造函數(shù)和賦值操作的關(guān)系,正確的是

A.拷貝構(gòu)造函數(shù)和賦值操作是完全一樣的操作

B.進(jìn)行賦值操作時,會調(diào)用類的構(gòu)造函數(shù)

C.當(dāng)調(diào)用拷貝構(gòu)造函數(shù)時,類的對象正在被建立并被初始化

D.拷貝構(gòu)造函數(shù)和賦值操作不能在同一個類中被同時定義

6.計(jì)算斐波那契數(shù)列第n項(xiàng)的函數(shù)定義如下:intfib(int

n){if(n==O)retum1;elseif(n==1)return2;elsereturnfib(n-l)+fib(n-2);}

若執(zhí)行函數(shù)調(diào)用表達(dá)式fih(2),函數(shù)fih被調(diào)用的次數(shù)是

A.lB.2C.3D.4

7考慮函數(shù)原型voidtest(inta,intb=7,charz=*),下面的函數(shù)調(diào)用中,屬

于不合法調(diào)用的是()o

A.test(5);B.test(5,8);C.test(6,#);D.test(O,0,*);

8.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是

()o

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和

DBMSD.沒有任何關(guān)系

9.循環(huán)鏈表的主要優(yōu)點(diǎn)是()

A.不再需要頭指針了

B.從表中任一結(jié)點(diǎn)出發(fā)都能訪問到整個鏈表

C.在進(jìn)行插入、刪除運(yùn)算時,能更好的保證鏈表不斷開

D.已知某個結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件

10.控制格式輸入/輸出的操作子中,設(shè)置域?qū)挼暮瘮?shù)是

A.wsB.octC.setfill(int)D.setw(int)

二、單選題(13題)

11.有下列程序:#include

voidmain()

#include<stdiO.h>

voidmain()

{intx=l,y=2,z=3;

if(x>y)

if(yVz)print{(〃%d〃,++z);

elseprintf(〃%d〃,++y);

printf%d\n”,x++);

程序的運(yùn)行結(jié)果是()oA.331B.41C.2D.l

12.下列選項(xiàng)中正確的定義語句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

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

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

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

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

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

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

A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進(jìn)行初始化

B.靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用

C.靜態(tài)數(shù)據(jù)成員不能受private控制符的作用

D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用

15.下面程序輸出的結(jié)果為()。

#include"iostream.h"

classA

{public:

A(){cOUt<<"CLASSA"<<endl;}

?A(){}};

ClaSSB:publicA

{public:

B(){cout<<"CLASSB"<<endl;}

?B(){}};

voidmain()

{A*P;

P=newB:

B*q:

q=newB;}

A.CLASSA

B.CLASSACLASSBCLASSBCLASSB

C.CLASSA

D.CLASSACLASSBCLASSBCLASSACLASSBCLASSBCLASSB

16.若有以下程序:

nwin()

(intk-2,i=2.m:

m=(k+=i?=k)i

coutVVmVV"JVViVVcndh

J

執(zhí)行后的輸出結(jié)果是()。

A.8,6B.8,3C.6,4D.7,4

17.耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的

是_________O

A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性

B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性

C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度

D.內(nèi)聚性是指模塊間互相連接的緊密程度

18.若有以下定義:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12);charc='a',d,g;

則下列表達(dá)式中,結(jié)果為4的是()。

A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]

19.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過

發(fā)送()。

A.調(diào)用語句B.命令C.口令D.消息

20.若有表達(dá)式“(w)?(-x):(++y)”,則其中與w等價的表達(dá)式是()。

A.w==lB.w==0C.W!=lD.W!=0

21.有如下程序:

#include<iostream>

usingnamespacestd;

classGA{

public:

virtualintftreturn1;}

};

classGB:publicGA{

public:

virtualintf{return2;}

};

voidshow(GAg){eout?9.f;}

voiddisplay(GA&g){cout?9.f;}

intmain

(

GAa;show(A.;display(A.;

GBb;show(B.;display(B.;

return0;

)

執(zhí)行這個程序的輸出結(jié)果是()。A.llllB.1211C.1112D.1212

22.對于一個類定義,下列敘述中錯誤的是

A.如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝構(gòu)造函數(shù)。

B.如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個缺省的構(gòu)造函

數(shù)。

C.如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的構(gòu)造函數(shù)和一個拷

貝構(gòu)造函數(shù)。

D.如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造

函數(shù)。

23.下列程序的運(yùn)行結(jié)果是()。

#include<iostream.h>

classA

inta;

public:

A{a=O;}

A(intaA.

a=aa;

cout?a++:

};

voidmain

AX,Y(2),z(3);

cout?end

A.00B.23C.34D.25

三、2.填空題(12題)

24.在面向?qū)ο蠓椒ㄖ?,類的?shí)例稱為。

25.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高和低冗余性、

數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。

26.類通過____與外界發(fā)生關(guān)系。

27.已知如下程序的輸出結(jié)果是23,請將畫線處缺失的部分補(bǔ)充完整。

#include<iostream>

usingnamespacestd;

classMyClass{

public:

voidPrint()const{eout<<23;}

);

intmain(){

MyClass*P=newMyClass();

.Print();

return0;

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

29.從一個或多個基本表導(dǎo)出的表是一個【】,它是一個虛表。

30.[]是當(dāng)前軟件開發(fā)環(huán)境中富有特色的研究工作和發(fā)展方向。

31.語句cout<<'\n'還可表示為[]0

32.匯編語言是面向【】的,可以完成高級語言無法完成的特殊功能,

如與外部設(shè)備之間的一些接口工作。

33.注釋一般分為序言性注釋和注釋。

34.為解決在多重繼承環(huán)境中因公共基類帶來的問題,C++語言

提供了虛基類機(jī)制。

35.下列程序的輸出結(jié)果是____o

#include<iostream.h>

voidmain()

(

chara[]="abcdabcabfgacd";

intil=0,i2=0,i=0;

while(a[i])

(

if(a[i]=="a")il++;

if(a[i]=="b")i2++;

i++;

cout<<il<<""<<i2<<endl;

)

四、程序改錯題(10題)

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

}

IJ********error*********

catch(chars)

(

cout?s?endl;

)

try

throw((int)0);

)

II********enor********

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

!!********enor********

catch

cout?"ERROR"?endl;

returnO;

)

37.使用VC++6.。打開考生文件夾下的源程序文件I.cpp,該程序運(yùn)

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

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

-TC;

);

!1******enor******

TC:TC

(

cout?"Constructor"?",

i=0;

)

1I******error******

TC:display

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

II******error******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

)

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

I********enor********/

staticintn=O:

CO

n++:

?CO

n—:

):

I********error********/

intCO::n;

voidmain

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

!********enor********/

eout?C.n?endl;

cout?C0::n?endl;

)

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

1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)

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

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

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

I!******error******白勺~~F甫*|

試題程序:

#include<iostream>

#include<fstream>

1I********error********

usingstd;

voidWriteFile(char*s)

ofstreamout1;

!1********e]T0j*********

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

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

(

II********ej*ror********

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;

)

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

1I********error********

cin.getline(str,120);

!1********enor********

while(str)

II********enor********

if(str[i])=a)

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

i++;

cout?str?endl;

return;

)

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

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

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

!********enor********/

TC(inti)

(

m_i=i;

)

voidprint

(

cout?—m_i?,;

)

public:

intm_i;

);

intmain

!********error********/

inti;

TC04(10);

while(i>5)

I********errOr********/

1++:

04.print;

)

cout?endl;

retumO;

)

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

1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)

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

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

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

II******error******的下面。

試題程序:

#include<iostream>

#include<fstream>

II********error********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

1I********error********

outl.open("l.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);

retumO;

)

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

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

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

到屏幕中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

II********enor********

cin.getline(str,120);

I!********error********

while(str)

!1********enor********

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

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

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

number=1

number=10

number=100

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

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

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

{

retumnumber;

)

voidPrintconst

(

cout?"number="?number?endl;

)

private:

intnumber;

};

voidmain

{

I!********error********

TCobjl;

objl.Print;

TCobj2(3);

II********error********

objl.number=10;

Ii********error*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

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

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

try

(

throw("error");

)

/*1**1**1**!**1*、上*1*7,*1**1**1**1**1*、1,

//個不不不■不平不個errcr個不不不不不不不

catch(chars)

{

cout?s?endl;

)

try

(

throw((int)0);

)

/*1>*1**1**1**1**1*、1,

//不不不不不不不個prrcr不不不不不不不不

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

}

/*1**1**1**1*、卜*1*、,,*1**1^>1*<1**1**1*、!,

//小不不小不下不不ermr不不不不不不不不

catch

(

cout?"ERROR"?endl;

returnO;

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

46.使用VC++6.。打開考生文件夾下的源程序文件3.cppo類

People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓

名,然后輸出這個姓名到屏幕。

其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完

整。

(1)完成類的構(gòu)造函數(shù)功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

(2)完成構(gòu)造函數(shù)對姓名的賦值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

(3)定義類的友元函數(shù)fun,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

(4)補(bǔ)充函數(shù)fun的年齡比較功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

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

他的程序代碼。

試題程序:

#include<iostream.h>

classPeople

(

public:

{

inti;

for(i=0;sUserName[i]!=O;i++)

{m_UserName[i]=sUserName[il;

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

m_Old=nOld;

)

private:

charm_UserName[32];

intm_01d;

);

voidfun(char*s,People&personl,People&person2

{

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

if

{

for(inti=0;personl.m_UserName[i]!=0;i+

+)

(

s[i]=personl.m_UserName[i];

s[i+l]=0;

fdr(inti=O;person2.m_UserName[i]!=0;i+

+)

{s[i]=person2.m_UserName[i];

s[i+l]=0;

)

)

}

voidmain

(

chars[32];

Peoplepl("abc",20);

Peoplep2("def,30):

fun(S,pl,p2);

cout?s?endl:

return;

)

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

proj3,此工程中包含一個源程序文件proj3.cpp,補(bǔ)充編制C++程序

proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存

放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并

輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。

要求:

補(bǔ)充編制的內(nèi)容寫在“〃***********與“//**********''兩行之間。實(shí)現(xiàn)

將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得

修改程序的其他部分。

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

writeToFile已經(jīng)給出并且調(diào)用。

//proj3.cpp

#include<iostream>

#include<fstream>

#include<catting>

usingnamespacestd;

classdoc

(

private:

char*sir;//文本字符串首地址

intlength;//文本字符個數(shù)

public:

〃構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字

符串首地址

doc(char*filename);

voidreverse;〃將字符序列反轉(zhuǎn)

一doc;

voidwriteToFile(char*filename);

};

doc::doc(char}filename)

(

ifstreammyFile(filename);

intlen=1001,tmp;

atr=newcharflen];

length=0;

while((trap=myFile.get)!=EOF)

strf1ength++]=trap;

str[length]=4\0,;

myFile.close;

)

voiddoc::reverse{

//將數(shù)組atr中的length個字符中的第一個字符與最后一個字符交換,

第二個字符與倒數(shù)第二個

〃字符交換

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

doc::?doe

{

delete[]str;

)

voiddoc::writeToFile(char*filename)

(

OfstreamoutFile(filename);

outFile?str;

outFile.close;

)

voidmain

{

docmyDoc(,,in.dat");

myDoc.reveme;

myDoc.writeToFilef'out.dat");

)

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

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

testl3_.cpp,其中定義了類Vector,但類的定義并不完整。請按要求完成

下列操作,將程序補(bǔ)充完整。

⑴完成構(gòu)造函數(shù)的定義,把數(shù)據(jù)成員size初始化為參數(shù)s的值,數(shù)據(jù)成

員buffer指向動態(tài)申請的int型size大小的空間。請?jiān)谧⑨尅啊?*1**”之

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

⑵完成拷貝構(gòu)造函數(shù)的定義,注意解決多次刪除的問題。請?jiān)谧⑨?/p>

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

⑶完成成員函數(shù)elem的定義,該函數(shù)返回buffer的第ndx個元素的值,

注意如果ndx超界,請輸出“errorinindex”。請?jiān)谧⑨尅?/**3**”之后添加

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

(4)完成析構(gòu)函數(shù)的定義,要求先將字符d打印在屏幕上,再釋放buffer

指向的空間。請?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下:

123456789101234567891Odd

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

源程序文件testl3_3清單如下:

#include<iostream.h>

#include<stdlib.h>

classVector

(

public:

Vector(ints=100);

Vector(Vector&v);

int&elem(intndx);

voiddisplay();

voidset();

?Vector();

protected:

intsize;

int"buffer;

);

Vnector::Vector(ints)

****

u

Vector::Vector(Vector&v)

(

〃**2**

1++

*(buffer+i)=*(v.buffer+i);

)

int&Vector::elem(intndx)

!

〃**3**

cout<<"errorinindex"<<endl;

exit(l);

)

returnbuffer[ndx];

}

voidVector::displayO

(

for(intj=0;j<size;j++)

cout<<elem(i)<<endl;

)

voidVector::set()

(

for(intj=0;i<size;j++)

elem(j)=j+l;

)

Vector::~Vector()

(

〃**4**

voidmain()

(

Vectora(10);

Vectorb(a);

a.set();

b.set();

a.displayO;

b.displayO;

)

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

序文件test25_3.cpp,其中定義了用于表示堆的類Set,但它的定義并不完

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

(1)完成成員函數(shù)intIsMemberOf(intn)的定義,該函數(shù)檢查參數(shù)n是否

在類的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,反之返回0o請?jiān)谧⑨?/p>

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

(2)完成成員函數(shù)intAdd(intn)的定義,如果參數(shù)n包含在類的數(shù)據(jù)成員

數(shù)組elems中則返回1如果數(shù)組超界則返回0,如果都不是,則將參數(shù)

n插入到elems中,下標(biāo)大小為類的數(shù)據(jù)成員PC,之后PC自加一。請?jiān)?/p>

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

(3)完成拷貝初始化構(gòu)造函數(shù)Set(Set&s)的定義,請?jiān)谧⑨尅啊?*3***之后

添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:

1

()

{1,2,3,4,5,6,7,8)

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

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

#include<iostream.h>

classSet

public:

Set(){PC=O;}

Set(Set&s);

voidEmpty(){PC=O;}

intIsEmptyO{returnPC==O;}

intIsMemberOf(intn);

intAdd(intn);

voidPrint();

private:

intelems[100];

intPC;

);

intSet::IsMemberOf(intn)

〃(**]**

if(elems[i]==n)

return1;

returnO;

)

intSet::Add(intn)

(

〃**2**

return1;

elseif(PC>=100)

returnO;

else

(

elems[PC++]=n;

return1;

)

)

Set::Set(Set&s)

(

〃**3**

for(inti=O;i<PC;i++)

elems[i]=s.elems[i];

)

voidSet::Print()

(

cout<

for(inti=O;i<PC-1;i++)

cout<<elems[i]<<

if(PC>O)

cout<<elems[PC-l];

cout<<"}"<<endl;

)

voidmain()

(

SetA;

cout<<A.IsEmptyO<<endl;

A.Print();

SetB;

for(inti=l;i<=8;i++)

B.Add(i);

B.Print();

參考答案

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

是根據(jù)功能導(dǎo)出測試用例。注意:白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)

的分析來選取測試用例,白箱測試也稱為邏輯覆蓋測試,故選項(xiàng)B)不正

確;錯誤推測法只是黑箱測試所使用的一種具體的方法,故選項(xiàng)C)不正

確,安裝測試是測試層次中的一種,它屬于高級測試,故選項(xiàng)D)不正確。

注意:常用的黑箱測試方法及其定義,白箱測試用例的準(zhǔn)則。

2.A

3.D解析:C++語言起源于C語言。C++是C語言的超集,即C語言是

C++語言的一個子集,同時C++語言與C語言是兼容的。C++對C語言

作了很多改進(jìn),引進(jìn)了類和對象的概念。

4.C

解析:關(guān)系模型允許定義3類數(shù)據(jù)約束,它們是實(shí)體完整性約束、參

照完整性約束及用戶自定義的完整性約束。其中前兩種完整性約束由

關(guān)系數(shù)據(jù)庫系統(tǒng)支持,對于用戶自定義的完整性約束,則由關(guān)系數(shù)據(jù)

庫系統(tǒng)提供完整性約束語言,用戶利用該語言給出約束條件,運(yùn)行時

由系統(tǒng)自動檢查。

5.C解析:在賦值操作中,將發(fā)生對象的拷貝操作,但并不說明兩者是

完全一樣的.一般情況下,如果紿類定義了賦值操作符,則應(yīng)該同時定

義合適的拷貝構(gòu)造函數(shù),除非系統(tǒng)默認(rèn)生成的拷貝構(gòu)造函數(shù)滿足賦值操

作。實(shí)際上,系統(tǒng)默認(rèn)的拷貝構(gòu)造函數(shù)僅僅將數(shù)據(jù)成員進(jìn)行簡單的對應(yīng)

賦值,而在多數(shù)特殊應(yīng)用中,這么簡單的對應(yīng)關(guān)系是不適用的,這就需

要程序員重新定義拷貝構(gòu)造函數(shù)。

6.C解析:f(2)=f(0)+f(l),所以應(yīng)該執(zhí)行3次。

7.C解析:本題考核函數(shù)的調(diào)用。題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在

C)選項(xiàng)的調(diào)用中,將會把字符型實(shí)參#賦值給整型形參b,這不符合參

數(shù)傳遞規(guī)則。

8.C

(10)0解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集

合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于

用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪

問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分

組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員

(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二

——軟件平臺(軟件)。

9.B解析:循環(huán)鏈表就是將單向鏈表中最后一個結(jié)點(diǎn)的指針指向頭結(jié)點(diǎn),

使整個鏈表構(gòu)成一個環(huán)形,這樣的結(jié)構(gòu)使得從表中的任一結(jié)點(diǎn)出發(fā)都能

訪問到整個鏈表。

10.D解析本題需要考生記憶一些輸入輸出控制操作子,oct為八進(jìn)制,

setfill為設(shè)置填充符,setw為設(shè)置域?qū)挕?/p>

11.D

Do【解析】C語言中規(guī)定,else與離它最近的if相匹配。\r\nx=l,

y=2,z=3,所以第一個if的條件(x>y)不成立,直接執(zhí)行printf("%d\

n",x+1);語句,輸出x的值1,再把x加1。

12.C

Co【解析】本題考查變量的定義。選項(xiàng)A是兩條語句,用分號隔

開,只定義了a為double型;選項(xiàng)B中,不允許這種聲明賦值方式,

語法錯誤;選項(xiàng)D中,類型與變量名之間不加逗號;選項(xiàng)C為正確

的。

13.A在基類中用virtual聲明成員函數(shù)為虛函數(shù),所以A是正確的。純

虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的虛函數(shù)。純虛函數(shù)是一種特

殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)。靜態(tài)數(shù)據(jù)成員函數(shù)只能在類外進(jìn)行初

始化。

14.D解析:靜態(tài)數(shù)據(jù)成員必須在類體外初始化,它是類的所有對象的共

有成員,需要使用類名調(diào)用,靜態(tài)數(shù)據(jù)成員的初始化與權(quán)限控制無關(guān)。

15.C

Co【解析】本題考查類的繼承、類的實(shí)例化和構(gòu)造函數(shù)、析構(gòu)函數(shù)的

調(diào)用方式以及何時調(diào)用。每實(shí)例化一個類就要調(diào)用其構(gòu)造函數(shù),結(jié)束

運(yùn)行該實(shí)例后調(diào)用析構(gòu)函數(shù)。

16.C

首先進(jìn)行括號內(nèi)的運(yùn)算,注意賦值表達(dá)式是從右向左進(jìn)行的。因此,

只要考生細(xì)心運(yùn)算就可以得到正確答案為Co

17.B模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與

其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到

高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有

利于提高模塊的獨(dú)立性,所以A錯誤,B正確。耦合性是模塊間互相連

接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合

的緊密程度,所以C與D錯誤。故答案為B選項(xiàng)。

18.D

19.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動

的,對象間的這種相互合作需要一個機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消

息。消息是一個實(shí)例與另一個實(shí)例之間傳遞的信息,它請求對象執(zhí)行某

一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

20.D

Do【解析】本題考查三目運(yùn)算等。條件表達(dá)式的格式為a?b;c。它

的含義是,當(dāng)a為真時,取b的值,否則取c的值。在C語言程序中

“為真”即“不等于零”,“為假”即等于0。所以和w等價的表達(dá)式是w

非零。

21.C

本題主要考察虛函數(shù)。虛函數(shù)指在某基類中聲明為virtual并在一一個

或多個派生類中被重新定義的成員函數(shù),本題中定義類GA的對象a,

執(zhí)行show(a)、display(a),輸出11,定義了類GB的對象b,執(zhí)行

show(b),仍然輸出1,display(b)執(zhí)行會調(diào)用派生類的f函數(shù),因?yàn)閒函

數(shù)為虛函數(shù),輸出2,所以本題答案為c。

22.B

解析:本題考查的知識點(diǎn)是:構(gòu)造函數(shù)。如果一個類中沒有定義任何

構(gòu)造函數(shù),編譯器將生成一個不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要

定義了一個任意的構(gòu)造函數(shù),就不會生成缺省構(gòu)造函數(shù)了。故本題應(yīng)

該選擇Bo

23.B

本題考查的是對構(gòu)造函數(shù)的掌握,另外“++”運(yùn)算符是右結(jié)合的,所以

在進(jìn)行輸出的時候都是先把原來的輸出后再自加1。

24.對象對象解析:在面向?qū)ο蟾拍钪?,所有的同類的?shí)體的抽象就構(gòu)

成一個類,而類被實(shí)例化就形成一個對象。

25.共享性共享性解析數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,

實(shí)現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要

目的。

26.接口接口解析:數(shù)據(jù)以及對數(shù)據(jù)的操作形成對象,對同類對象抽象

出其共性,形成類。類是通過接口與外界發(fā)生關(guān)系的。

27.(*P)

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

的友元函數(shù)。

29.視圖視圖解析:視圖是從一個或多個基本表中導(dǎo)出的虛表,它本身

不存儲數(shù)據(jù)。

30.計(jì)算機(jī)輔助軟件工程(CASE)計(jì)算機(jī)輔助軟件工程(CASE)解析:

CASE將各種軟件工具、開發(fā)機(jī)器和一個存放開發(fā)過程信息的中心數(shù)據(jù)

庫組合起來,形成軟件工程環(huán)境。

31.cout<<end!;cout<<endl;解析:\\n表示換行,end!也可表示換

行。注意:endl和'\\n,可以通用。

32.機(jī)器機(jī)器

33.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言

性注釋通常位于每個程序的開頭部分,給出程序的整體說明,?功能性注

釋的位置一般嵌在源程序體中,主要描述其后的語句或程序做什么。

34.二義性二義性

35.4343解析:分析while循環(huán)體可以判斷出:il用于統(tǒng)計(jì)字符串中字

符a的數(shù)量,i2用于統(tǒng)計(jì)字符b的數(shù)量。因此,考察數(shù)組a的內(nèi)容可得

其數(shù)量分別為4和3。

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

⑵應(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)識前的異常拋出語句為

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

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

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

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

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

改為“catch(...)"。

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

0⑵應(yīng)改為“voidTC::display”。

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

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

和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使

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

TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC=display”后的語句看,這

是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,display

函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display"。由第

3處的語句"(:::丁^可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函

數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加”字符,用

采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。

38.(l)“staticintn=O"應(yīng)改為"staticintn;"。

(2)“intC0::n;”應(yīng)改為“intCO::n=0;

(3)“cout?c.n?endl;"應(yīng)改為"cout?c->n<<endl;"。

【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1

處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時引用c的對

象,應(yīng)改為"cout?c->n?endl;"。

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

\n(2)應(yīng)改為“outl,open('l.txt',ios::binary|ios::app);

\n(3)應(yīng)改為“outl.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類中定義的,所以“outl.open('l.txt',binary|

app)>'語句缺少類ios,即第2處的語句修改為“outl.open('l.txt',ios::

binary|ios::app);第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所

以第3處的語句修改為“outl.put(s[i]);”。

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

\n⑵應(yīng)改為"while(str[i])"°

,,

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

\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個

數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);“。第

2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)

束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,

則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是

判斷字符str用是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

,,

但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)o

41.(1)應(yīng)添加“public:

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

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

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、

保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類

的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:“,否則該類無法被實(shí)例

化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造

參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i

每次減1,在i>5時循環(huán),故i初始化應(yīng)為10o若循環(huán)中i每次增1,則

循環(huán)永遠(yuǎn)不會退出。

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

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

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

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

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

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

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

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

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

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

“outl.put(s[i]);

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

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

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

【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符

個數(shù),終止標(biāo)志字符廠,所以第1處改為“cin.getline(str,

120,?);"。第2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一

個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否

為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”°第3處的

“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只

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

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

44.(1)應(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ù),所以修改為

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

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

這里應(yīng)該使用定義的對象,即。bj2

溫馨提示

  • 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

提交評論