2021年河南省開封市全國計算機等級考試C++語言程序設計模擬考試(含答案)_第1頁
2021年河南省開封市全國計算機等級考試C++語言程序設計模擬考試(含答案)_第2頁
2021年河南省開封市全國計算機等級考試C++語言程序設計模擬考試(含答案)_第3頁
2021年河南省開封市全國計算機等級考試C++語言程序設計模擬考試(含答案)_第4頁
2021年河南省開封市全國計算機等級考試C++語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年河南省開封市全國計算機等級考試

C++語言程序設計模擬考試(含答案)

學校:班級:姓名:考號:

一、1.選擇題(10題)

1.下列有關數(shù)據(jù)庫的描述,正確的是O

A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關系C.數(shù)據(jù)庫是一個結構

化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件

2.有如下程序:#include<iostream>usingnamespacestd;classBase

{protected:inti;public:intj;};classDerived:publicBase{intm;public:int

n;};intmain(){Derivedd;d.i=0;//[1]d.j=0;//[2]d.m=0;//[3]d.n=0;//[4]retum

0;}其中主函數(shù)中有兩個賦值語句有錯,這兩個錯誤的賦值語句是

A.[l]和[2]B.[l]和[3]C.[2]和[3]D.[2]和[4)

在C++中,實現(xiàn)封裝性需借助于

A)枚舉B)類

3.O數(shù)組D)函數(shù)

4.下列符號中,正確的C++標識符是

A.enumB.2bC.fbo-9D._32

5.下列敘述中正確的是

A.在面向對象的程序設計中,各個對象之間具有密切的聯(lián)系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述三種說法都不對

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

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

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

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

D.保護繼承時基類中的public成員在派生類中仍protected是的

7.程序設計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和()o

A.對象成分B.變量成分C.語句成分D.傳輸成分

8.下列運算符中不能在C++中重載的是()

A.?:B.+C.-D.<=

9.有如下函數(shù)模板定義:template<classt>Tfunc(Tx,Ty){return

x*x+y*y;}

在下列對func的調用中,錯誤的是

A.func(3,5);

B.func(3.0,5.5);

C.fiinc(3,5.5);

D.func<int>(3,5.5)

10.關于類和對象描述錯誤的是()o

A.對象(Object)是現(xiàn)實世界中的客觀事物,對象具有確定的屬性

B.類是具有相同屬性和行為的一組對象的集合

C.對象是類的抽象,類是對象的實例

D.類是對象的抽象,對象是類的實例

二、單選題(13題)

11.一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求任何

派生類都必須定義自己的版本,此虛函數(shù)又稱為

A.虛析構函數(shù)B.虛構造函數(shù)C.純虛函數(shù)D.靜態(tài)成員函數(shù)

12.關于continue語句敘述不正確的是()。

A.continue語句用于循環(huán)體中,結束循環(huán)

B.continue語句用于循環(huán)體中,它使執(zhí)行流跳出循環(huán)體中尚未執(zhí)行的語

句,并進行下一循環(huán)判斷

C.continue可以用于if語句中

D.continue語句不能代替break語句

13.以下程序段輸出的結果是()。charstr[]="BCDE",*ptr=str;cout<<

*(ptr+4)<<endl;

A.OB.69C.字符E的地址D.一個空字符

14.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次

數(shù)為()o

A.log2nB.n/2C.nD.n+1

15.下面關于虛函數(shù)的描述中正確的是()。

A.虛函數(shù)是一個靜態(tài)成員函數(shù)

B.虛函數(shù)是一個非成員函數(shù)

C.虛函數(shù)可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義

D.派生類的虛函數(shù)與基類中對應的虛函數(shù)具有相同的參數(shù)個數(shù)和類型

