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

下載本文檔

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

文檔簡介

2023年福建省漳州市全國計(jì)算機(jī)等級(jí)考試

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

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

一、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ù)中有兩個(gè)賦值語句有錯(cuò),這兩個(gè)錯(cuò)誤的賦值

語句是()o

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

2.存取指針?biāo)傅闹禃r(shí),采用的運(yùn)算符是

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

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

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

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

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

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

4.以下非法的賦值表達(dá)式是

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

5.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。

A.存儲(chǔ)結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲(chǔ)結(jié)構(gòu)

6.在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是()。

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

序結(jié)構(gòu)應(yīng)有助于讀者理解

7.下列關(guān)于二定義性的說法錯(cuò)誤的是o

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

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

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

能存在二義性

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

8.下面關(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)

9.一個(gè)()允許用戶為類定義一種模式,使得類中的某些數(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í)行后的輸出結(jié)

果為()o

A.C1C2DDB.DDC1C2C.C2C1DDD.C1DC2D

二、單選題(13題)

11.若執(zhí)行下面的程序時(shí),從鍵盤上輸入3和4,則輸出結(jié)果是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ù)個(gè)數(shù)B.參數(shù)類型C.函數(shù)類型D.函數(shù)名稱

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

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

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

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

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

①折田粒

②voidmain

③(

④int*p=newint[lJ;

⑤P=9;

@cout<<.*PV<endl;

⑦delete口p;

⑧}

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

16.下列選項(xiàng)中不合法的標(biāo)識(shí)符是()。

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;

}

運(yùn)行時(shí)的輸出結(jié)果是()。

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

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

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

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

A.軟件集成測試計(jì)劃B.軟件詳細(xì)設(shè)計(jì)說明書C.用戶手冊(cè)D.軟件需求

規(guī)格說明書

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

則下列表達(dá)式中,結(jié)果為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í)行這個(gè)程序的輸出結(jié)果是()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í)行這個(gè)程序的輸出結(jié)果是()。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;

}

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

3.0D.輸出一個(gè)不確定的數(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.二叉樹由三個(gè)基本單元組成,即左子樹,右子樹和【

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

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

操作對(duì)象虛部之和;請(qǐng)補(bǔ)充完整。

classcomplex

(

doublereal;〃實(shí)

doubleimag;〃虛部

public:

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

complexoperator+(complexa)

(

returncomplex();

);

27.若下列程序運(yùn)行時(shí)輸出結(jié)果為

1,A,10.1

2,B,3.5

請(qǐng)將程序補(bǔ)充完整。

#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.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)[】。

30.耦合和內(nèi)聚是評(píng)價(jià)模塊獨(dú)立性的兩個(gè)主要標(biāo)準(zhǔn),其中【】反映了模

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

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

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

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

#include<iostream>

usingnamespacestd;

voidinitialize(intprintNo,intstate=O);

voidinitialize(ihtprintNo=l,intstate);

intmain()

(

initialize();

return0;

)

voidinitialize(intprintNo,intstate)

(

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

)

34.C++語言中關(guān)鍵字運(yùn)算符有new、delete和。

35.C++語言的基本控制結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和【】。

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

36.使用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ò)誤的語句在

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,該程序運(yùn)

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

9,8,7,6,5

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

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

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

程序異常,輸出信息為

error

O

ERROR

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

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

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

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

到屏幕中。

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

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

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,該程序

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

number=l

number=10

number=100

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

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

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

staticintn=O:

CO

n++:

co

n-:

)

):

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

小小個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)errcr個(gè)個(gè)個(gè)不個(gè)不不不

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,該程序

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

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

程序異常,輸出信息為

error

O

ERROR

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

構(gòu),錯(cuò)誤的語句在//******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,該程序運(yùn)

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

為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=l

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

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

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

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

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

試題程序:

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

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

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

中。

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

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

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

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

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

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

⑷應(yīng)添加“m_st巾]=0;”。

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

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

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

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

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

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

t4,,

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

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

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

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

理“,補(bǔ)全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對(duì)應(yīng)于類TC

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

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

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

名,然后輸出這個(gè)姓名到屏幕。

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

整。

⑴完成類的構(gòu)造函數(shù)功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

⑵完成構(gòu)造函數(shù)對(duì)姓名的賦值,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

⑶定義類的友元函數(shù)fun,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

(4)補(bǔ)充函數(shù)fun的年齡比較功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來,請(qǐ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.綜合應(yīng)用題(2題)

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

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

定義并不完整。

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

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

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

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

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

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

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

顯式調(diào)用基類的show。函數(shù),然后要輸出私有成員b的值。請(qǐng)?jiān)谧⑨尅?*

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

注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(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此工程包含一個(gè)

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

完成下列操作,將程序補(bǔ)充完整。

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

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

后把i賦值給類的數(shù)據(jù)成員num。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z

句。

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

請(qǐng)?jiān)谧⑨屩筇砑舆m當(dāng)?shù)恼Z句。

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

