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

下載本文檔

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

文檔簡介

2022年廣東省梅州市全國計算機等級考試

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

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

一、1.選擇題(10題)

1.若有以下程序:#include<iostream>usingnamespacestd;class

Basepublic:Base(){x=0;}intx;};classDerivedl:virtualpublicBasepublic:

Derived1(){x=10;}};classDerived2:virtualpublicBasepubliciDerived2()

x=20;};classDerived:publicDerived1protectedDerived2{};intmain()

Derivedobj;cout<<obj.x<<endl;return0;}該程序運行后的輸出結(jié)

田日

A.20B.30C.10D.0

2.下列關(guān)于重載函數(shù)的描述中,()是錯誤的。

A.重載函數(shù)中不允許使用默認參數(shù)

B.重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇

C不要使用重載函數(shù)來描述毫不相干的函數(shù)

D.構(gòu)造函數(shù)重載將會給初始化帶來多種方式

3.以下函數(shù)調(diào)用語句中含有參數(shù)的個數(shù)是excc((vl,v2),(v2,v3,V4),

v6);

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

4.以下哪個基類中的成員函數(shù)表示純虛函數(shù)()。

A.virtualvoidvf(int)

B.voidvf(int)=0

C.virtualvoidvf(=0)

D.virtualvoidvf(int){}

5.下列對派生類的描述中,錯誤的是()。

A.一個派生類可以作為另一個派生類的基類

B.派生類至少有一個基類

C.派生類的默認繼承方式是私有派生

D.派生類只繼承了基類的公有成員和保護成員

6.下列函數(shù)中,()是對文件進行寫操作的。

A.getB.readC.seekgD.put

7.有以下程序:main(){inta=5,b=4,c=3,d=2;if(a>b>C)cout

<<d<<endl;elseif((c-1)=d)==1)tout<<d+1<<endl;elsecout<

<d+2<<endl;}

A.2B.3c.4D.編譯時有錯,無結(jié)果

8.下列敘述中,正確的是

A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的

聯(lián)系

B.用E-R圖只能表示實體集之間一對一的聯(lián)系

C.用E-R圖只能表示實體集之間一對多的聯(lián)系

D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

9.下面關(guān)于break語句的描述中,不正確的是(

A.break可以用于循環(huán)體內(nèi)

B.break語句可以在for循環(huán)語句中出現(xiàn)多次

C.break語句可以在switch語句中出現(xiàn)多次

D.break語句可用于if條件判斷語句內(nèi)

10.使用ifstream流類定義流對象并打開磁盤文件時,文件的隱含打開方

式為()o

A.ios::inB.ios::outC.ios::inlios::outD.沒有默認

二、單選題(13題)

11.己知有數(shù)組定義

chara[3][4];

下列表達式中錯誤的是

A.af21="WIN"

Bstrcpy(a[2],"WIN")

C.a[21[31='W'

D.a[0][1M0][1]

12.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是_______。

A.棧B.樹C.隊列D.二叉樹

13.下列語句中錯誤的是()。

A.Constinta;

B.Constinta=10;

C.Constint*point=0;

D.Constint*point=newint(10);

14.有如下程序:

#inClude<iostream>usingnamespaCestd;ClassBase{

public:

voidoutput{Cout?1;}

virtualvoidPrint{Cout?B,;});

ClassDerived:publicBase{public:

voidoutput{Cout?2;}voidPrint{Cout?,D;}};

intmain{

Base*ptr=newDerived;ptr一>output;

ptr一〉Print;deleteptr;

retumO;}

執(zhí)行這個程序的輸出結(jié)果是()oA.1BB.1DC.2BD.2D

15.有如下程序:

#include<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(inti=0){cout?1;}

MyClass(constMyClass&x){cout?2;}

MyClass&operator=(constMyClass&x){cout?3;retum$this;}

~MyClass}cout?4;}

);

intmain

