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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

一、1.選擇題(10題)

i.編譯時(shí)的多態(tài)性可以通過使用()獲得。

A.虛函數(shù)和指針B.重載函數(shù)和析構(gòu)函數(shù)C.虛函數(shù)和對(duì)象D.虛函數(shù)和

引用

2.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

3.已知chara;intb;floatc;doubled;則表達(dá)式a*b+c-d結(jié)

果為

A.doubleB.intC.floatD.char

4.下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;

template<typenameT>Tfun(Ta,Tb){return(a>=b)?a:b;}voidmain()

{cout<<fun(3,6)<<','<<fun(3.14F,6.28F)<<endl;}

A.6,3.14B.3,6.28C.3,3.14D.6,6.28

5.具有3個(gè)結(jié)點(diǎn)的二叉樹有()

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

6.在C++中,用于實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的是

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

7.下面程序段的運(yùn)行結(jié)果是voidmain(){intt,a,b,c;a=l;b=2;

C-2;while(a<b<c){t=a;a=b;b=t;c—;}cout<<a<<","<

<b<<","<<c;)

A.l,2,0B.2,1,0C.1,2,1D.2,1,1

8.數(shù)據(jù)流圖用于描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符

構(gòu)成。下列圖符名稱標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。

A.控制流B.加工C.貯存文件D.源和潭

9.下列正確的是()。

A.靜態(tài)局部變量和靜態(tài)外部變量的生存期相同,它們的作用域也相同

B.#include<iostream>usingnamespacestd;voidmain(){inti,s;s=0;

for(i=1;i<10;i++){s=s+i;if(s>8)break;}

C.register存儲(chǔ)類型一般為使用頻繁的變量所說明,這樣可以提高程序

的執(zhí)行效率

D.靜態(tài)變量生存期長(zhǎng),作用大,可以多用

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

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

二、單選題(13題)

11.為了使類中的成員不能被類的對(duì)象通過成員操作符訪問,則不能把

該成員的訪問權(quán)限定義為()。

A.publicB.protectedC.staticD.private

12.C++語言對(duì)C語言做了很多改進(jìn),C++語言相對(duì)于C語言的最根本的

變化是()。

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

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

13.有下列程序:

#include<stdiO.h>

voidmain()

{inta=S,b=l,t;

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

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

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

A.chars[];s="BOOK!";

B.charts;S={"BOOK!");

C.chars[10];s="BOOK";

D.char*S;s="BOOK!";

15.某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹的深度

為(假設(shè)根結(jié)點(diǎn)在第1層)()o

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

16.有如下程序:

#include<iostream>

usingnamespacestd;

classA

{

public:

A(){cout?"A";}

?A(){cout?"~A";}

};

classB

(

A*P:

public:

B(){cout?"B";p=newA;}

?B(){cout?"~B";deleteP;}

};

intmain()

(

Bobi;

retumO;

)

執(zhí)行這個(gè)程序的輸出結(jié)果是()。A.BAA~A~B~AB.ABA~B?A~A

C.BAA?B?A~AD.ABA?A~B~A

17.下列程序的執(zhí)行結(jié)果是()。

#include(iostream.h>

#include<stdlib.h>

classTestClass

(

public:

intX,y;

TestClass(){x=y=O;}

TestClass(inta,intb){x=a;y=b;}

voiddisp()

{

cout?"x="?x<<",y="<y?endl;

)

};

voidmain()

{

TestClasssl(2,3);

si.disp();

)

A.x=2,y=2B.x=2,y=3C.x=3,y=2D.x=3,y=3

18.C++語言類體系中,不能被派生類繼承的有()。

A.轉(zhuǎn)換函數(shù)B.構(gòu)造函數(shù)C.虛函數(shù)D.靜態(tài)成員函數(shù)

19.有下列程序:

#include<stdiO.h>

voidf(int*P,int*q);

voidmain()

(intm=l,n=2,*r=&m;

f(r,&n);printf("%d,%d",m,n);

)

voidf(int*P,int*q)

{p=p+l;*q=*q+l;}

程序運(yùn)行后的輸出結(jié)果是()oA.l,3B.2,3C.1,4D.1,2

20.有如下兩個(gè)類定義:

classXX{

private:

doublexl;

protected:

doublex2;

public:

doublex3;

};

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

在類YY中保護(hù)成員變量的個(gè)數(shù)是()o

A.lB.2C.3D.4

21.下列關(guān)于類定義的說法中,正確的是()。

A.類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明

B.類成員的缺省訪問權(quán)限是保護(hù)的

C.數(shù)據(jù)成員必須被聲明為私有的

D.成員函數(shù)只能在類體外進(jìn)行定義

22.下列程序輸出的結(jié)果是()。#include<stdio.h>subl(chara,charb)

{charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}

sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;

a='A';b='B';subl(a,b);putchar(a);putchar(b);

a='A';b='B';sub2(&a,b);putchar(a);putchar(b);

a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);putchar('\n');}