16.一個函數(shù)為voidf(int,charch-a'),另一■"函數(shù)為voidf(int),則

它們()o

A.不能在同一程序中定義

B.可以在同一程序中定義并可重載

C.可以在同一程序中定義,但不可以重載

D.以上三種說法均不正確

17.下列虛基類的聲明中正確的是()

A.classvirtualBrpublicA

B.virtualclassB:publicA

C.classB:publicAvirtual

D.classB:virtualpublicA

18.設有下列二叉樹:對此二叉樹前序遍歷的

結果為()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

19眉泡排序在最壞情況下的比較次數(shù)是

A.n(n+l)/2

B.nlog2nC.n(n-l)/2D.n/2

20.下列關于函數(shù)模板的描述中,錯誤的是o

A.從模板實參表和從模板函數(shù)實參表獲得信息矛盾時,以模板實參的信

息為準

B.對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略

C.虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中時,不能省略模板實參

D.模板參數(shù)表不能為空

21.數(shù)據(jù)庫應用系統(tǒng)中的核心問題是o

A.數(shù)據(jù)庫設計B.數(shù)據(jù)庫系統(tǒng)設計C.數(shù)據(jù)庫維護D.數(shù)據(jù)庫管理員培訓

22.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于

A.硬件資源B.通信資源C.支持軟件D.輔助資源

23.在數(shù)據(jù)管理技術發(fā)展的3個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.3個階段相同

三、2.填空題(12題)

24.如果在類模板的定義中有一個靜態(tài)數(shù)據(jù)成員,則在程序運行中會產(chǎn)

生靜態(tài)變量。

25.面向對象的模型中,最基本的概念是對象和【】。

26.程序中有如下語句:

for(inti=O;i<5;i++)cout<<*(p+i)<<;

能夠依次輸出int型一維數(shù)組DATA的前5個元素。由此可知,變量p

的定義及初始化語句是O

27.數(shù)據(jù)模型分為格式化模型與非格式化模型,層次模型與網(wǎng)狀模型屬

于【】°

28.有如下程序:

#include<iostream>

usingnamespacestd;

classTestClass1

(

public:

TestClass1(){cout<<"A";}

};

classTestClass2<public:TestClass2(){cout<<"B";}

};

classTestClass3;publicTestClass1{

TestClass2b;

public:TestClass3(){cout<<"C";}

intmain()<TestClass3obj;retum0;}

該程序執(zhí)行后的輸出結果是o

29.請在下列程序中的橫線處填寫正確的語句。

#include<iostream>

usingnamespacestd;

classBase{

public:

voidfun(){cout<<"Basefbn”<<endl;}

);

classDerivde:publicBase{

public:

voidfun(){

〃調用基類的函數(shù)fim()

cout<<"Derivedfun^^<<endl;

30.有以下程序:

#included<iostream>

usingnamespacestd;

classBase

(

public:

Base()

(

x=0;

intx;

};

classDerived1:virtualpublicBase

i

public:

Derived1()

(

x=10;

)

);

classDerived!:vii1ualpublicBase

(

public:

Derived2()

(

x=20;

}

};

classDerived:publicDerivedI,protectedDerived2

(};

intmain()

(

Derivedobj;

cout<<obj.x<<endI;

return0;

}

該程序運行后的輸出結果是o

31.一棵二叉樹第6層(根結點為第一層)的結點最多為個。

32.下面是“二維向量”vector2D的定義,其中作為成員函數(shù)重載的運算

符“+”的功能是將兩向量的分量x和y對應相加,然后返回作為相加結

果的新對象;請?zhí)羁昭a充完整。

classvector2D{

doublex;//x分量

doubley;//y分量

public:

vector2D(doublex0=0,doubley0=0):x(xO),y(yO){}

voidshow(cout<<'('<<','<<y<<')';}

vector2Doperator+(vector2D);

);

[]operator+(vector2DA)

{

returnvector2D([]);

}

33.類模板的使用實際上是將類模板實例化成一個具體的【】。

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

后返回值的要求是【]o

#include<iostream,h>

int&add(intx,inty)

(

returnx+y;

voidmain()

inti=3,j=19;

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

35.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。

四、程序改錯題(10題)

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

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

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

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

)

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

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

}

catch

cout?i?endl;

)

try

(

throw(O);

throw("error");

)

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

catch

(

cout?"ERROR"?endl;

)

returnO;

)

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

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

number=l

number=10

number=100

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

構,錯誤的語句在//******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********error********

TCobjl;

objl.Print;

TCobj2(3);

I!********erroi*********

objl.number=10;

!1********error******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

~TC;

TC:TC

{

cout?"Constructor"?","

i=0;

)

TC:display

tout?ni=n?i?n,n?endl;

f

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

TC:TC

(

COUI?"Destructor"?endl:

}

voidmain