(

MyClassobjl(l),obj2(2),obj3(objl);

return0;

(

執(zhí)行這個程序的輸出結(jié)果是()。A.112444B.11114444C.121444D.11314444

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

A.classB.functionC.friendD.virtual

17.設(shè)有a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、

m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為

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

18.有如下程序:

#include<iostream>

usingnamespacestd;

classTest(

public:

Test(){}

Test(constTest8Lt){cout?l;}

};

Testfun(Test&u){Testt=U;returnt;}

intmain(){Testx,y;x=fun(y);returnO;}

運行這個程序的輸出結(jié)果是()oA.無輸出B.lC.11D.111

19.下面描述中錯誤的是()o

A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計

B.軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程

C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務之一

D.PAD圖是軟件詳細設(shè)計的表示工具

20.執(zhí)行下列程序后,w的值為()。intw=A,x=14,y=15;

w=((xIIy)&&(w<a));

A.-lB.NULLC.lD.O

21.下面程序的運行結(jié)果為()。

#include<iostream.h>voidswap(int&a,intB.inttemp;

temp=a++:a=b:

b=temp;

)

voidmain

(

ima=2,b=3;swap(a,B.;

eout?a?,\,,?b?endl;

A.2,3B,3,2C,2,2D,3,3

22.在結(jié)構(gòu)化設(shè)計方法中生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示

A.模塊之間的調(diào)用關(guān)系B.程序的組成成份C.控制程序的執(zhí)行順序D.

數(shù)據(jù)的流向

23.下列各組類型聲明符中,含義相同的一組是()。

A.unsignedlongint和long

B.signedshortint和short

C.unsignedshort和short

D.shortint和int

三、2.填空題(12題)

24.以下程序段給數(shù)組A的所有元素輸入數(shù)據(jù),請?zhí)羁铡?/p>

#include<iostream,h>

voidmain(){

inta[10],i;

i=0;

while(i<10)cin>>[]

)

25.Jackson方法是一種面向的結(jié)構(gòu)化方法。

26.頭文件【】中包含了處理用戶控制的文件操作所需的信息。

27.C++語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和的多

態(tài)性。

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

29.派生類中的成員不能直接訪問基類中的成員。

30.下面程序的結(jié)果為【】。

#include<iostream,h>

voidmain()

(

inta=l,b=2;

boolc=l;

if((a>b)||c)cout<<"true"<<endl;

else

cout<<"false"<<endl;

)

31.我們通常用到的cin>>,是屬于【】輸入。

32.派生類的成員一般分為兩部分,一部分是【】,另一部分是自己定

義的新成員。

33.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和

34.有以下程序:

#include<iostream>

#include<fstream>

usingnamespacestd;

intmain()

(

fstreamfile;

file.open("abc.txt",ios::in);

if(!file)

(

cout<<"Cannotopenabc.txt"<<endl;

abort();

)

charbuf[80];

inti=0;

while(!file,eof())

(

file.getline(buf,80);

i++;

)

cout<<"Lines:"<<i<<endl;

file.close();

return0;

程序?qū)崿F(xiàn)的功能是【】。

35.在C++流類庫中,根基類為

四、程序改錯題(10題)

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

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

catch(chars)

(

cout?s?endl;

try

throw((int)0);

/I********ej'j"or********

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

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

catch

(

cout?"ERROR"?endl;

)

returnO;

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

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

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

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

TC(inti)

m_i=i;

voidprint

cout?—m_i?,

public:

intm_i;

intmain

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

inti;

TC04(10);

while(i>5)

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

i++:

04.print;

cout?endl;

returnO;

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

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

voidmain

(

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

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

到屏幕中。

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

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

試題程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

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

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

number=l

number=10

number=100

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

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

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

cout?"number="?number?endl;

private:

intnumber;

);

voidmain

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

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

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

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

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

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

II******or******白勺~

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

****************

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

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

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

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

(

ofstreamoutl;

outl.open("1.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

try

throw("error");

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

catch(chars)

cout?s?endl;

try

throw((int)0);

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

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

/j********ep^or********

catch

(

cout?"ERROR"?endl;

)

returnO;

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?''Enterastringendwith?."?endl;

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

cin.getline(str,120);

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

while(str)

(

II********ej*por********

if(str[i])=a)

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

1++;

)

cout?str?endl;

return;

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

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

為:

sizeof(Sl)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

⑴不能刪除assert()語句。

(2)只能修改后面的數(shù)字。

提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

char*sl="abc":

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

assert(sizeof(sl)==3):

cout?"sizeof(sl)=5"?endl;

chars2[10]="ab":

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

assert(sizeof(s2)==2);

cout?"sizeof(s2)=10"?endl;

chars3=23:

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

assert(sizeof(s3)==4);

cout?"sizeof(s3)=l"?endl;

return;

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

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

staticintn=O:

CO

n++:

CO

n—:

):

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

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

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

eout?C.n?endl;

cout?C0::n?endl;

)

五、綜合應用題(2題)

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

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

⑴定義類的公有數(shù)據(jù)成員函數(shù)NO、Name[32],其中NO是int型的數(shù)

據(jù),Name[32]為字符型。請在注釋1后添加適當?shù)恼Z句。

(2)完成函數(shù)Set的定義,分別設(shè)置NO和Name的值,請在注釋2后添

加適當?shù)恼Z句。