A.BABBABB.ABBBBAC.ABBABAD.ABABBA

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

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

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

三、2.填空題(12題)

24.下面程序的結(jié)果為。

#include<iostream.h>

voidmain()

inta=l,b=2;

boolc=1;

if((a>b)11c)cout<<"tree"<<endl;

else

cout<<"false"<<endl;

)

25.類ostream的成員函數(shù)用于執(zhí)行無格式輸出,成員函數(shù)

用于輸出單個(gè)字符。

26.非成員函數(shù)應(yīng)聲明為類的____函數(shù)才能訪問這個(gè)類的private成

員。

27.若有以下程序:

#include<iostream>

usingnamespacestd;

classTestClass1

(

public:

TestClass1()

(

X=0;

)

intx;

);

classTestClass2:virtualpublicTestClass1

(

public:

TestClass2()

x=10;

)

);

classTestClass3:virtualpublicTestClass1

(

public:

TestClass3()

{

x=20;

)

);

classTestClass4:publicTestClass2,protectedTestClass3

{};

intmain()

(

TestClass4obj;

cout<<obj.x<<endl;

return0:

)

該程序運(yùn)行后的輸出結(jié)果是______o

28.假定A為一個(gè)類,則語句A(A&a);為該類【】函數(shù)的原型說明。

29.在析構(gòu)函數(shù)中調(diào)用虛函數(shù)時(shí),采用【】聯(lián)編。

30.執(zhí)行語句序列

charstrl[l0]="ABCD",str2[l0]="XYZxyz";

for(inti=0;strl[i]=str2[i];i++)

后,數(shù)組strl中的字符是XYZxyz,數(shù)組str2中的字符串是[]o

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

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

include<iostream,h>

classSample{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

voiddisp(){

cout<<"x="<<x<<",y="<<y<<endl;

)

);

voidmain(){

Samplesi,s2(l,2);

si.dispO;

s2.disp();

33.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

34.類模板的使用實(shí)際上是將類模板實(shí)例化成一個(gè)具體的【】。

35.用兩方式控制格式輸出分別是____和用控制符。

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

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

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

Constructor,i=0,

Destructor

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

可。

試題程序:

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

)

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

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

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

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

TC(inti)

m_i=i;

)

voidprint

(

cout?—m_i?,;

public:

intm_i;

};

intmain

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

inti;

TC04(10);

while(i>5)

(

I**************

i++:

04.print;

)

cout?endl;

retumO;

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

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

Constructor,i=0,

Destructor

注意:錯(cuò)誤的語句在//******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;

)

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

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

voidmain

(

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

{

public:

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

staticintn=O:

CO

n++:

?CO

n—:

}:

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

intCO::n;

voidmain

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

I********error********

eout?C.n?endl;

cout?C0::n?endl;

)

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

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

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

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

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

!1******error******自勺卜市~|

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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

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

(

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

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;

)

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

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

number=1

number=10

number=100

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

構(gòu),錯(cuò)誤的語句在//******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;

)

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

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

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

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

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

II******error******白勺~曲jo

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

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

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

(

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

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;

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

{

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

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

cin.getline(str,120);

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

while(str)

(

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

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

)

45.使用VC++6.。打開考生文件夾下的源程序文件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ò)誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h)

intmain

throw("error");

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

catch(chars)

cout?s?endl;

throw((int)0);

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

catch

cout?i?endl;

)

try

{

throw(O);

throw("error");

)

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

catch

(

cout?"ERROR"?endl;

}

retumO;

)

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

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

義了用于表示矩形的CRect類,但類CRect的定義并不完整。請(qǐng)按要

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

(1)定義私有數(shù)據(jù)成員leftPoint>topPoint>rightPoint>bottomPoint,分

別用于表示矩形左上角及右下角的點(diǎn)的坐標(biāo),它們都是double型的數(shù)

據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定默認(rèn)實(shí)參為0,它們都是

double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(4)在main函數(shù)中定義GReet類的實(shí)例rect2,并把re-

cti的值賦給rect2。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

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

試題程序:

#include<iostream.h>