(

TCa;

a.display;

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

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

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

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

構,錯誤的語句在

II******error******-[卜j。

試題程序:

#include<iostream>

#include<fstream>

********error********

usingstd;

voidWriteFile(char*s)

(

ofstreamout1;

Ii********enor********

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

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

(

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

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

(

ofstreamout1;

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.cppo本程序要

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

入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出到屏幕

中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

!1********ej*j*0j*********

cin.getline(str,120);

1I********ej*j*0j*********

while(str)

I!********eiror********

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

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

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

構,錯誤的語句在

1I******error******白勺卜「白?

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamout1;

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

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

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

!1****************

outl.puts(s[i]);

outl.close;

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

return0;

}

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

voidmain

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

intm=0142:

!i******enor******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

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

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

try

{

throw("error");

)

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

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

)

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

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

)

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

catch

(

cout?"ERROR"?endl;

)

returnO;

)

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

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

number=1

number=10

number=100

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

構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

{

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?"number="?number?endl;

}

private:

intnumber;

);

voidmain

(

!i********e[£*or********

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

Ii********error*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

能輸入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出

到屏幕中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

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

cin.getline(str,120);

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

while(str)

(

!i********error********

if(str[i])=a)

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

i++;

}

cout?str?endl;

return;

五、綜合應用題(2題)

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

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

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

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

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

要求:

補充編制的內容寫在“//**********''與''//**********“兩行之間。實現(xiàn)

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

修改程序的其他部分。

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

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

//proj3.cpp

#include<iostream>

#include<fstream>

#include<catting>

usingnamespacestd;

classdoc

{

private:

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

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

public:

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

符串首地址

doc(char*filename);

voidreverse;〃將字符序列反轉

doc;

voidwriteToFile(char*filename);

};

doc::doc(char}filename)

ifstreammyFile(filename);

intlen=1001,tmp;

atr=newcharf1en];

length=0;

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

str[1ength++]=trap;

str[length]=<\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.writeToFile(,,out.dat");

)

47.使用VC++6.0打開源程序文件3.cppo其中類TC用于把文件

輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的

大小是文件的前一半,另外一個文件的大小是剩余部分。此程序將

in.txt文件中的內容輸出到

屏幕,并且將文件按照以上方式分割,存于文件outl.txt和out2.txt

中。

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

整。

(1)從輸入文件中獲得一個字符,并判斷是否到文件結

尾,如果到文件結尾,則退出循環(huán)。請在注釋1后添加適當?shù)恼Z句。

⑵把獲得的輸入文件的內容存儲到bur中,并且用len

記錄下文件的長度。請在注釋2后添加適當?shù)恼Z句。

(3)將輸入文件的后一半內容存儲在第二個文件中,請

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

(4)使用文件流對象打開輸入文件in.txt,請在注釋4

后添加適當?shù)恼Z句。

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

改其他的程序代碼。

試題程序:

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h)

classTC

{

public:

TC(char*fileName)

(

len=O;

fstreaminfile;

infile.open(fileName,ios::in);

charch;

while

cout?ch;

)

infile,close;

)

voidsplit

{

fstreamoutfilel;

fstreamoutfile2;

outfilel.open("outl.txt",ios::out);

outfile2.open("out2.txt",ios::out);

inti=0:

for(i=0;i<len/2;i++)

(

outfilel?buf[i];

)

do

{

)

while(i!=len);

outfilel.close;

outfile2.close;

)

prwate:

intlen;

charbuf[1024];

);

voidmain

//********4********

TCobj;

obj.split;

return;

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

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

序文件testl9_3.cpp,其中定義了用于表示向量的類vector,但類vector

的定義并不完整。請按要求完成下列操作,將類vector的定義補充完整。

(1)補充類vector的構造函數(shù),該函數(shù)有參數(shù)x和y,它們都是int型的

數(shù)據(jù),默認值都為0。請使用參數(shù)列表的形式分別將類的數(shù)據(jù)成員a和

b分別初始化為參數(shù)x和y的值。請在注釋“〃**1**”之后添加適當?shù)恼Z

句。

(2)完成類vector的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x

和y分別賦值給數(shù)據(jù)成員a和b,請在注釋“〃**2**”之后添加適當?shù)恼Z

句。

(3)完成類vector的友元函數(shù)frienddoubleMultiply(vector&x,vector&y)

的定義,先定義double型的臨時變量c,然后將參數(shù)對象x和對象y的

數(shù)據(jù)成員a與b分別相乘再相加后賦值給c,最后返回c的值,將請在

注釋“〃**3**,,之后添加適當?shù)恼Z句。輸出結果如下:

(10,20)

(2,3)

80

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

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

#include<iostream.h>

classvector

{

inta;

intb;

public:

〃**I**

voidinput(intx,inty)

(

}

voidoutput()

cout<<'('<<a<<<<b<<")"<<endl;

}

frienddoubleMultiply(vector&x,vector&y);

}

doubleMultiply(vector&x,vector&y)