(3)完成函數(shù)print,請在注釋3后添加適當?shù)恼Z句,輸出結(jié)果如下:

N0=12345

Name=HelloWorld!

(4)添加默認構(gòu)造函數(shù),設(shè)置NO為0,Name為空,請在注釋4后添加

適當?shù)恼Z句。

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

他的程序代碼。

試題程序:

#include<iostream.h>

classTC

(

public:

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

(

No=no;

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

(

Name[i]=strName[i];

Name[i+1]=0;

voidprint()

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

TC()

II********4********)

);

intmain()

TCstu:

stu.Set(12345,"HelloWorld!");stu.print();

returnO;

)

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

義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公

有派生。

⑴定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函

數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“//********1********”之

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

(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)

造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)

值傳人。請在注釋“//********2********”之后添加適當?shù)恼Z句。

(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)x,y和z,

在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1

構(gòu)造函數(shù)的參數(shù)x和y。請在注釋“//********3********”之后添加

適當?shù)恼Z句。

(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸

出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值

在輸出時以空格隔開。請在注釋“//********4********”之后添加適

當?shù)恼Z句。

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

7

3

738

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

試題程序:

#include<iostream.h>

classA

inta;

public:

intgeta{returna;}

);

classAl:publicA

intb;

public:

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

intgetb{returnb;}

);

classA2:publicA1

intC;

public:

****,****3********

voidshow

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

)

);

voidmain

(

A2a(8.3.7):

cout?a.geta?endl:

cout?a.getb?endl:

a.show;

)

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

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

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

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

整。請按要求完成下列操作,把類的定義補充完整。

①把類Distance定義為類Point的友元類。請在注釋“〃**1**”之后添加

適當?shù)恼Z句。

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

兩個參數(shù)的默認值都為Oo請在注釋“//**2**”之后添加適當?shù)恼Z句。

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

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

distance=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y))。請在注釋“〃**3**"

之后添加適當?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打開考生文件夾下的工程test40_3o此工程包含一個

test40_3.cpp,其中定義了類CVector,但該類的定義并不完整。請按要

求完成下列操作,將程序補充完整。

⑴完成類CVector構(gòu)造函數(shù)的定義,把傳入的int型參數(shù)a和b分別賦

值給類的成員變量x和yo請在注釋“//**1**”之后添加適當?shù)恼Z句。

⑵完成類CVector的“+”運算符重載函數(shù)的定義,使Cvector類的兩個對

象相加時可以直接使用符號“+”,并且結(jié)果仍然為類Cvector的對象,請

在注釋“〃**2**,,之后添加適當?shù)恼Z句。

⑶在主函數(shù)中添加適當?shù)恼Z句,把類Cvector的對象a和b相力口,并且

把結(jié)果保存在對象c中,最后以“x,y”的形式輸出在屏幕上,請在注釋

“〃**3**,,之后添加適當?shù)恼Z句。

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

#include<iostream,h>

classCVector

(

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

);

CVector::CVector(inta,intb)

(

〃**]**

CVectorCVector::operator+(CVectorparam)

〃**2**

temp.y=y+param.y;

return(temp);

)

intmain()

(

CVectora(3,1);

CVectorb(l,2);

CVectorc;

〃**3**

return0;

參考答案

l.A解析:本題考核虛基類的應用。本題中,雖然Derived1和Derived2

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

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

Derivedl修改,還是在類Derived2中修改,都是直接對這惟一拷貝進行

操作。本題程序執(zhí)行語句“Derivedobj”時,就會先調(diào)用虛基類Base的構(gòu)

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

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

2.A解析:在選項A)中,重載函數(shù)中是允許使用默認參數(shù)的;為了使

重載函數(shù)有意義,不要使用重載函數(shù)來描述毫不相干的函數(shù);重載函數(shù)

中編譯是根據(jù)參數(shù)表進行選擇,包括參數(shù)的個數(shù)和類型。