classCRect

(

private:

public:

II

voidSetPoints(double,double,double,double);

voidSetLeftPoint(doublem){leftPoint=m;}

voidSetRightPoint(doublem){rightPoint=m;}

voidSetTopPoint(doublem){topPoint=m;}

voidSetBottomPoint(doublem){bottomPoint=m;}

voidDisplay();

);

CReet::CRect(doublel,doublet,doubler,doubleb)

{

leftPoint=1;topPoint=t;

rightPoint=r;bottomPoint=b;

voidCRect::Setpoints(doublel,doublet,doubler,doubleb)

leftPoint=1;topPoint=t;

rightPoint=n;bottomPoint=b;

)

voidCRect::Display()

{

cout?"left-toppointis("?leftPoint<<","?top-

Point?")"?\n;

cout?"right-bottompointis("?rightPoint?","

<<bottomPoint?")"?\n;

)

voidmain()

{

CRectrectO;

rectO.Display();

rectO.SetPoints(20,20.6,30,40);

rectO.Display();

CRectrectl(O,0,150,150);

recti.SetTopPoint(10.5);

recti.SetLeftPoint(10.5);

II********4********rect2Display()

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

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

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

要求:

補(bǔ)充編制的內(nèi)容寫在"〃************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打開考生文件夾下的工程MyProj4o此工程包含一個(gè)源程

序文件MyMain4.cpp,該程序?qū)⑼ㄟ^把類Distance定義為類Point的

友元類來實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離的功能。但程序中定義的類并不完

整。請(qǐng)按要求完成下列操作,把類的定義補(bǔ)充完整。

①把類Distance定義為類Point的友元類。請(qǐng)?jiān)谧⑨尅啊?*1**”之后添加

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

②定義類Point的構(gòu)造函數(shù),完成給私有數(shù)據(jù)成員x和y的賦值,并且

兩個(gè)參數(shù)的默認(rèn)值都為Oo請(qǐng)?jiān)谧⑨尅啊?*2**”之后添加適當(dāng)?shù)恼Z句。

③完成類Distance的成員函數(shù)Dis(Point&p,Point&q)的定義,并在其

中計(jì)算點(diǎn)p、q之間的距離,并且返回結(jié)果。假設(shè)兩點(diǎn)之間的距離

distance=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y))0請(qǐng)?jiān)谧⑨尅啊?*3***

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

源程序文件MyMain4.cpp中的程序清單如下:

//MyMain4.cpp

#include<iostream>

#include<cmath>

usingnamespacestd;

classPoint

(

public:

〃**]**

//定義類Point的構(gòu)造函數(shù)

//**2**

voidpint()

{

cout<<"x="<<x<<endl;

cout<<"y="<<y<<endl;

)

private:

floatx,y;

);

classDistance

(

public:

floatDis(Point&p,Point&q);

);

floatDistance::Dis(Point&p,Point&q)

{

〃**3**

}

intmain()

(

Pointp(10,10),q(20,20);

Distanced;

cout<<d.Dis(p,q)<<endl;

return0;

)

49.使用VC6打開考生文件夾下的工程MyProjl2。此工程包含一個(gè)源程

序文件MyMainl2.cppo程序中定義了兩個(gè)類Base和Derived,但類的

定義并不完整。

請(qǐng)按要求完成下列操作,將類的定義補(bǔ)充完成:

①類Derived是基類Base公有派生來的。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加

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

②完成構(gòu)造函數(shù)Derived(intx)定義,采用初始化列表的方式使基類Base

私有成員a初始化為x,類Derived的私有成員b初始化為x+l0請(qǐng)?jiān)谧?/p>

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

③完成類Derived的成員函數(shù)show。的類體外的定義。函數(shù)show。中要

輸出基類數(shù)據(jù)成員a的值,然后要輸出私有成員b的值。請(qǐng)?jiān)谧⑨尅啊?

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

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

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

//MyMainl2.cpp

#include<iostream>

usingnamespacestd;

classBase

(

public:

inta;

Base(inti)

{

a=i;

)

};

〃***]***

(

private:

intb;

public:

〃***2***

voidshow();

);

voidDerived::show()

**3***

intmain()

Derivedd(l);

d.show();

return0;

)

參考答案

l.C

2.C解析數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而

數(shù)據(jù)是指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是

指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

3.A解析:本題考察混合運(yùn)算表達(dá)式類型,由表達(dá)式中具有最高優(yōu)先級(jí)

的類型所確定,所以答案為A。

