2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)真題(含答案)_第1頁(yè)
2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)真題(含答案)_第2頁(yè)
2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)真題(含答案)_第3頁(yè)
2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)真題(含答案)_第4頁(yè)
2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)真題(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(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)介

2021年湖北省鄂州市全國(guó)計(jì)算機(jī)等級(jí)考試

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

學(xué)校:班級(jí):姓名:考號(hào):

一、1.選擇題(10題)

i.一個(gè)關(guān)系數(shù)據(jù)庫(kù)文件中的各條記錄()。

A.前后順序不能任意顛倒,一定要按照輸入的順序排列

B.前后順序可以任意顛倒,不影響庫(kù)中數(shù)據(jù)的數(shù)據(jù)關(guān)系

C.前后順序可以任意顛倒,但排列/頃序不同,統(tǒng)計(jì)處理的結(jié)果就可能

不同

D.前后順序不能任意顛倒,一定要按照關(guān)鍵詞段值的順序排列

2.若有以下調(diào)用語(yǔ)句,則不正確的fun函數(shù)的首部是()。voidmain()

{inta[50],n;fun(n,&a[9]);}

A.voidfun(intm,intx[])

B.voidfun(ints,inth[])

C.voidfun(intp,int*s)

D.voidfun(intn,inta)

3.已知類A有公用數(shù)據(jù)成員a,且有Aobj2;A*constptr=new

A;則下列語(yǔ)句正確的是

A.ptr->a=100;B.ptr=&obj2;C.ptr++;D.ptr=obj2;

4.字符串常量“ME”的字符個(gè)數(shù)是o

A.lB.2C.3D.4

5.有以下程序:#include〈iestream〉usingnamespacestd;intf(intn)

{if(n==l)return1;elsereturnf(n-l)+l;}intmain(){inti,j=0;for(i=1;

i<3;i++)j+=f(i);cout<

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

6.關(guān)于拷貝初始化構(gòu)造函數(shù),正確的是()。

A.在C++語(yǔ)言中,如果不自定義類的拷貝初始化構(gòu)造函數(shù),則每個(gè)類都

有默認(rèn)的拷貝初始化構(gòu)造函數(shù)

B.必須為每個(gè)類定義拷貝初始化構(gòu)造函數(shù)

C.如果要使用拷貝初始化構(gòu)造函數(shù),則必須在類中先定義

D.當(dāng)定義了類的構(gòu)造函數(shù)時(shí),如果要使用拷貝初始化構(gòu)造函數(shù),則必須

定義拷貝初始化構(gòu)造函數(shù)

7.有如下程序:#include<iostream.h>voidmain(){floatx=2.0,y;

if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;cout<<y;}該

程序的輸出結(jié)果是

A.OB.0.25C.0.5D.1.0

8.執(zhí)行完C++程序中的下列3條語(yǔ)句后,c指向()。inta,b,*c=&a;

int*p=c;p=&b;

A.pB.cC.bD.a

9.下面不屬于軟件工程3個(gè)要素的是()。

A.工具B.過(guò)程C.方法D.環(huán)境

10.下述靜態(tài)數(shù)據(jù)成員的特性中,()是錯(cuò)誤的。

A.說(shuō)明靜態(tài)數(shù)據(jù)成員時(shí)前邊要加修飾符static

B.靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化

C.引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加〈類名〉和作用域運(yùn)算

D.靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共用的

二、單選題(13題)

11.下列選項(xiàng)中,不是C++關(guān)鍵字的是()。

A.classB.functionC.friendD.virtual

12.對(duì)類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是()。

A.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載

B.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載

C構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載

D.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重裁

13.下列運(yùn)算符中,不能被重載的是()。

A.B.!=C..D.++

14.有如下語(yǔ)句序列:

ifstreaminfile("DATA.DAT");

if(infile.good())cout?"A";

else{

cout?"B";

ofstreamoutfile("DATA.DAT");

if(outfile.fail())cout?"C";elsecout?"D";

若執(zhí)行這個(gè)語(yǔ)句序列顯示的是BD,則說(shuō)明文件

DATA.DAT

A.以讀方式打開(kāi)成功

B.以讀方式打開(kāi)失敗,但以寫(xiě)方式打開(kāi)成功

C.以讀方式打開(kāi)失敗,以寫(xiě)方式打開(kāi)也失敗

D.以讀方式打開(kāi)成功,以寫(xiě)方式打開(kāi)也成功

15.有如下程序:

#inClude<iostream>usingnamespaCestd;ClassMusiC{

public:

voidsetTitle(Char*str){strCpy(title,str);}protected:

Chartype[10];private:

Chartitle[20];

ClassJazz:publicMusiC{public:

voidset(Char*str){

strCpy(type,"Jazz');〃①strCpy(title,str);〃②

}};

下列敘述中正確的是()。A.程序編譯正確B.程序編譯時(shí)語(yǔ)句①出錯(cuò)C.程

序編譯時(shí)語(yǔ)句②出錯(cuò)D.程序編譯時(shí)語(yǔ)句①和②都出錯(cuò)

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

A.靜態(tài)數(shù)據(jù)成員是類的所有對(duì)象共享的數(shù)據(jù)

B?類的每個(gè)對(duì)象都有自己的靜態(tài)數(shù)據(jù)成員

C.類的不同對(duì)象有不同的靜態(tài)數(shù)據(jù)成員值

D.靜態(tài)數(shù)據(jù)成員不能通過(guò)類的對(duì)象調(diào)用

17.類的析構(gòu)函數(shù)的作用是()。

A.一般成員函數(shù)的初始化B.類的初始化C.對(duì)象的初始化D.刪除類創(chuàng)

建的對(duì)象

18.有下列程序:

#include<stdiO.h>

voidmain()

{inta=S,b=l,t;

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

)

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

19.下列枚舉類型的定義中,包含枚舉值3的是

A.enumtest{RED,YELLOW,BLUE,BLACK};

B.enumtest{RED,YELLOW=4,BLUE,BLACK};

C.enumtest{RED=-1,YELLOW,BLUE,BLACK);

D.enumtest{RED,YELLOW=6,BLUE,BLACK);

20.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),

要按關(guān)鍵碼值遞增的順序排序,采取以第一個(gè)關(guān)鍵碼為基準(zhǔn)元素的快速

排序法,第一趟排序后關(guān)鍵碼33被放到第()個(gè)位置。

A.3B.5C.7D.9

21.帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出虛

基類的構(gòu)造函數(shù),這樣將對(duì)虛基類的子對(duì)象初始化()。

A.與虛基類下面的派生類個(gè)數(shù)有關(guān)B.多次C.兩次D.一次

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

A.算法程序的長(zhǎng)度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)

空間D.算法執(zhí)行過(guò)程中所需要的存儲(chǔ)空間

23.在數(shù)據(jù)庫(kù)設(shè)計(jì)中,將E~R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過(guò)程屬于()。

A.需求分析階段B.概念設(shè)計(jì)階段C.邏輯設(shè)計(jì)階段D.物理設(shè)計(jì)階段

三、2.填空題(12題)

24.線性表最常用的操作是存取第i個(gè)元素及其前趨的值,則采用【】

存儲(chǔ)方式節(jié)省時(shí)間。

25.如果使用數(shù)組名稱為函數(shù)參數(shù),形實(shí)結(jié)合時(shí),傳遞的是____o

26.有以下程序

#include<iostream>

usingnamespacestd;

classMyClass

public:

MyClass();

?MyClass();

Staticints;

voidSetValue(intval);

);