3.A解析:函數(shù)的參數(shù)個數(shù)是以第一層的逗號為區(qū)分的,本題中調(diào)用語

句中有3個參數(shù)。

4.B

5.D解析:對于選項A,在C++中,一個派生類可以作為另一派生類的

基類,所以選項A是正確的。

對于選項B,在C++語言中,可以從一個類派生出另一個類。派生其他

類的類稱為基類,被派生的類稱為派生類。一個派生類可以從一個基類

派生,也可以從多個基類派生。所以派生類應至少有一個基類。

對于選項C,在C++中,當派生類時,如果沒有特別指定派生的類型,

C++編譯器會自動指定其為私有派生。所以選項C也是正確的。

對于選項D,在C++中,派生類中包含了基類的所有成員,但基類的私

有成員在派生類中是隱蔽的,不能被訪問。所以選項D是錯誤的。

6.D

7.B解析:本題考查邏輯表達式的結(jié)合特性,即左結(jié)合性。對于表達式

a>b>c,首先判斷a>b為真,結(jié)果為1,然后判斷l(xiāng)>c,為假,故轉(zhuǎn)去判

斷c-l):d是否成立,成立,結(jié)果為1,再判斷1=1,結(jié)果為真,因此,

執(zhí)行d+1,答案為B。

8.A解析:兩個實體之間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函

數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和

多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于

具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型

等各種模型轉(zhuǎn)換。

9.D

Do【解析】本題考查break語句的使用。break可以結(jié)束switch語句

和for循環(huán)語旬,但是不能使用在條件判斷語句內(nèi)。

10.DDo【解析】使用ifstream流類定義流對象并打開磁盤文件時,文件

沒有默認的打開方式。其中ios::in是為輸入而打開;iso::out是為輸

出而打開。

11.A

12.A棧支持子程序調(diào)用。棧是-種只能在-端進行插入或刪除的線性表,

在主程序調(diào)用子函數(shù)時要首先保存主程序當前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子

程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼

續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A。

13.A

const是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用

const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量

照能被讀,必須初始化。A選項沒有初始化,B、C、D選項都正確。

14.B

在某基類中聲明為vitual并在一個或多個派生類中被重新定義的成員

函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr

一>outpnt后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函

數(shù),所以ptr->Print會執(zhí)行派生類的Print,即輸出D,所以本題答案為

Bo

15.A

本題:考查構(gòu)造函數(shù)和復制構(gòu)造函數(shù)以及重載運算符。本題中先后定

義了兩個對象objl,obj2,依次輸出口,然后定義了對象obj3,凋用

復制構(gòu)造函數(shù),輸出2,最后執(zhí)行三次析構(gòu)函數(shù),輸出444。

16.B

17.C解析:在&&運算中,如果第1個表達式的值為假時,第2個表達

式將不再計算。在表達式中第1個表達式m=a>b的值為0,也就是假,

所以第2個表達式的將不再計算。所以n的值沒有變。

18.C

Co【解析】本題調(diào)用了fun函數(shù)。

19.A詳細設(shè)計的任務是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個模

塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)

據(jù)結(jié)構(gòu)的細節(jié),所以A錯誤。

20.C

Co【解析】把x和y化為二進制,X=14表示為1110,y=15表示為

1111,所以x||y=l,A的ASCII是65,a的ASCII是97,所以A<

a=l,因此W=l。

21.D

本題考查的是引用調(diào)用,因為函數(shù)swapOl用調(diào)用參數(shù)a,所以在swap

函數(shù)中a的變化會改變主函數(shù)中a的值,即a自加1,但b的值并未改

變。

22.A解析:在結(jié)構(gòu)圖中,用帶有箭頭的連線表示模塊之間的調(diào)用關(guān)系。

箭頭由前一個模塊指向后一個模塊,表示前一個模塊調(diào)用后一個模塊。

本題的正確答案為A。

23.B

解析:本題考查的知識點是;基本類型的派生類型。C++語言中,基

本類型的字長及其取值范圍可以放大和縮小,改變后的類型就叫做基

本類型的派生類型。派生類型聲明符是由基本類型關(guān)鍵字char、int、

float、double前面加上類型修飾符組成的。類型修飾符包括:short短

類型,縮短字長:long長類型,加長字長;signed有符號類型,取值