4.D解析:為條件運(yùn)算符,(a>=b)?a:b是當(dāng)a大于b時(shí)取a,否則

取b。所以第一個(gè)fun(3,6)調(diào)用中,6大于3,所以輸出6,同理,第二

個(gè)fun(3.14F,6.28F)調(diào)用中輸出6.28。

5.D解析:因?yàn)槎鏄溆凶蟆⒂易訕渲?,所以?個(gè)結(jié)點(diǎn)的二叉樹具

有5種不同的形態(tài)。

6.D解析:本題考核虛函數(shù)的概念。在C++語言中,多態(tài)性可分為兩類:

編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過函數(shù)重載和

模板體現(xiàn)。其實(shí)現(xiàn)機(jī)制稱為靜態(tài)聯(lián)編(也譯為靜態(tài)綁定),即在編譯階段

決定執(zhí)行哪個(gè)同名的被調(diào)用函數(shù);運(yùn)行時(shí)的多態(tài)性是通過體現(xiàn)的,其實(shí)

現(xiàn)機(jī)制稱為動(dòng)態(tài)聯(lián)編(也譯為動(dòng)態(tài)綁定),即在編譯階段不能決定執(zhí)行哪

個(gè)同名的被調(diào)用函數(shù),只在執(zhí)行階段才能依據(jù)要處理的對(duì)象類型來決定

執(zhí)行哪個(gè)類的成員函數(shù),用于實(shí)現(xiàn)此功能正是虛函數(shù)。

7.A解析:本題中(a<b<c)的運(yùn)算次序是先算a<b,返回1,再運(yùn)算1

<c,返回1,所以表達(dá)式a<b<c的值為1。

8.A解析:本題考查考生對(duì)數(shù)據(jù)流圖的圖形元素的掌握。其中,加工、

貯存文件、源和潭都是數(shù)據(jù)流圖的合法圖符。

9.C解析:選項(xiàng)A它們的作用域不同;選項(xiàng)B輸出結(jié)果相同;選項(xiàng)D靜

態(tài)變量長(zhǎng)期占用內(nèi)存不釋放,降低程序可讀性,不要過多使用。

10.C

2(n-i)=2(5T)=16

11.A解析:public允許類對(duì)象對(duì)類的屬性和方法進(jìn)行訪問;private不允

許類對(duì)象訪問類的屬性和方法;protected不允許類及其子類的對(duì)象訪問

父類的屬性和方法,但子類可以訪問父類中定義的protected屬性和方

法。

12.D

C++語言最重要的特點(diǎn)是其為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,但是C++

語言也包含了C語壽的全部特征。

13.A

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

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

14.D

Do【解析】在選項(xiàng)D中,字符指針s指向字符串常量BOOK!。故選

項(xiàng)D正確o

15.DD【解析】根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,多為。

的葉子結(jié)點(diǎn)總比度為2的結(jié)點(diǎn)多一個(gè),所以本題中度為2的結(jié)點(diǎn)為1-

1=0個(gè),所以可以知道本題目中的二又樹的每一個(gè)結(jié)點(diǎn)都有一個(gè)分支,

所以共7個(gè)結(jié)點(diǎn)共7層,即度為7。

16.B

Bo【解析】本題考查的是類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。派生類構(gòu)造函數(shù)

的執(zhí)行順序:首先調(diào)用基類的構(gòu)造函數(shù),調(diào)用順序按它們被繼承時(shí)說

明的順序;然后調(diào)用子對(duì)象的構(gòu)造函數(shù),調(diào)用順序按它們?cè)陬愔姓f明

的順序;最后是派生類構(gòu)造函數(shù)中的內(nèi)容。因此本題中,首先調(diào)用基

類構(gòu)造函數(shù)輸出A,然后調(diào)用子對(duì)象的構(gòu)造函數(shù)輸出B,P=newA再調(diào)

用類A的構(gòu)造函數(shù)輸出Ao析構(gòu)函數(shù)的調(diào)用順序和構(gòu)造函數(shù)的調(diào)用順

序相反。

17.B

Bo【解析】由主函數(shù)入手,定義了類TestClass的對(duì)象sl(2,3),當(dāng)

類對(duì)象進(jìn)入其作用域時(shí)調(diào)用構(gòu)造函數(shù),構(gòu)造函數(shù)應(yīng)該是調(diào)用具有參數(shù)

的"TestClass(inta,intb){x=a;Y=b;}“,然后調(diào)用成員函數(shù)disp,則輸

出為"cout<<"x="<<x<<",y="?y?endl;即x=2,y=3。