intMyClass::s=O;

MyClass::MyClass()

('

s++;

)

voidM

27.在關(guān)系數(shù)據(jù)庫(kù)中,用來(lái)表示實(shí)體之間聯(lián)系的是_

28.請(qǐng)將下列程序補(bǔ)充完整,使得輸出結(jié)果為bbaa。

#include<iostream>

usingnamespacestd;

classA{

public:

{cout<<"aa";}

);

classB:publicA{

public:

-B(){cout<<"bb";}

);

intmain(){

B*p=newB;

deletep;

return0;

29.求1~10。的和,可寫(xiě)成for(s=0,i=l;[];i++)s+=i;的形式。

30.為了克服軟件危機(jī)提出了【】概念。

31.在關(guān)系運(yùn)算中,【】運(yùn)算是對(duì)兩個(gè)具有公共屬性的關(guān)系所進(jìn)行的運(yùn)

算。

32.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的【】。

33.有如下程序:

#include<iostream.h>

voidmain()

(

intx=2,y=3,a,b,c,d;

a=(x++>=—y);

b=(x==++y);

c=(x-!=y);

d=(++x>y—);

Cout<<a<<b<<c<<d<<endl;

)

則程序執(zhí)行后變量a,b,c,d的值分別是【】。

34.以下程序的執(zhí)行結(jié)果是____o

#include<iostream.h>

int&max(int&x,int&y)

(

return(x>y?x:y);

)

voidmain()

{

intn=2,m=10;

max(n,m)—;

cout<<"n="<<n<<"m="<<m<<endl;

)

35.已知程序的結(jié)果為123,請(qǐng)?zhí)羁铡?/p>