范圍包括正負值:unsigned無符號類型,取值范圍只包括正值。其中

signed和unsigned只能同時出現(xiàn)一個,如果省略則默認為signed0

short和long也只能同時出現(xiàn)一個,如果修飾的類型是int,則可以省

略into由此可見,選項A中,unsigned\u30001ong\u3000int的省略形

式為unsigned\u30001ong;選項B中,signed\u3000short\u3000int的省

略形式就是short,正確;選項C中,unsigned\u3000short\u3000int的

省略形式是unsigned\u3000short:選項D中,short\u3000int的省略形

式是short。故本題應該選擇B。

24.a[i++]

25.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)

26.fstream.h

27.運行時運行時解析:本題考查的是多態(tài)性的概念,多態(tài)性主要是指

發(fā)出同樣的消息而被不同類型的對象接收時導致完全不同的行為,它一

般分為編譯時的多態(tài)性和運行時的多態(tài)性,比如函數(shù)重載和虛函數(shù)。

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

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

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

29.私有私有解析:派生類成員在私有繼承方式下不能訪問基類的所有

成員,在保護繼承方式下不能訪問基類的私有成員,在公有繼承方式下

不能訪問基類的私有成員。

30.真真解析:本題考查的是對于邏輯運算符號的理解,運算符的任

何一邊取值為真,則整個運算結(jié)果為真。

31.有格式有格式解析:C++中運算符“>>”和“<<”都是屬于有格式

的輸入輸出。注意:使用cin,cout進行輸入輸出時應包括頭文件

'iostream.ho

32.從基類繼承的成員從基類繼承的成員解析:派生類的成員由繼承的

成員和自己定義的成員組成。

33.順序結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計方法是程序設(shè)計的先進方法和工具。其中結(jié)

構(gòu)化程序設(shè)計的三種基本控制結(jié)構(gòu)是選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、順序結(jié)構(gòu)。

34.統(tǒng)計文件abc.txt的行數(shù)統(tǒng)計文件abc.txt的行數(shù)解析:函數(shù)

getline(char*s,streamsizen)從當前輸入位置開始提取字符存入s所指向

的具有n個字節(jié)的字符空間中。程序中這種調(diào)用方式是以換行符為結(jié)束

標志輸入字符序列,即輸入一行字符(回車換行前的所有字符序列)。程

序中通過while循環(huán)來統(tǒng)計abc.txt中行數(shù)。

35.ios類ios類

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

(2)應改為"cateh(inti)”。

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

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

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

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

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

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

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

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

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

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

改為“catch(...)"。

37.⑴應添加“public:

\n(2)“inti”應改為“inti(10)

\n(3)“i++;”應改為“i-

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

保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類

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

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

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

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

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

38.(l)“voidmain”。

(2)“intm=0144;

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

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

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

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

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

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

對應十六進制的25,因此2和3應分別改成“intm=0144;”,

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

39.⑴應改為“ein.getline(str,120,?);”。

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

,,

(3)應改為“if(str[i]>=a&&str[i]<=2)0

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

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

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

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

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

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

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

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

tc,,

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

40.⑴應改為“TCobjl(l);

(2)應改為“Objl.SetNumber(lO);”。

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

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

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

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

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

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

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

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

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

“obj2.SetNumber(lOO);

41.⑴應改為"usingnamespacestd;"。

\n⑵應改為“outl.open('l.txt',ios::binary|ios::app);"。

,5

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

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

對于C++中弓[入標準命名空間的格式,缺少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個標識應該用流成員函數(shù)put輸出字符,所

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

42.(1)應改為"catch(char*s)”。

(2)應改為"cateh(inti)”。

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

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

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

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

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

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

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

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

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

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

改為“catch(…)”。

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

\n(2)應改為"while(str[i])”。

,,

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

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

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

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

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

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

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

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

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

44.(1)應改為"assert(sizeof(sl)==4);

\n⑵應改為"assert(sizeof(s2)==lO);

\n(3)應改為"assert(sizeof(s3)==l);

\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正

常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。

4tassert(sizeof(sl)==3);"語句中"sizeof(sl)==3”為假,這會使程序產(chǎn)生異

常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的

長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)

str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeof(s2)==10)

charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為

"assert(sizeof(s3)==1);”。

45.(l)“staticintn=O"應改為"staticintn;"。

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

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

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

處應改為“statici

溫馨提示

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

評論

0/150

提交評論