18.B解析:派生類對(duì)象的數(shù)據(jù)結(jié)構(gòu)是由基類中說明的數(shù)據(jù)成員和派生

類中說明的數(shù)據(jù)成員共同構(gòu)成,所以不能繼承基類的構(gòu)造函數(shù),必須重

新定義。

19.A

Ao【解析】本題中子函數(shù)f(int*p,*q)的功能是對(duì)指針p的值加1,

*q的值加1。主函數(shù)中調(diào)用子函數(shù)f(r,&n)時(shí),子函數(shù)的執(zhí)行結(jié)果是r

值加1,n的值加1。而m的值并沒有發(fā)生變化,最后程序輸出的結(jié)果

為1,3。所以正確答案為選項(xiàng)A。

20.C

本題考查保護(hù)繼承中派生類對(duì)基類的訪問屬性,在受保護(hù)繼承中,基

類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,所以基類的成員

x2、x3變成了保護(hù)成員,派生類中的y2也是保護(hù)成員,所以共有3個(gè)

保護(hù)成員。本題答案為C、

21.A

解析:本題考查的知識(shí)點(diǎn)是:類的定義。類中缺省的訪問權(quán)限是私有

的(private),所以選項(xiàng)B)不正確:類的數(shù)據(jù)成員和函數(shù)成員的訪問控

制權(quán)限均可被聲明為公有(public)>私有(priate)和保護(hù)(protected)中的

任意一種,所以選項(xiàng)C)不正確;成員函數(shù)的實(shí)現(xiàn)即可以在類體內(nèi)定

義,也可以在類體外定義,所以選項(xiàng)D)不正確。故本題應(yīng)該選擇

Ao

22.B

23.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ái)之一——硬件平臺(tái)(硬件)、系統(tǒng)平臺(tái)之二

——軟件平臺(tái)(軟件)。

24.truetrue解析:本題考查的是對(duì)于邏輯運(yùn)算符號(hào)的理解,“”運(yùn)算符

的任何一邊取值為真,則整個(gè)運(yùn)算結(jié)果為真。

25.write、put

26.友元友元解析:類的私有成員只能被本類的成員函數(shù)訪問,如果非

成員函數(shù)要訪問本類的私有數(shù)據(jù)成員,必須將函數(shù)定義為該類的友元函

數(shù)才行。

27.20

28.拷貝構(gòu)造拷貝構(gòu)造解析:本題考核拷貝構(gòu)造函數(shù)的定義??截悩?gòu)造

函數(shù)是一種特殊的成員函數(shù),它的作用是使用一個(gè)已存在的對(duì)象來初始

化一個(gè)被創(chuàng)建的同類的對(duì)象。

29.靜態(tài)靜態(tài)解析:構(gòu)造函數(shù)不能聲明為虛函數(shù),但在構(gòu)造函數(shù)中可以

調(diào)用虛函數(shù),在構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù),將采用靜態(tài)聯(lián)編。

3O.XYZxyzXYZxyz解析:注意for的循環(huán)體為空語句,其第二個(gè)表達(dá)

式為一個(gè)賦值語句而不是一個(gè)邏輯表達(dá)式語句。因此,for循環(huán)的作用

實(shí)際上是將str2的字符逐個(gè)賦值給strl中的對(duì)應(yīng)位置。

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

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

32.此程序的運(yùn)行結(jié)果為:x=0y=0x=ly=2此程序的運(yùn)行結(jié)果為:\r\n

x=0,y=0\r\nx=1,y=2

33.數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DBMS)

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

化定義實(shí)例化為一個(gè)真正的類。

35.流成員函數(shù)流成員函數(shù)

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

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

⑶應(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ù)沒有參數(shù)。由第2處“TC::display”后

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

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

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

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

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

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

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

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

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

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

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

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

化。變量的初始化可以通過“=”號(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ì)退出。

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

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

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

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

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

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

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

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

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

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

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

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

39.(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ù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。

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

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

對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,

“intn=0x25;'域"intn=0x25;

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

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

(3)t4cout?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;

41.(1^t4usingnamespacestd;

\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,

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

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

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

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

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

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

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

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

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

【解析】本題第1處的“TCobjl;”語句是聲明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);”語句中的TC為類,并不是對(duì)象,

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

“obj2.SetNumber(lOO);

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

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

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

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

對(duì)于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個(gè)標(biāo)識(shí)應(yīng)

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

“outl.put(s[i]);

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

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

,,

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

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

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

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

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

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

則轉(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&&s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論