(

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打開考生文件夾下的工程test29_3o此工程包含一個

test29_3.cpp,其中定義了二維坐標類Coordinate和三維坐標類

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

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

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

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

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

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

釋“〃**2**?!敝筇砑舆m當?shù)恼Z句。

⑶完成二維坐標類Coordinate的構造函數(shù),將參數(shù)a和b分別賦值給數(shù)

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

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

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

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

輸出結果如下;

[1,2]

[3,4,5]

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

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

virtualvoidDisplay()const;

);

〃**4**

voidThreeDCoord::Display()const

(

cout<<'[,<<X<<","<<y<<","<<Z<<']'<<

endl;

}

voidmain()

i

Coordinatec(l,2);

ThreeDCoordt(3,4,5);

c.Display();

t.Display();

參考答案

LC解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結

構形式并存放于統(tǒng)一的存儲介質內,是多種應用數(shù)據(jù)的集成,并可被各

個應用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點。

2.B解析:i是Derived的保護成員,m是私有成員。

3.B解析:類的三大特性是:封裝、繼承、多態(tài)。C++中實現(xiàn)信息的封裝

主要靠類的封裝特性來實現(xiàn)。

4.D

解析:本題考查C++語言中的標識符的定義。標識符不是一個隨意的

字符序列,定義標識符時一般應注意如下幾點:第一個字符必須是字

母或下劃線,中間不能有空格;在第一個字母后,可以是任意字母、

下劃線和數(shù)字組成的字符序列:標識符的長度是任意的,但特定的編

譯系統(tǒng)能夠識別的標識符長度是有限的。一般不要超過\u300031個字

符;標識符中大小寫字母是有區(qū)別的;用戶定義標識符時,不要采用

系統(tǒng)的保留字。選項A是保留字:選項B的第一個字符是數(shù)字:選項

C中的」字符不合法。故應該選擇D。

5.C解析:在面向對象的程序設計中,對象是面向對象的軟件的基本模

塊,它是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對

象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設置,沒有無

關的操作。從模塊的獨立性考慮,對象內部各種元素彼此結合得很緊密,

內聚性強。由于完成對象功能所需要的元素(數(shù)據(jù)和方法)基本上都被封

裝在對象內部,它與外界的聯(lián)系自然就比較少,所以,對象之間的耦合

通常比較松。所以,選項A與B錯誤,選項C正確。

6.B

7.D解析:程序設計語言是用于書寫計算機程序的語言,其基本成分有

以下4種,數(shù)據(jù)成分:用來描述程序中的數(shù)據(jù)。運算成分:描述程序中所

需的運算??刂瞥煞?用來構造程序的邏輯控制結構。傳輸成分:定義數(shù)

據(jù)傳輸成分,如輸入/輸出語言。

8.A解析:本題考查運算符的重載。Ct+中,“二、*、、?:”這4個運算

符不能重載。

9.C解析:在C的調用過程中,hmc(3,5.5)由于參數(shù)的類型不一致,不能

判別兩個參數(shù)的類型,發(fā)生錯誤。

lO.CCo【解析】C++中,類是用戶自定義的一種數(shù)據(jù)類型,對象是類

的實例,類定義了屬于該類的所有對象的共同特性。一個類作為一種數(shù)

據(jù)類型,它可以定義多個對象。

11.C解析:本題考核純虛函數(shù)的定義。純虛函數(shù)是一種特殊的虛函數(shù),

純虛函數(shù)是在虛函數(shù)的后面加上“=0”,表示該虛函數(shù)無函數(shù)體,并非賦

值運算。純虛函數(shù)的一般格式如下:

virtual〈類型><函數(shù)名>(<參數(shù)表>尸0;

在很多情況下,在基類中不能對虛函數(shù)給出有意義的實現(xiàn),而把它說明

為純虛函數(shù),它的實現(xiàn)留給該基類的派生類去做。

題目中描述的是純虛函數(shù)的特點。

12.A解析:continue是跳出了本次循環(huán)中尚未執(zhí)行的語句,重新執(zhí)行循

環(huán),但沒有終止循環(huán)。注意:注意break,continue和goto語句的用法

和區(qū)別。

13.D解析:*(p+4)即數(shù)組元素str[4]的值,而str[4]中存放的是字符,\\0:

所以輸出的是一個空字符。

14.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中

的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效

率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找

的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所

有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線

性表進行順序查找,在最壞情況下需要比較n次。故本題答案為Co

15.DD。【解析】本題考查虛函數(shù)的概念。虛函數(shù)是非靜態(tài)的成員函數(shù),

它不能是友元函數(shù),但可以在另一個類中被聲明為友元函數(shù)。虛函數(shù)必

須是類的成員函數(shù),虛函數(shù)聲明只能出現(xiàn)在類定義的函數(shù)原型聲明中,

而不能在成員函數(shù)的函數(shù)體實現(xiàn)的地方,一般要求基類中說明了虛函數(shù)

后,派生類說明的虛函數(shù)應該與基類中虛函數(shù)的參數(shù)個數(shù)相等,對應參

數(shù)的類型相同。如果不相同,則將派生類虛函數(shù)的參數(shù)類型強制轉換為

基類中虛函數(shù)的參數(shù)類型。

16.B解析:題目中的兩個函數(shù)參數(shù)個數(shù)不同,因此可以在同一程序中定

義為重載函數(shù)。所以,選項B)敘述正確。

17.D解析:本題考核虛基類的聲明方式。虛基類說明格式如下:

Virtual<繼承方式><基類名>

其中,Virtual是虛基類的關鍵詞。虛基類的說明是用在定義派生類時,

寫在派生類名的后面。即:

class<派生類名>:Virtual<繼承方式><基類名>。

18.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結點、遍歷左子

樹與遍歷右子樹這3者中,首先訪問根結點,然后遍歷左子樹,最后遍

歷右子樹,并且,在遍歷左右子樹時,上述規(guī)則同樣適用,即“根-左-右”。

故該二叉樹的前序遍歷結果為“ATBZXCYP"。對于本題,若使用后序遍

歷和中序遍歷的結果分別為“ZBTYCPXA”和“TZBACYXP”。

19.C冒泡排序的基本思想是:將相鄰的兩個元素進行比較,如果反序,

則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到

最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒

泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從1到n-

i個數(shù)據(jù)進行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第

1趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,

一共進行n-1趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-

l)+(n-2)+...+l,結果為n(n-l)/2o本題的正確答案是選項C。

20.D

本題主要考查了函數(shù)模版。在調用一個模板函數(shù)時,編譯系統(tǒng)需要足

夠的信息來判別每個虛擬類型參數(shù)所對應的實際類型,可以從兩個不

同的渠道獲得這樣的信息:從模板實參表(用<和>括起來的參數(shù)表)或

從模板函數(shù)實參表(用(和)括起來的參數(shù)表),模板實參的信息優(yōu)先于函

數(shù)實參的信息,如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部

虛擬類型參數(shù)所對應的實際參數(shù),而且它們又正好是參數(shù)表中最后的

若干參數(shù),則模板實參表中的那幾個參數(shù)可以省略。如果模板實參表

中的實參都被省略了,則空表<>也可以不要。反之,對于某個模板實

參,如果從模板函數(shù)的實參表中無法獲得同樣的信息,就不能省略;或

者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實參,

則其自身還是不能省略。

21.A數(shù)據(jù)庫應用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設計。故答案為A選項。

22.D

軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、

通信資源、輔助資源等。

(1)硬件資源是指組成計算機及相關應用所需要的硬件,它是軟件開

發(fā)必不可少的資源,因為無論什么樣的軟件工具都需要在硬件上完成

任務,它是其他資源的基礎資源。