則輸出錯(cuò)誤信息并退出,否則把下標(biāo)為i的元素返回,請(qǐng)?jiān)谧⑨尅啊?*3**”

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

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

的問題,不能只是簡單的賦值,請(qǐng)?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。

注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(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<(”錯(cuò)誤!數(shù)組長度應(yīng)為正。\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解析:對(duì)指針?biāo)赶虻牡刂啡≈禃r(shí),采用的存取運(yùn)算符為,&為取

地址符。

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

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

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

類名訪問,也可以通過對(duì)象訪問。

4.C解析:對(duì)十任何一種賦值運(yùn)算,其賦值號(hào)或復(fù)合賦值號(hào)左邊必須是

一個(gè)左值。左值是指具有對(duì)應(yīng)的可由用戶訪問的存儲(chǔ)單元,并且能夠由

用戶改變其值的量。而在C)選項(xiàng)中賦值號(hào)對(duì)應(yīng)的是表達(dá)式“i+1”,不是

一個(gè)左值,因此是非法的賦值表達(dá)式。

5.C

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

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

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

機(jī)中的存儲(chǔ)表示形式。

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

不選;注解行有利于對(duì)程序的理解,不應(yīng)成少或取消,選項(xiàng)B)也不選;程

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

7.B

8.D

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

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

9.C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

調(diào)用析構(gòu)函數(shù),因此程序還會(huì)有相應(yīng)的輸出。由于構(gòu)造函數(shù)的調(diào)用順序

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

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

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

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

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

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

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

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

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

應(yīng)的函數(shù)。

13.B

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

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

15.B

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

素賦值,應(yīng)使用*符號(hào),贏接賦值相當(dāng)于改變了原來P存儲(chǔ)的地址。

16.C

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

以字母和下畫線開頭,所以選項(xiàng)C不正確。

17.D

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

者的和。

18.D

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

的含義是,當(dāng)a為真時(shí),取b的值,否則取c的值。在C語言程序中

“為真”即“不等于零”,“為假”即等于0。所以和w等價(jià)的表達(dá)式是w

非零。

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

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

20.D

21.D

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

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

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

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

22.C

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

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

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

通對(duì)象,執(zhí)行obj2.print時(shí),會(huì)執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出val=20。放

答案為C。

23.D

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

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

值,D選項(xiàng)正確。

24.ABBBBA

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

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

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

列表)。本題中,需要返回一個(gè)“實(shí)部等于兩個(gè)操作對(duì)象實(shí)部之和,虛部

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

real+a.realjmag+a.imag,就可以返回一個(gè)這樣的對(duì)象。

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

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

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

且默認(rèn)為3.5,才能達(dá)到要求輸出結(jié)果。故應(yīng)填入=3.5或者c=3.5。

28.\

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

維表稱為一個(gè)關(guān)系。表中的每一列稱為一個(gè)屬性,相當(dāng)于記錄中的一個(gè)

數(shù)據(jù)項(xiàng),對(duì)屬性的命名稱為屬性名;表中的一行稱為一個(gè)元組,相當(dāng)于

記錄值。

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

31.根節(jié)點(diǎn)根節(jié)點(diǎn)解析:在樹結(jié)構(gòu)中,每個(gè)節(jié)點(diǎn)之前有一個(gè)前件,稱為

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

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

33.10

34.sizeofsizeof解析:C++語言中關(guān)鍵字運(yùn)算符有3個(gè),分別為new、

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

數(shù)。

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

擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。

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

\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類中定義的,所以“out1.open('l.txt',binary|

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

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

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

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)為10o若循環(huán)中i每次增1,則

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

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

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

(3)應(yīng)改為"catch(…)”。

【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw,error)”,其

中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類

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

句修改為“catch(char*S)”°第2個(gè)標(biāo)識(shí)前的異常拋出語句為

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

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

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

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

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

改為"catchy..)”。

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

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

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

【解析】本題中要求以輸入字符"?''為結(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)該修改為“whilst巾])”。第3處的

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

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

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

40.(1)應(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二11:”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函

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

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

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

(2)應(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);

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

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

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

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

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

象,應(yīng)改為"coutv〈c->n<<endl;

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

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

(3)應(yīng)改為"catch(…)”。

【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw(”error");”,其

中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類

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

句修改為“catch(char*S)”.第2個(gè)標(biāo)識(shí)前的異常拋出語句為

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

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

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

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

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

改為“catch(…)”。

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

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

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

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

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

uassert(sizeof(sl)=3);?語句中“sizeof(sl尸=3"為假,這會(huì)使程序產(chǎn)生異

常,不能正常執(zhí)行。因?yàn)閟trl的值為abc,但是它還有一個(gè)尾符,它的

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

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

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

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

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

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

,,

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

\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)中判

溫馨提示

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