2023年福建省漳州市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2023年福建省漳州市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2023年福建省漳州市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2023年福建省漳州市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2023年福建省漳州市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年福建省漳州市全國計算機等級考試

C++語言程序設計測試卷(含答案)

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

一、1.選擇題(10題)

1.有如下程序:#include<iostream.h>classBase{protected:inti;

public:intj;};classDerived:publicBase{intm;public:intn;);

intmain(){Derivedd;d.i=0;//[lJd.j=O;//[2]d.m=0;//[3]d.n=0;

//[4]return0;}其中主函數(shù)中有兩個賦值語句有錯,這兩個錯誤的賦值

語句是()o

A.[l]和[2]B.[l)和網(wǎng)C.⑵和[3]D.⑵和[4]

2.存取指針所指的值時,采用的運算符是

A.#B.&C.%D.*

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

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

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

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

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

4.以下非法的賦值表達式是

A.n=(i=2,++i);BJ-+;C.++(i+l);D.x=j>0;

5.數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的()。

A.存儲結構B.物理結構C.邏輯結構D.物理和存儲結構

6.在設計程序時,應采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程

序結構應有助于讀者理解

7.下列關于二定義性的說法錯誤的是o

A.派生類中的成員與基類的成員同名,在調(diào)用時可能存在二義性

B.派生類的二個基類是有同名成員,調(diào)用這一成員時可能產(chǎn)生有二義性

C.派生類的二個基類是從同一共同基類派生出來,調(diào)用基類的成員時可

能存在二義性

D.使用成員限定可解決二義性問題

8.下面關于break語句的描述中,不正確的是()。

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

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

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

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

9.一個()允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)成員及某些

成員函數(shù)的返回值能取任意類型。

A.函數(shù)模板B.模板甲數(shù)C.類模板D.模板類

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

CSample{private:inti;public:CSample();CSample(intval);void

DisplayO;~CSample();};CSample::CSample(){cout<<"Cl";i=

0;}CSample::CSample(intval){cout<<"C2";i=val;}void

CSample::Display(){cout<<i<<}CSample::?CSample(){cout

<<"D";}intmain(){CSamplea,b(10);return0;}執(zhí)行后的輸出結

果為()o

A.C1C2DDB.DDC1C2C.C2C1DDD.C1DC2D

二、單選題(13題)

11.若執(zhí)行下面的程序時,從鍵盤上輸入3和4,則輸出結果是main(){int

a,b,s;cin>>a>>b;s=a;if(a<B)s=b:s=s*s;cout<<s<<

endl;}

A.14B.16C.18D.20

12.不能作為重載函數(shù)的調(diào)用的依據(jù)是()。

A.參數(shù)個數(shù)B.參數(shù)類型C.函數(shù)類型D.函數(shù)名稱

13.數(shù)據(jù)字典(DD)所定義的對象都包含于

A.程序流程圖B.數(shù)據(jù)流圖(DFD圖)C方框圖D.軟件結構圖

14.在E—R圖中,用來表示實體聯(lián)系的圖形是()o

A.橢圓圖B.矩形C.菱形D.三角形

15.下面的程序中,錯誤的語句是()O

①折田粒

②voidmain