(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無

關。

(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向對

象開發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。

通過對上述分析的總結,可以知道本題的正確答案選D。

23.C解析:人工管理階段是在計算機出現(xiàn)的初期,主要用于科學計算,

沒有大容量的存儲設備。處理方式只能是批處理,數(shù)據(jù)不共享,不同程

序問不能交換數(shù)據(jù)。文件系統(tǒng)階段把有關的數(shù)據(jù)組織成一種文件,這種

數(shù)據(jù)文件可以脫離程序而獨立存在,由一個專門的文件管理系統(tǒng)實施統(tǒng)

一管理;但是,數(shù)據(jù)文件仍高度依賴于其對應的程序,不能被多個程序

所通用。數(shù)據(jù)庫系統(tǒng)階段對所有的數(shù)據(jù)實行統(tǒng)一規(guī)劃管理,形成了一個

數(shù)據(jù)中心,構成了一個數(shù)據(jù)倉庫;數(shù)據(jù)庫中的數(shù)據(jù)能夠滿足所有用戶的

不同要求,供不同用戶共享;數(shù)據(jù)共享性顯著增強。

24.多個多個

25.類類解析:面向對象模型中,最基個的概念是對象和類,,對象是現(xiàn)

實世界中實體的模型化;將屬性集和方法集相同的所有對象組合在一起,

可以構成一個類。

26.int*p=DATAint*p=DATA解析:此題考查的是指針變量的定義及初

始化。題目中要求輸出int型數(shù)組DATA的前五個元素,由表達式*(p+0)

和*(p+4)可知變量p是一個指向DATA首地址的血型指針,故它的定

義及初始化語句是int*p=DATA。

27.格式化模型格式化模型解析層次模型與網(wǎng)狀模型屬于格式化模型。

28.ABCABC解析:主函數(shù)中定義TestClass3對象obj,其中TestClass3

繼承于TestClass1,先初始化基類構造函數(shù),所以輸出A。然后在

TestClass3中定義TestClass2對象b,輸出B,最后派生類的構造函數(shù)輸

出Co所以答案為ABC0

29.Base::fun()oBase::fun()o解析:本題考查的是派生類對基類成

員的訪問。本題中派生類Derived覆蓋了基類Base中的如果需

要調用基類中的fun(),則需要使用域運算符“::故應填寫B(tài)ase::

fun()0

30.2020解析:本題考核虛基類。本題中,雖然Derived1和Derived2

都是由共同的基類x派生而來的,但由于引入虛基類,使得它們分別對

應基類的不同副本。這時數(shù)據(jù)成員x只存在一份拷貝,不論在類Derired

1中修改,還是在類Derived2中修改,都是直接對這唯一拷貝進行操

作。本題程序執(zhí)行語句“Derivedobj;"時,就會先調用虛基類Base的構

造函數(shù),使得x=0,然后執(zhí)行類Derived1的構造函數(shù)使得x=10,再執(zhí)

行類Derived2的構造函數(shù),使得x=20。最后輸出x的值為20o

31.32

32.vector2D::x+a.xy+a.yvector2D::\r\nx+a.x,y+a.y解析:本題考核運

算符的重載。程序將運算符“+”重載為類vector2D的成員函數(shù),所以在

函數(shù)定義處要加上類域控制,即vector2D::。運算符重載函數(shù)返回的

是兩個分量分別相加的值。

33.類類解析:本題考查的是類模板的使用方式,就是把類模板的一般

化定義實例化為一個真正的類。

34.不能是表達式不能是表達式解析:引用是變量的別名,其實質是變

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

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

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

了。

35.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是

具有共同屬性、共同方法的對象的集合。

36.(1)應改為"catch(char*s)‘'。

⑵應改為“cateh(inti)”。

(3)應改為"catch(…)”。

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

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

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

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

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

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

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

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

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

改為“catch(…)”。

37.(1)應改為"TCobjl⑴;

\n⑵應改為“Objl.SetNumber(lO);

5,

\n(3)應改為“0bj2.SelNumber(100);o

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

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

出結果兩1,所以補全參數(shù)1,即第1處的“TCobjl⑴;”。第2處處的

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

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

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

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

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

“obj2.SetNumber(lOO);

38.(1)應改為“TC::TC”。

\n⑵應改為"voidTC::display”。

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

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

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

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

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

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

函數(shù)返回值為void,因此第2處的語句應改為“voidTCrdisplay"。由第

3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構函數(shù),析構函

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

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

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

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

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

【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,

對于C++中引入標準命名空間的格式,缺少namespace,所以第1處

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

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

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

“outl.open("l.txt",ios::binaryIios::app);第3個標識應

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

“outl.put(s[i]);”。

40.(1)應改為“ein.getline(str,120,?);

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

u,,

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

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

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

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

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

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

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

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

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

41.⑴應改為"usingnamespacestd;"。

\n(2)應改為"outl.openfl.txt',ios::binary|ios::app);

\n(3)應改為“outl.put(s[i]);

\n【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,

對于C++中弓I入標準命名空間的格式,缺少namespace,所以第1處

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

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

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

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

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

tt,,

42.(l)voidmaino

(2)“intm=0144;”。

(3)“intn=OX25;”或"intn==0x25;”。

【解析】本題主要考查了主函數(shù)定義及幕同進制之間的轉換,包括十

進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為

“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。

cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結果可發(fā)

現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37

對應十六進制的25,因止匕2和3應分另IJ改成“intm=0144;”,

“intn=0x25;”或“intn=0><25;

43.⑴應改為“catch(char*s)"°

⑵應改為“cateh(inti)”。

(3)應改為"catch(…)”。

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

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

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

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

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

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

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

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

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

改為“ca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論