#include<iostream.h>

template<classT>

classA

{

public:

Tx,y,Z;

voiddisplay(){cout<<x<<""<<y<<""<<z;)

);

voidmain()

(

A<int>al;

【】

【】

[1

al.display();

四、程序改錯(cuò)題(10題)

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

運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)

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

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

{

try

(

throw("error");

)

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

catch(chars)

(

cout?s?endl;

)

try

throw((int)0);

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

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

)

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

catch

(

cout?"ERROR"?endl;

)

retumO;

}

37.使用VC++6.。打開(kāi)考生文件夾下的源程序文件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

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

*******不error*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)

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

程序異常.,輸出信息為

error

0

ERROR

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

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

試題程序:

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

}

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

行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:

9,8,7,6,5

注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面,修改該語(yǔ)句即

可。其他的語(yǔ)句不能修改。

試題程序:

#include(iostream.h>

classTC

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

TC(inti)

(

m_i=i;

)

voidprint

(

cout?~m_i?,;

)

public:

intm_i;

);

intmain

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

inti;

TC04(10);

while(i>5)

!********611^^1*********!

1++:

04.print;

)

cout?endl;

retumO;

40.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序

運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為

100

37

32

注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即

可。

試題程序:

#include<iostream.h>

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

voidmain

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

41.使用VC++6.0打開(kāi)考生文件夾下的源程序文件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;

);

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

TC:TC

(

cout?"Constructor"?",";

i=0;

)

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

TC:display

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

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

TC:TC

(

COUI?"Destructor"?endl:

}

voidmain

{

TCa;

a.display;

)

42.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,但該程

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

確。

程序輸出:

8

8

注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面。修改該語(yǔ)句

即可,其他的語(yǔ)句不能修改。

試題程序:

#include(iostream.h>

classCO

{

public:

!********enoj*********/

staticintn=O:

co

n++:

?CO

n—:

):

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

intCO::n;

voidmain

{

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

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

eout?C.n?endl;

cout?C0::n?endl;

43.使用VC++6.。打開(kāi)考生文件夾下的源程序文件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;

};

//******enor******

TC:TC

(

cout?"Constructor"?",";

i=0;

)

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

TC:display

(

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

)