③(

④int*p=newint[lJ;

⑤P=9;

@cout<<.*PV<endl;

⑦delete口p;

⑧}

A.?B.⑤C.@D.⑦

16.下列選項中不合法的標識符是()。

A.printB.FORC.&aD.-OO

17.有如下程序:

#include<iostream>

usingnamespacestd;

intmain(){

inta[6]={23,15,64,33,40,58};

intsl,s2;

sl=s2=a[0];

for(int*p=a+1;p<a+6;p++){

if(sl>*p)sl=*P;

if(s2<*p)s2=*p;

1

cout<<sl+s2<<endl;

returnO;

}

運行時的輸出結果是()。

A.23B.58C.64D.79

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

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

19.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.軟件集成測試計劃B.軟件詳細設計說明書C.用戶手冊D.軟件需求

規(guī)格說明書

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

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

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

21.有如下程序:

#include<iostream>

usingnamespacestd;

classBasel

(

public:

Basel(intD.{cout?d;}

一Basel{}

};

classBase2

(

public:

Base2(intD.{tout?d;}

?Base2{}

};

classDerived:publicBasel,Base2

(

public:

Derived(inta,intb,intc,intD.:BaseI(B.,Base2(A.,bI(D.

b2(C.{}

private:

intbl:

intb2:

};

intmain

(

Derivedd(l,2,3,4);

return0;

}

執(zhí)行這個程序的輸出結果是()oA.1234B.2134C.12D.21

22.有如下程序:

#inClude<iostream>usingnamespaCestd;ClassMyClass{

public:

MyClass(intX):val(X){}

voidPrintConstJtout^'Const:val=,,?val?,\t,;}void

Print{tout?,,val=,,?val?,\f;}

private:

intval;};

intmain{

ConstMyClassobjl(10);MyClassobj2(20);

objl.Print;obj2.Print;return0;

)

執(zhí)行這個程序的輸出結果是()。A.val=10Const:val=20

B.Const:val=10Const:val=20

C.Const:val=10val=20

D.val=10val=20

23.有如下程序:

#include<iostream>

usingnamespaeestd;

intmain

(

voidfunction(doubleval);

doubleval:

function(val);

eout?val:

return0;

)

voidfunction(doubleval)

(

val=3;

}

編譯運行這個程序?qū)⒊霈F(xiàn)的情況是()0A.編譯出錯,無法運行B.輸出3C.輸出:

3.0D.輸出一個不確定的數(shù)

三、2.填空題(12題)

24.閱讀下面程序:

#include<iostream.h>

voidfunl(chara,charb)

(

charc;

c=a;a=b;b=C;

}

voidfun2(char&a,charb)

(

charc;

c=a;a=b;b=c;

)

voidfun3(char&a,char&b)

(

charc;

c=a;a=b;b=C;

voidmain()

chara,b;

a='Af;b='B';

funl(a,b);cout<<a<<b;

a='A';b=E;

fun2(a,b);cout<<a<<b;

a='A';b='B';

fun3(a,b);cout<<a<<b;

}

則該程序的輸出為【

25.二叉樹由三個基本單元組成,即左子樹,右子樹和【

26.下面是復數(shù)類complex的定義,其中重載的運算符的功能是返回

一個新的復數(shù)對象,其實部等于兩個操作對象實部之和,虛部等于兩個

操作對象虛部之和;請補充完整。

classcomplex

(

doublereal;〃實

doubleimag;〃虛部

public:

complex(doubler,doublei):real(r),imag(i){}

complexoperator+(complexa)

(

returncomplex();

);

27.若下列程序運行時輸出結果為

1,A,10.1

2,B,3.5

請將程序補充完整。

#include<iostream>

usingnamespacestd:

intmain()

(

voidtest(mt,char,double);

test(l,W,10.1);

test(2,'B');

return0;

)

voidtest(inta,charb,doublec)

(

cout<<a<

28.轉(zhuǎn)義字符序列中的首字符是____字符。

29.在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個[】。

30.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中【】反映了模

塊內(nèi)各成分之間的聯(lián)系。

31.任何非空樹中有且僅有一個結點沒有前驅(qū)結點,該結點就是樹的【】。

32.Jackson方法是一種面向的結構化方法。

33.下面程序的輸出結果為【】。

#include<iostream>

usingnamespacestd;

voidinitialize(intprintNo,intstate=O);

voidinitialize(ihtprintNo=l,intstate);

intmain()

(

initialize();

return0;

)

voidinitialize(intprintNo,intstate)

(

cout<<printNo<<<<state<<endl;

)

34.C++語言中關鍵字運算符有new、delete和。

35.C++語言的基本控制結構為順序結構、選擇結構和【】。

四、程序改錯題(10題)

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

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

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

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

構,錯誤的語句在

II******error******的下面o

試題程序:

#include<iostream>

#include<fstream>

///舉*1**不1**1舉**舉**舉terror**'不,??*?????????????????

usingstd;

voidWriteFile(char*s)

ofstreamout1;

////不不不不小不小不error’不不不不不不不

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

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

///不不不不?>!?不?>!?不??1?不小?>1?prrcr不不不不不不不不?£?

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

ofstreamout1;

outl.open(nl.txt");

outl.close;

intmain

chars[1024];

ClearFile;

cout?Hpleaseinputastrin9:u?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

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

9,8,7,6,5

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

可°其他的語句不能修改.

試題程序:

#include(iostream.h>

classTC

/KV*2**£?*2**2**2*/

/汴汴不汴舉舉舉舉prror不不不不不不不不/

TC(inti)

(

m_i=i;

voidprint

cout?—m_i?,

public:

intm_i;

};

intmain

/?£??的/

/小小小年年?小小errcr不不不不不不不不/

inti;

TC04(10);

while(i>5)

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

i++:

04.print;

)

cout?endl;

returnO;

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw(nerrorH);

/不不冰冰冰冰小不error不不卻亭予亭卻不

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

I

///年年年***v*l*v*l*prmr’,?**??、??、,?、■?、

catch

(

cout?i?endl;

}

try

(

throw(O);

throwC'error”);

)

///******斗*prmr*不**不?£予**2^不不

catch

cout?nERRORH?cndl;

returnO;

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

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

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

到屏幕中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O:

charstr[120J;

cout?nEnterastringendwith?.n?endl;

/不不不不不小小小prrcr不不不不不不不不

cin.getline(str,120);

不不不不不不*r*rerror干不爺爺爺爺*w*干*2*干*2*

while(str)

/!

if(str[i])=a)

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

i++;

cout?str?endl;

return;

40.使用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;

)

/不prmr’j不不不不不

TC:display

tout?"i=',?i?H,n?endl;

/?&*

//不不不不不不error不不不不不不

TC:TC

COUI?"Destructor"?endl:

)

voidmain

TCa;

a.display;

)

41.使用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(intmi

(

number二m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?Mnumber="?number?endl;

)

private:

intnumber;

};

voidmain

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

//****舉***pj*!*cr*不******

TCobjl;

objl.Print;

TCobj2(3);

/不不不不不不不不error不不不不不不不不

objl.number=10;

//********error*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

}

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

不不不不不不不不error不不不不不不不不/

staticintn=O:

CO

n++:

co

n-:

)

):

?L■的-X*?£**X**X**£*

小小個個個個個個errcr個個個不個不不不

intCO::n;

voidmain

COobj;

COobj2[7];

COCNULL:

c=&obj:

*i**1**1*?£*/

/小小小小小小小小errcr不不不不不不不不/

eout?C.n?endl;

cout?C0::n?endl;

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw(nerror");

/?J*■J*■的■的

//年小小不小小小小errcr不不不不予不予不

catch(chars)

cout?s?endl;

try

throw((int)0);

!?*????????*??*?

//****舉斗汴*不******

catch

cout?i?endl;

)

try

throw(O);

throwC^rror");

)

/不不不不不不不小error不不不不不不予不

catch

cout?MERROR"?endl;

)

returnO;

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

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

為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

(1)不能刪除assert()語句。

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

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

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

(

char*sl=,,abc":

/******汴*error不不不不不不予不

assert(sizeof(s1)==3):

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

chars2[10]=Mabn:

//小小小小小小小小prrcr不不不不不不不不

assert(sizeof(s2)==2);

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

chars3=23:

,?*?

//舉不舉*舉**舉errcr不??????????????????

assert(sizeof(s3)==4);

cout?nsizeof(s3)=r'?endl;

return;

)

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?HEnterastringendwith?.,,?endl;

//*1**1**1**1**1**1**1*?£?

//小小小小?年小小prrcr不不不不不不不不

cin.getline(str,120);

while(str)

if(strlij)=a)

str[il=str[il-a+A;

i++;

}

cout?str?endl;

return;

五、綜合應用題(2題)

46.(1)應添加“virtualvoidGetNamt!=0;"。

(2)應添加"constchar*GetName2”。

(3)應添加“TC2(char*str)”。

⑷應添加“m_st巾]=0;”。

【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛

函數(shù)”。在C++中?在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛

函數(shù)是在聲明虛函數(shù)時被"初始化’’為0的函數(shù),即

€€virtualvoidGetName=0;"。第2處要求“函數(shù)GetName2實現(xiàn)獲得名字

的緩存,但只獲得讀允許操作這個緩存”。只能弓I用數(shù)據(jù)成員,而不能修

改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名”,即

t4,,

constchar*GetName2o第3處要求“實現(xiàn)TC2的構造函數(shù)”。TC2的構

造函數(shù)與類TC2的名稱應該相同,而且第3處的大括弧中是對字符數(shù)

組str的操作,所以類TC2的構造函數(shù)中的參數(shù)為str,即這里補全為

“TC2(char*str)”°第4處要求“完成TC2的構造函數(shù),實現(xiàn)對名字的處

理“,補全類TC2的構造函數(shù),構造函數(shù)中的名字變量str對應于類TC

中的成員變量所以這里補全變量賦值操作“m_str[i]=0;”。

47.使用VC++6.0打開考生文件夾下的源程序文件3.①p。類

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

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

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

整。

⑴完成類的構造函數(shù)功能,請在注釋1后添加適當?shù)恼Z句。

⑵完成構造函數(shù)對姓名的賦值,請在注釋2后添加適當?shù)恼Z句。

⑶定義類的友元函數(shù)fun,請在注釋3后添加適當?shù)恼Z句。

(4)補充函數(shù)fun的年齡比較功能,請在注釋4后添加適當?shù)恼Z句。

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

他的程序代碼。

試題程序:

#include<iostream.h>

classPeople

(

public:

f?)??1?1?1??)?

/f?Tw?[?I?Tw?Tw?Tw

(

inti;

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

{m_UserName[i]=sUserName[i];

}

/*1?*!??>!**1*?1?*1**1**1**1**1*?1**1**1**1*

/f**?*7?,4?*.?*.?*.?*.?J*.?*.?*.??,?*.?■,、

m_Old=nOld;

private:

charm_UserName[32];

intm_Old;

//rJCrJC③

};

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

/I********4********

if

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

+)

slij=personl.m_UserName[i];

s[i+l]=0;

)

)

else

(

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

+)

{s[ij=person2.m_UserName[iJ;

s[i+l]=0;

}

}

)

voidmain

(

chars[32];

Peoplepl("abcH,20);

Peoplep2(',def',30):

fun(S,pl,p2);

cout?s?endl:

return;

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

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

序文件MyMainlO.cpp。程序中定義了兩個類Base和Derived,但類的

定義并不完整。

請按要求完成下列操作,將類的定義補充完成:

①類Derived是基類Base公有派生來的。請在注釋“//**1**”之后添加

適當?shù)恼Z句。

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

私有成員a初始化為i+1,類Derived的私有成員b初始化為io請在注

釋“//**2**”之后添加適當?shù)恼Z句。

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

顯式調(diào)用基類的show。函數(shù),然后要輸出私有成員b的值。請在注釋。/*

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

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

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

//MyMainlO.cpp

#include<iostream>

usingnamespacestd;

classBase

(

public:

Base(intx)

(

a=x

)

voidshow()

(

cout<<a;

1

private:

inta;

〃***]***

(

public:

〃***2***

voidshow();

private:

intb;

);

voidDerived::show()

(

〃***3***

)

intmain()

(

Derivedd(l),*pb;

pb=&d;

pb->show();

return0;

)

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

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

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

⑴完成類ARRAY的帶一個參數(shù)的構造函數(shù),參數(shù)i為int型,如果i不

是正數(shù)則輸出錯誤信息并退出,否則申請int型的大小為i的空間,然

后把i賦值給類的數(shù)據(jù)成員num。請在注釋“//**1**”之后添加適當?shù)恼Z

句。

⑵完成類ARRAY的拷貝初始化構造函數(shù),注意解決重復刪除的問題,

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

⑶完成類ARRAY的重載的運算符函數(shù)口,參數(shù)i為int型,如果i超界

則輸出錯誤信息并退出,否則把下標為i的元素返回,請在注釋“〃**3**”

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

(4)完成類ARRAY的重載的運算符函數(shù)二,同樣需要注意解決重復刪除

的問題,不能只是簡單的賦值,請在注釋“〃**4**”之后添加適當?shù)恼Z句。

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

源程序文件test27_3.cpp清單如下;

#include<iostream.h>

#include<stdlib.h>

classARRAY

(

private:

int*p,num;

public:

ARRAY(){p=newint[10],num=10;}

ARRAY(inti)

〃**

cout<(”錯誤!數(shù)組長度應為正。\n”;

exit(O);

)

p=newint[ij;

num=i;

ARRAY(constARRAY&a);

int&operator[](inti);

-ARRAY(){deletep;)

ARRAY&operator=(constARRAY&a);

friendARRAYoperator+(ARRAY&a,ARRAY&b);

friendostream&operator<<(ostream&os,ARRAY&a);

);

ARRAY::ARRAY(constARRAY&a)

(

H**2**

for(inti=0;i<num;i++)

p[ij=a.plij;

)

int&ARRAY::operator[](inti)

(

H**3**

(

cout<<”越界訪問!”;

exit(0);

)

returnp[i];

)

ARRAY&ARRAY::operator=(constARRAY&a)

(

num=a.num;

p=newint[num];

for(inti=0;i<num;i++)

p[il=a,p[il;

〃**4**

)

ARRAYoperator+(ARRAY&a,ARRAY&b)

(

if(a.num!=b.hum)

(

cout<<“數(shù)組長度K相同!”<<endl;

exit(0);

)

ARRAYt(a.num);

for(inti=0;i<a.num;i++)

t.p[i]=a.p[i]+b.p[i];

returnt;

ostream&operator?(ostream&os,ARRAY&a)

(

inti=0;

for(;i<a.num;i++)

(

cout<<a.p[i]<<11;

if(!((i+l)%10))cout<<endl;

)

returnos;

}

voidmain()

(

ARRAYa(3);

a[0]=a[l]=a[2]=3;

cout<<'a'<<a<<end1;

ARRAYb(a);

cout<<V<<b<<endl;

ARRAYc(2);

c=a+b+b;

cout<<'c'<<c<<end1;

c=((b=(a+b))+c);

cout<<'a'<<a<<'b'<<b<<*c'<<c<<end1;

參考答案

l.B

2.D解析:對指針所指向的地址取值時,采用的存取運算符為,&為取

地址符。

3.C解析:C++中,規(guī)定對靜態(tài)數(shù)據(jù)成員的初始化應該在類體外進行初

始化;靜態(tài)數(shù)據(jù)成員可以被任意訪問權限許可的函數(shù)或?qū)ο笤L問;靜態(tài)

數(shù)據(jù)成員也可以定義為私有的靜態(tài)數(shù)據(jù)成員;靜態(tài)數(shù)據(jù)成員既可以通過

類名訪問,也可以通過對象訪問。

4.C解析:對十任何一種賦值運算,其賦值號或復合賦值號左邊必須是

一個左值。左值是指具有對應的可由用戶訪問的存儲單元,并且能夠由

用戶改變其值的量。而在C)選項中賦值號對應的是表達式“i+1”,不是

一個左值,因此是非法的賦值表達式。

5.C

數(shù)據(jù)結構概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結構、存儲結構

(物理結構)及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結構只抽象地反映數(shù)據(jù)元

素之間的邏輯關系,即數(shù)據(jù)元素之間的前后件關系,而不管它在計算

機中的存儲表示形式。

6.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)

不選;注解行有利于對程序的理解,不應成少或取消,選項B)也不選;程

序的長短要依照實際情況而論,而不是越短越好,選項C)也不選c

7.B

8.D

Do【解析】木題考查break語句的使用。break可以結束switch語句

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

9.C

10.A解析:本題程序首先定義了類CSample,其內(nèi)部成員為private類

型數(shù)據(jù)成員inti和public類型成員函數(shù),包括兩個構造函數(shù)、一個析構

函數(shù)和一個普通成員函數(shù)voidDisplayo,其成員函數(shù)的功能分別為:

①CSample::CSample():構造函數(shù),輸出構造函數(shù)的執(zhí)行消息“C1”,并

將數(shù)據(jù)成員i賦值為i=0:

②CSample::CSample(intval):重載構造函數(shù),輸出構造函數(shù)的執(zhí)行消

息“C2”,并將數(shù)據(jù)成員i賦值為i=val:

?voidCSample::DisplayO:成員函數(shù),輸出數(shù)據(jù)成員i的值;

?CSample::?CSample。:析構函數(shù),輸出析構函數(shù)的執(zhí)行消息,并輸

出數(shù)據(jù)成員值。在主函數(shù)中,程序分別采用兩個構造函數(shù),創(chuàng)建了類

CSample的兩個對象,一個利用不帶參數(shù)的構造函數(shù)創(chuàng)建對象a,另一

個利用帶參數(shù)的構造函數(shù)創(chuàng)建對象b0根據(jù)上面的分析,可以得到a和

b中數(shù)據(jù)成員i的值分別為0(不帶參數(shù)情況)和10(所帶參數(shù)值)。因比下

面的兩條輸出語句分別輸出“0”和“10”。

此外,由于系統(tǒng)在創(chuàng)建對象時會調(diào)用構造函數(shù),在對象生命期結束時會

調(diào)用析構函數(shù),因此程序還會有相應的輸出。由于構造函數(shù)的調(diào)用順序

與對象創(chuàng)建的先后順序一致,因此程序應該首先輸出兩個構造函數(shù)的調(diào)

用信息,即“C1”和“C2”。在主函數(shù)執(zhí)行結束后,由于兩個對象a和b的

生命期已經(jīng)結束,因此系統(tǒng)將調(diào)用析構函數(shù)收回系統(tǒng)資源。由于析構函

數(shù)的調(diào)用順序與構造函數(shù)完全相反,因此系統(tǒng)將首先調(diào)用對象b的析構

函數(shù),程序輸出析構函數(shù)執(zhí)行信息“D”;之后調(diào)用對象a的析構函數(shù),

程序輸出析構函數(shù)執(zhí)行信息“D”。

H.B解析:按照程序的執(zhí)行順序.考生可以很快得出正確答案為Bo

I2.D解析:所謂重載函數(shù)是指同一個函數(shù)名可以對應多個函數(shù)的實現(xiàn),

編譯器會根據(jù)參數(shù)個數(shù)、參數(shù)類型和函數(shù)返回值類型不同而自動調(diào)用相

應的函數(shù)。

13.B

14.CC?!窘馕觥縀—R圖中用矩形表示實體(等同于表),用橢圓形表示實

體的屬性(等同于表中字段),用菱形表示實體關系(等同于外鍵)。

15.B

本題考查的是指針的使用,P是指向int型的指針,若想給它指向的元

素賦值,應使用*符號,贏接賦值相當于改變了原來P存儲的地址。

16.C

Co【解析】標識符的概念只能由數(shù)字、字母和下畫線組成,并且只能

以字母和下畫線開頭,所以選項C不正確。

17.D

Do【解析】根據(jù)題意,找出數(shù)組a中最大值si和最小值s2并計算二

者的和。

18.D

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

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

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

非零。

19.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求

規(guī)格說明書、需求評審四個方面。所以選擇D。

20.D

21.D

本題考查派生類的構造函數(shù)和析構函數(shù),在定義一個派生類的對象

時,先調(diào)用基類的構造函數(shù),然后再執(zhí)行派生類的構造函數(shù),對象釋

放時,先執(zhí)行派生類的析構函數(shù),再執(zhí)行基類的析構函數(shù)。本題中定

義一個派生類對象時,分別調(diào)用基類的構造函數(shù),所以分別輸出21。

22.C

本題考查常對象、常成員函數(shù)及構造函數(shù)。常對象只能調(diào)用常成員函

數(shù),普通對象調(diào)用普通成員函數(shù)。所以本題中objl為常對象,執(zhí)行

objl.print后,會執(zhí)行常構造函數(shù),輸出const:val=10;而obj2為普

通對象,執(zhí)行obj2.print時,會執(zhí)行默認構造函數(shù),輸出val=20。放

答案為C。

23.D

本題考查函數(shù)調(diào)用及傳值方式傳遞參數(shù),執(zhí)行函數(shù)function時,并沒

有將3的值傳回來,而val又沒有初始化,所以會輸出一個不確定的

值,D選項正確。

24.ABBBBA

25.根節(jié)點根節(jié)點解析:二叉樹由根節(jié)點、左子樹和右子樹組成。

26.real+a.realimag+a.imagreal+a.real,iniag+a.imag解析:在C++語言中,

可以通過類名來創(chuàng)建一個臨時對象,其一般形式如下:類名(構造參數(shù)

列表)。本題中,需要返回一個“實部等于兩個操作對象實部之和,虛部

等于兩個對象虛部之和”的complex類對象,因此括號內(nèi)填入

real+a.realjmag+a.imag,就可以返回一個這樣的對象。

27.=3.5。=3.5。解析:本題考查了函數(shù)默認參數(shù)的應用。本題中第一

次調(diào)用test()函數(shù)數(shù)值1,A,10.11第二次調(diào)用少了個實參:卻要求輸出

2,B,3.5,由此分析,應將test()函數(shù)的第三個參數(shù)聲明為默認參數(shù)。

且默認為3.5,才能達到要求輸出結果。故應填入=3.5或者c=3.5。

28.\

29.關系關系解析:在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二

維表稱為一個關系。表中的每一列稱為一個屬性,相當于記錄中的一個

數(shù)據(jù)項,對屬性的命名稱為屬性名;表中的一行稱為一個元組,相當于

記錄值。

30.內(nèi)聚內(nèi)聚

31.根節(jié)點根節(jié)點解析:在樹結構中,每個節(jié)點之前有一個前件,稱為

父節(jié)點,沒有前件的節(jié)點只有一個,稱為樹的根節(jié)點。

32.數(shù)據(jù)結構數(shù)據(jù)結構

33.10

34.sizeofsizeof解析:C++語言中關鍵字運算符有3個,分別為new、

delete和sizeofcnew是申請內(nèi)存,delete是釋放內(nèi)存,sizeof是求字節(jié)

數(shù)。

35.循環(huán)結構循環(huán)結構解析:C++語言3種基本結構就是順序結構,選

擇結構,循環(huán)結構。

36.(1)應改為"usingnamespacestd;"o

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

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

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

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

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

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

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

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

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

37.(1)應添加“public:"。

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

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

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

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

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

化。變量的初始化可以通過號,也可以和初始化對象一樣添加構造

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

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

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

38.⑴應改為"catch(char*s)”。

⑵應改為“cateh(inti)”。

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

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

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

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

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

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

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

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

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

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

改為"catchy..)”。

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

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

(3)應改為巾]>=a&&st巾]v=2)L

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

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

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

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

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

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

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

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

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

40.(1)應改為"TC::TC”。

\n(2)應改為"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處的語句應改為“voidTC"display"。由第

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

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

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

41.(1)應改為"TCobjl⑴;:

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

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

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

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

輸出結果兩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為類,并不是對象,

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

“obj2.SetNumber(lOO);

42.(1)“staticintn=O”應改為"staticintn;"。

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

(3)44cout?c.n?endl;”應改^Jt4cout?c->n?endl;"。

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

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

象,應改為"coutv〈c->n<<endl;

43.(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)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處

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

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

改為“catch(…)”。

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

\n⑵應改為"assert(sizeof(s2尸=10);”。

\n(3)應改為"assert(sizeoRs3)=l);”。

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

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

uassert(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):

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

t€asscrt(sizcof(s3)=l);

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

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

,,

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

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

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

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

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

束符,若不是結束符,在循環(huán)中判

溫馨提示

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

最新文檔

評論

0/150

提交評論