!/******ej*ror******

TC:TC

COUI?"Destructor"?endl:

voidmain

(

TCa;

a.display;

)

44.使用VC++6.0打開(kāi)考生文件夾下的源程序文件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ǔ)句在//******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

(

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

45.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cppo本程序要

求輸入一個(gè)字符串,然后將其中的小寫(xiě)字母改成大寫(xiě)字母,字符可能輸

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstrfl20];

cout?"Enterastringendwith?."?endl;

//********enor********

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

1++;

)

cout?str?endl;

return;

)

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

46.

請(qǐng)使用【答題】菜單命令或直接用VC6打開(kāi)考生文件夾下的工程

prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型

數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫(xiě)

ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此

種情況下程序的輸出應(yīng)該是:

ValArrayvl={1,2,3,4,5}ValArrayv2={l,2,3,4,5}要求:

補(bǔ)充編制的內(nèi)容寫(xiě)在“〃*********333**********與

“〃*********666**********之間,不得修改程序的其他部分。

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

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

//ValArray.h

#include<iostream>usingnamespacestd;classValArray{

int*v:intsize;public:

VaiArray(constint*P,intn):size(n){

v=newint[size];

for(inti=0;i<size;i++)v[i]=P[i];

47.請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程

proj3,其中聲明的CDe叩Copy是一個(gè)用于表示矩陣的類。請(qǐng)編寫(xiě)這個(gè)

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

要求:

補(bǔ)充編制的內(nèi)容寫(xiě)在"〃************333*************與

“〃****************666*************"之間o不.多改不呈的其彳也部

分。

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

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

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

intn;〃動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)

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

CDeepCopy(int);

?CDeepCopy;

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

};

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

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

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

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

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

/

//***********666不***不******

)

intmain

CDeepCopya(2),d(3);

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

(

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

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

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

)

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

cout?”dfadeaway;\n";

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

writeToFile("");

return0;

)

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

48.使用VC6打開(kāi)考生文件夾下的工程MyProj3。此工程包含一個(gè)源程

序文件MyMain3.cpp,其中定義的類并不完整。請(qǐng)按要求完成下列操作,

將類的定義補(bǔ)充完整。

①定義類Planet的保護(hù)數(shù)據(jù)成員distance和revolve,它們分別表示行星

距太陽(yáng)的距離和行星的公轉(zhuǎn)周期。其中,distance為double型,revolve

為血型。請(qǐng)?jiān)谧⑨尅啊?*1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

②定義類Earth的構(gòu)造函數(shù)Earth(doubled,intr),并在其中計(jì)算地球繞太

陽(yáng)公轉(zhuǎn)的軌道周長(zhǎng)。假定:circumference=2*d*3.1416。請(qǐng)?jiān)谧⑨尅啊?*2***

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

③定義類Earth的成員show(),用于顯示所有信息。包括地球距太陽(yáng)的

距離,地球的公轉(zhuǎn)周期,以及地球繞太陽(yáng)公轉(zhuǎn)的軌道周長(zhǎng)。請(qǐng)?jiān)谧⑨?/p>

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

文件MyMain3.cpp中源程序如下:

//MyMain3.cpp

#include<iostream>

usingnamespacestd;

classPlanet

(

protected:

〃**]**

public:

Planet(doubled,intr)

(

distance=d;

revolve=r;

)

);

classEarth:publicPlanet

private:

doublecircumference;

public:

〃**2**

〃**3**

};

intmain()

{

Earthobj(9300000,365);

obj.show;

return0;

)

49.使用VC6打開(kāi)考生文件夾下的工程testll_3o此工程包含一個(gè)

testll_3.cpp,其中定義了類CPosition,但該類的定義都并不完整。請(qǐng)按

要求完成下列操作,將類CPosition的定義補(bǔ)充完整。

(1)在類定義外完成重載的兩個(gè)構(gòu)造函數(shù)CPosition。和CPosition(double

dx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對(duì)象的

默認(rèn)值為x=0,y=0,后者為帶參數(shù)的構(gòu)造函數(shù),把數(shù)據(jù)成員x和y分

別初始化為參數(shù)dx和dy的值。請(qǐng)?jiān)谧⑨尅啊?*1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(2)在類體中添加函數(shù)move(doubleax,doubleay)的定義,使得點(diǎn)的坐標(biāo)

x和y分別移動(dòng)ax和ay個(gè)單位,請(qǐng)?jiān)谧⑨尅啊?*2**”之后添加適當(dāng)?shù)恼Z(yǔ)

句。

(3)完成函數(shù)doubledistance(doublebx,doubleby)的定義,該函數(shù)返回

*this和點(diǎn)(bx,by)的距離,請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

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

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

#include<iostream.h>

#include<math.h>

classCPosition

public:

CPosition();

CPosition(doubledx,doubledy);

doublegetx();

doublegety();

H**2**

doubledistance(doublebx,doubleby);

private:

doublex;

doubley;

};

n**j**

{

x=0;y=0;

)

CPosition::CPosition(doubledx,doubledy)

(

x=dx;y=dy;

}

doubleCPosition::getx()

(

returnx;

)

doubleCPosition::gety()

returny;

)

doubleCPosition::distance(doublebx,doubleby)

(

〃**3**

voidmain()

(

doublea,b;

cout<<"Inputx,ypositionofapoint:";

cin>>a>>b;

CPositionpsA(a,b);

cout<<"Inputx,ypositionofanotherpoint:";

cin>>a>>b;

cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;

)

參考答案

l.B解析:關(guān)系數(shù)據(jù)庫(kù)的邏輯性強(qiáng)而物理性少,因此關(guān)系數(shù)據(jù)庫(kù)中的各

條記錄前后順序可以任意顛倒,不影響庫(kù)中數(shù)據(jù)的數(shù)據(jù)關(guān)系。

2.D解析:&a[9]表示對(duì)變量a[9]的引用,與它對(duì)應(yīng)的形參必須是表示地

址的變量,而D的第2個(gè)形參是一個(gè)普通變量。

3.A解析:本題主要考察const的使用,const根據(jù)其位置的不同修飾不

同的成份,從而表現(xiàn)出靈活的特性,考生容易混淆。此處const修飾的

是指針,雕指針本身不能改變,故選項(xiàng)B、C和D都是錯(cuò)誤的。但是指

針指向的地址里面的值確實(shí)可以改變的,因此選項(xiàng)A是正確答案。

4.C

5.B解析:本題考查的知識(shí)點(diǎn)是遞歸函數(shù)的調(diào)用。根據(jù)程序代碼逐步分

析:

①f(n)用來(lái)計(jì)算n+(n-l)...+l,在f(n)定義內(nèi)部又調(diào)用f(n)自身,這就是

遞歸函數(shù)。

②f(n)=f(n-l)+l,因此必須先計(jì)算出f(n-l),而f(n-l)=f(n-2)+l,又必須

計(jì)算f(n-2)o

由此類推,直到n=l,返回后可以此計(jì)算出f(n),f(n-l),

③第1次調(diào)用f(n)時(shí),形參n接收的值為1,進(jìn)入函數(shù)體后,由于滿足

“n=l",執(zhí)行return語(yǔ)句得到1。第2次調(diào)用f(n)時(shí),n的值為2,不滿

足條件“n==l”,執(zhí)行returnf(n-l)+l,在這條語(yǔ)句中又調(diào)用f(n-l)即f(l),

從而得到f(2)的返回值為2。所以j=l+2=3。

6.A解析:拷貝構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù),它用一個(gè)已知的對(duì)象

初始化一個(gè)正在創(chuàng)建的同類對(duì)象,它不能指定函數(shù)返回類型:只有一個(gè)

參數(shù),是同類的某個(gè)對(duì)象名的引用。每一個(gè)類中都必須有一個(gè)拷貝構(gòu)造

函數(shù),如果類中未聲明,編譯器會(huì)自動(dòng)生成一個(gè)公有的拷貝構(gòu)造函數(shù)。

7.C

8.D解析:語(yǔ)句“inta,b,*c=&a;"執(zhí)行完后,指針c存放變量a的地

址。語(yǔ)句“int*p=c;”執(zhí)行完后,指針p存放變量a的地址。語(yǔ)句“p=&b;"

執(zhí)行完后,指針P存放變量b的地址,但是指針c仍然存放變量a的地

址。語(yǔ)句“p=&b;”只是對(duì)指針p進(jìn)行了重新賦直但并沒(méi)有改變指針c

的值??己酥羔樃拍顣r(shí),經(jīng)常出此類題。

9.D解析:軟件工程包括3個(gè)要素,即方法、工具和過(guò)程。方法是完成

軟件工程項(xiàng)目的技術(shù)手段;工具是指支持軟件的開(kāi)發(fā)、管理、文檔生成;

過(guò)程是支持軟件開(kāi)發(fā)的各個(gè)環(huán)節(jié)的控制、管理。環(huán)境不屬于軟件工程的

3個(gè)要素之一。本題的正確答案為D。

10.B

11.B

12.A

一個(gè)類中只能定義一個(gè)析構(gòu)函數(shù),否則會(huì)造成對(duì)同…對(duì)象的多次刪

除;而構(gòu)造函數(shù)可以根據(jù)不同的參數(shù)個(gè)數(shù)和類型進(jìn)行多次重載。

13.C

C++不能重載的運(yùn)算符只有5個(gè),即$”、“::”、“?:”、

“sizeof,故本題答案為C。

14.C

15.C

本題考查公用繼承和保護(hù)繼承對(duì)基類成員的訪問(wèn)屬性。公用繼承中,

基類的公用成員和保護(hù)成員在派生類中保持原有訪問(wèn)屬性,其私有成

員仍為基類私確、保護(hù)成員不能被類外訪問(wèn),但是可以被派生類的成

員函數(shù)訪問(wèn)。Type成為派生類的保護(hù)成員,可以被派生類訪問(wèn),title

仍為基類私有,派生類不能直接訪問(wèn)。所以答案為c。

16.A靜態(tài)成員表示整個(gè)類范圍共享的信息泌須對(duì)靜態(tài)數(shù)據(jù)成員進(jìn)行初

始化;靜態(tài)數(shù)據(jù)成員是屬于類的,不能通過(guò)類的對(duì)象調(diào)用。

17.D解析:析構(gòu)函數(shù)就是用來(lái)釋放對(duì)象的,它的調(diào)用完成之后,對(duì)象也

就消失了,相應(yīng)的內(nèi)存空間也被釋放了。

18.A

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

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

19.A

20.BB.【解析】快速排序的基本思想是:從表中選取一個(gè)元素(如本題中

的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果

把線性表分割成兩部分(兩個(gè)子表),此元素插入到其分界線的位置處。

然后分別對(duì)兩個(gè)子表再次分割……本題中33作為分割的中界線,第一

趟排序后排在比它小的18、9、25、12后面。

21.D

22.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。

一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)

所占的存儲(chǔ)空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括

算法程序執(zhí)行過(guò)程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)

空間。如果額外空間量相對(duì)于問(wèn)題規(guī)模來(lái)說(shuō)是常數(shù),則稱該算法是原地

工作的。在許多實(shí)際問(wèn)題中,為了減少算法所占的存儲(chǔ)空間,通常采用

壓縮存儲(chǔ)技術(shù),以便盡量減少不必要的額外空間。

23.CE-R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來(lái)的聯(lián)系反映到數(shù)

據(jù)庫(kù)中,即設(shè)計(jì)出表,所以屬于邏輯設(shè)計(jì)階段。

24.雙向鏈表雙向鏈表

25.地址地址解析:此題考查的是函數(shù)參數(shù)的傳遞方式。函數(shù)參數(shù)的傳

遞方式分為傳值和傳地址兩種。使用數(shù)組名作為函數(shù)參數(shù),因?yàn)閿?shù)組名

代表的是數(shù)組的首地址,所以傳遞的是地址。

26.33解析:本題考核靜態(tài)數(shù)據(jù)成員。本題程序中把變量s定義為靜態(tài)

數(shù)據(jù)成員,它被MyClass類的所有對(duì)象所共享,但它不屬于類的任何一

個(gè)對(duì)象,它的作用域是類范圍。在類MyClass的構(gòu)造函數(shù)中,每創(chuàng)建一

個(gè)對(duì)象,s就增1,由此可知s用來(lái)記錄建立對(duì)象的個(gè)數(shù)。由于創(chuàng)建對(duì)象

指針P時(shí)并不會(huì)調(diào)用構(gòu)造函數(shù),所以s最后的值是3。

27.關(guān)系關(guān)系

28.?A()?A()解析:此題考查的是類的構(gòu)造與析構(gòu)。本題要求輸出的

結(jié)果中包含aa,所以基類A中橫線處的函數(shù)一定要被執(zhí)行。橫線處應(yīng)

是定義基類的構(gòu)造或者析構(gòu)函數(shù),如果定義的是構(gòu)造,那么aa肯定在

new操作時(shí)就輸出,而下面的bb是在析構(gòu)函數(shù)中,會(huì)在delete時(shí)被輸

出。故可以肯定應(yīng)填入基類A的析構(gòu)函數(shù)定義?A()。

29,i<=100i<=100解析:本題循環(huán)執(zhí)行100次,每次循環(huán)執(zhí)行s=s+i,

因?yàn)槭乔?~100的和,所以需要循環(huán)變量滿足的條件是i<=100。

30.軟件工程軟件工程解析:軟件工程的出現(xiàn)是由于軟件危機(jī)的出現(xiàn)。

31.自然連接自然連接解析:在關(guān)系運(yùn)算中,自然連接運(yùn)算是對(duì)兩個(gè)具

有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。

32.實(shí)例實(shí)例解析:將屬性、操作相似的對(duì)象歸為類,也就是說(shuō),類是

具有共同屬性、共同方法的對(duì)象的集合。所以,類是對(duì)象的抽象,對(duì)象

則是其對(duì)應(yīng)類的一個(gè)實(shí)例。

33.1100

34.n=2m=9

35.al.x=l;al.y=2;al.z=3;al.x=l;\r\nal.y=2;\r\nal.z=3;解析:通

過(guò)程序的結(jié)果知道數(shù)據(jù)類型是int,所以調(diào)用時(shí)聲明模板實(shí)參為int的,

再對(duì)x,y,z進(jìn)行賦值。

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

⑵應(yīng)改為“cateh(inti)”。

⑶應(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ǔ)句為

44throw((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(...)"。

37.(1)應(yīng)改為"TCobjl(l);

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

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

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

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

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

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

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

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

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

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

“obj2.SetNumber(lOO);

38.(1)應(yīng)改為"catch(char*s)"°

⑵應(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)添加“public:"。

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

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

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

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

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

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

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

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

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

40.(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)分另IJ改成“intm=0144;”,

“intn=0x25;”或"intn=0x25;

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

\n⑵應(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-o由第

3處的語(yǔ)句叮<2::T(3”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函

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

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

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

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

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

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

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

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

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

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

(3)應(yīng)改為“TC::?TC"°

【解析】在類的外部定義成員函數(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”。

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

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

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

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

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

出結(jié)果兩1,

溫馨提示

  • 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)論