2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第1頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第2頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第3頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第4頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(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.以下有關(guān)成員函數(shù)特征的敘述不正確的是

A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B.成員函數(shù)可以重載C.成員函數(shù)可以設(shè)

置缺省參數(shù)值D.成員函數(shù)可以是靜態(tài)的

2.下列描述中錯(cuò)誤的是()。

A.派生類可以作為基類派生其他的子類

B.派生類繼承基類的所有數(shù)據(jù)成員

C.派生類可以有多個(gè)基類

D.派生類不能繼承一些函數(shù)成員

3.類MyClass的定義如下:classMyClass{pubfic:MyClass(){value=0;}

SetVariable(inti){value=i;)private:intvalue;};則對(duì)下列語句序列

正確的描述是()。MyClass*p,my;p=&my;

A.語句p=&my;是把對(duì)象my賦值給指針變量p

B.語句MyClass*p,my;會(huì)調(diào)用兩次類MyClass的構(gòu)造函數(shù)

C.對(duì)語句*p.SetVariable。)的調(diào)用是正確的

D.語句p->SetVadable(5)與語句my.SetVariable⑸等價(jià)

4.下列關(guān)于this指針的敘述中,正確的是()

A.lhis指針是一個(gè)隱含指針,它隱含于類的成員函數(shù)中

B.只有在使用this時(shí),系統(tǒng)才會(huì)將對(duì)象的地址賦值給this

C.類的友元函數(shù)也有this指針

D.this指針表示了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對(duì)象

5.下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是

A.Fractionoperator+fFraction,Fraction);

B.Fractionoperator-(Fraction);

C.Fraction&operator=(Fraction&,Fraction);

D.Fraction&operator4-=(Fraction&,Fraction);

6.對(duì)于語句cin>>x;中的各個(gè)組成部分,下列敘述中錯(cuò)誤的是()。

A.“chT是一個(gè)輸出流對(duì)象B.“的作用是表示語句結(jié)束C."x”是一個(gè)變

量D.“>>”稱作提取運(yùn)算符。

7.以下程序段的執(zhí)行結(jié)果為()°^include<iostream.h>

#definePLUS(x,y)x+yvoidmain(){intx=l:y=2,Z=3,sum:sum=

PLUS(x+y,Z)*PLUS(y,Z):cout<<"SUM="<<sum;cout<<

endl:}

A.SUM=9B.SUM=12C.SUM=18D.SUM=30

8.函數(shù)定義為fun(int&i),變量定義n=100,則下面調(diào)用正確的是()。

A.fun(20);B.fun(20+n);C.fun(n);D.fun(&n);

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

Base{public:Base(){x=0;}intx;};classDerivedl:virtualpublicBase

{public:Derivedl(){x=10;}};classDerived2:virtualpublicBase{public:

Derived2(){x=20;}};classDerived:publicDerivedl,protected

Derived?{};intmain(){Derivedobj;cout<<obj.x<<end1;return0;}

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

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

10.下列不屬于3種基本控制結(jié)構(gòu)是()。

A.順序B.選擇C.循環(huán)D.調(diào)用

二、單選題(13題)

(24)若要重栽+、=、<<、==和口運(yùn)算符,則必須作為類成員重載的運(yùn)算符是

A)+和=B)=和<<C)==和<<D)=和[]

11.

12.下面關(guān)于C++流的敘述中,正確的是

A.cin是一個(gè)輸入流對(duì)象

B.可以用ifstrcam定義一個(gè)輸出流對(duì)象

C.執(zhí)行語句序列char*y="PQMN”;cout<<y;將輸出字符串“PQMN”的

地址

D.執(zhí)行語句序列charx[80];cin.getline(x,80);時(shí),若鍵入Happynew

year則x中的字符串是"Flippy”

13.有如下程序段

inti=OJ=l;

int&r=i;〃①

r=j;//②

int*p=&i;〃③

*p=&r;〃④

基中會(huì)產(chǎn)生編譯錯(cuò)誤的語句是

A.?B.③C.②D.①

14.有如下程序:

#include<iostream>

usingnamespacestd;

classB{

public:

virtualvoidshow(){cout?MBu;}};

classD:publicB{

public:

voidshow(){cout?,,Dn;}

);

voidfun1(B*ptr){ptr->show();

}voidfun2(B&ref){ref.show();

}voidfun3(BB){b.show();

intmain(){

Bb,*p=newD;

Dd;

funl(p);

fun2(b);

fun3(d);

returnO;

)

程序的輸出結(jié)果是()oA.BBBB.BBDC.DBBD.DBD

15.耦合性和內(nèi)聚性是對(duì)模塊獨(dú)立性度量的兩個(gè)標(biāo)準(zhǔn)。下列敘述中正確的

是_________O

A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性

B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性

C.耦合性是指一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度

D.內(nèi)聚性是指模塊間互相連接的緊密程度

16.執(zhí)行語句序列intx=l,&y=x;cout<<x<<'-1<<y<<endl;輸出

結(jié)果為()

A.x-xB.1-1C.1-0D.異常

17.下面程序的結(jié)果是#include,,iostream.h,'voidmain(){char*str;Str

="test!";cout<<str[5];}

A.程序錯(cuò)誤BJC.WD.為空字符

18.已知類MyClass聲明如下:

classMyClass{

intn;

public:

MyClass(intk):n(k){)

intgetValue()const{returnn;}

);

在下列數(shù)組定義中正確的是O

A.MyClassxl[2];

B.MyClassx2[2]={newMyClass(l),newMyClass(2)};

C.MyClass*x3[2];

D.MyClass*x4[2]={MyClass(l),MyClass(2)};

19.下面對(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ù)成員不能受private控制符的作用

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

20.下面程序的輸出結(jié)果是()。

#include<iostreanl.h>

classexample

(

inta;

public:

example(intB.{a=b++;}

voidprint{a=aI1;cout?a?,M,;)

voidprintconst{cout<va<v'"';}

);

voidmain

(

examplex(3);

constexampleY(2);

Aprint;

Bprint;

)

A.22B.43C.42D.32

21.必須用一對(duì)大括號(hào)括起來的程序段是()。

A.switCh語句中的Case標(biāo)號(hào)語句B.if語句的分支C.循環(huán)語句的循環(huán)

體D.函數(shù)的函數(shù)體

22.下列運(yùn)算符中哪些是不能夠被重載的?

A

B.new,delete,=

C.sizeof,new,delete,++,-

D.sizeof,new,delete,

23.下列程序的運(yùn)行結(jié)果是()°

#include<iostream.h>

intx=5:

intfun(inta)

intC;

C=X*a:

returnC;

)

voidmain()

(

intx=3,a=4;

x=x+fun(a);

cout<<,'x="<<x<<endl:

)

A.x=15B.x=17C.x=23D.x=25

三、2.填空題(12題)

24.冒泡排序算法在最好的情況下的元素交換次數(shù)為【

25.有如下程序:

#include<iostream>

usingnamespacestd:

template<typenameT>

Ttotal(T*data){

Ts=0;

While(*data)s+=*data++;

returns;

1

intmain(){

intx[]=[2,4,6,8.10,12,14,16,18);

cout<<total(x);

return0;

)

執(zhí)行上面程序的輸出是______o

26.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類描述的是具有相似性質(zhì)的一組【

27.請(qǐng)將下列類定義補(bǔ)充完整。

classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};

classDcrivcd:publicBase

(

public:

voidfun()

(

[]〃顯式調(diào)用基類的fun函數(shù)

cout<<''Derived::fun1'<<endl;

)

);

28.順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置【】的存儲(chǔ)單

元中。

29.下列程序的運(yùn)行結(jié)果是_____o

#inclUde(iostream.h)

ClassA

{public:

Virtualvoiduse(){cout<<"inA'n";));

classB:publicA

{public:

virtualvoiduse(){cout<<"inB\n";}};

classC:publicB

{public:

Virtualvoiduse(){cout<<“inC\n^^;}};

void

30.已知如下程序的輸出結(jié)果是23,請(qǐng)將畫線處缺失的部分補(bǔ)充完整。

#include<iostream>

usingnamespacestd:

classMyClass{

public:

voidPrint()const{eout<<23;)

);

intmain(){

MyClass*P=newMyClass();

.Print();

return0;

)

31.將以下程序?qū)懗扇窟\(yùn)算表達(dá)式是【】,

if(a>B)max=a;

elsemax=b;

32.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、I】

和物理數(shù)據(jù)模型。

33.重載的運(yùn)算符保持其原有的【】、優(yōu)先級(jí)和結(jié)合性不變。

34.下面程序的輸出結(jié)果是____o

#include<iostream.h>

voidmain()

(

inta[6]={1,2,3,4,5.6);

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

cout<<a[i]<<;

cout<<endl;

35.如果類B繼承了類A,則稱類A為類B的基類,類B稱為類A的

[]o

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

36.使用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("error”);

}

/****汴汴汴*error'?、布??、??????????????、

catch(chars)

(

cout?s?endl;

}

try

(

throw((int)0);

catch

(

cout?i?endl;

}

try

(

throw(O);

throw(nerrorn);

/^3>^1*>3^*1**1**1*_*1**1**1**t**i*?l^

//不不不不不不不不prrcr不不不不不不不不

catch

(

cout?nERRORn?endl;

)

returnO:

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

/I******en*or******的下面°

試題程序:

#include<iostream>

#include<fstream>

/****舉舉**prror*不*****,?、

usingstd;

voidWriteFile(char*s)

ofstreamout1;

/?1??1??1??1??>1??1?

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

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

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

/小小小小小小小小prrcr不不個(gè)不不不不不

outl.puts(s[i]);

)

outl.close;

}

voidClearFile

(

ofstreamoutl;

outl.open(Hl.txt");

outl.close;

}

intmain

(

chars"024];

ClearFile;

cout?"pleaseinputastrin9:u?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

)

//-V

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

TC:display

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

TC:TC

COUI?"Destructor"?endl:

}

voidmain

TCa;

a.display;

)

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

)

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

catch(chars)

(

cout?s?endl;

try

throw((int)0);

)

/汴舉**舉舉汴*prrcr*不******

catch

(

cout?i?endl;

)

try

(

throw(O);

throwC^rror");

/*1*?!*?1??1??[?**??****?*****??**

//不不不不不不不不prrcr不干不不不不不不

catch

(

cout?,,ERROR,,?endl;

)

returnO:

40.使用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?,,number=,'?number?endl;

)

private:

intnumber;

);

voidmain

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

TCobjl;

objl.Print;

TCobj2⑶;

objl.number=10;

II********e仃or*%。******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

}

41.使用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',?M,"

i=0;

)

/******errcr不不不不不不

TC:display

tout?',i=,,?i?n,M?endl;

)

/汴汴汴汴不舉prmr不不不不不不

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

42.使用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[120];

cout?"Enterastringendwith?.n?endl;

/不不不不不不不不prrcr不不不不不不不不

cin.getline(str,120);

/I/不”「不*1*不KM”「KM不*1*不不error干不干干干干干不

while(str)

(

/******汴汴0rrcr不不不不不不予予

if(str[i])=a)

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

i++:

)

cout?str?endl;

return;

43.使用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ò)誤的語句在//******error******的下面。

⑴不能刪除assert()語句。

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

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

試題程序:

#include<iostream.h>

#include<asseil.h>

voidmain()

chartsl=',abcM:

/

//不不不不不不不不prr()r不不不不不干不不

assert(sizeof(s1)==3):

cout?nsizeof(s1)=5u?endl;

chars2[10]=nabn:

//

//不不不不不不不不prrcr不干不不不不不不

asseil(sizeof(s2)==2);

coiit?',sizeof(s2)=10,'?endl;

chars3=23:

assert(sizeof(s3)==4);

cout?,,sizeof(s3)=l,'?endl;

return;

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

(

public:

7*7*7*7*7*7*7*7*/

不不?門*i*不pi*rY、r不干干不干不不干?

staticintn=O:

CO

(

n++:

}

?CO

):

f7,?[,?{**£**2*f

/不不不不不不不不arrr、r不不不不不不不不/

intCO::n;

voidmain

COobj;

COobj2[7];

COCNULL:

c=&obj:

不舉***汴汴汴P(guān)]T()r,????????不不不不???/

eout?C.n?endl;

cout?C0::n?endl;

}

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

inti=0;

charstr[120J;

cout?MEnterastringendwith?."?endl;

cin.getline(str,120);

while(str)

//

//不不不不不不不不prmr不不不不不不不不

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

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

(1)定義類的公有數(shù)據(jù)成員函數(shù)NO、NameL32J,其中NO是int型的數(shù)

據(jù),Name[32]為字符型。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

(2)完成函數(shù)Set的定義,分別設(shè)置N0和Name的值,請(qǐng)?jiān)谧⑨?后添

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

⑶完成函數(shù)print,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句,輸出結(jié)果如下:

N0=12345

Name=HelloWorld!

(4)添加默認(rèn)構(gòu)造函數(shù),設(shè)置NO為0,Name為空,請(qǐng)?jiān)谧⑨?后添加

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

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

他的程序代碼。

試題程序:

#include<iostream.h>

classTC

(

public:

/at?

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

///水*1*?宇1*?!字*?!*?*1**1**1**1*2*?1?*?1?*?1?****3**?*1*

No=no;

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

Name[i]=strName[i];

Name[i+1]=0;

voidprint()

/*1**1**1**3**1**1**1**1**1**1*?1*

/Irj*?J%rjw

TC()

/女女女女**女女4火女女女火女來來)

};

intmain()

(

TCstu:

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

returnO;

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

proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。DataList

的重載運(yùn)算符函數(shù)Operator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個(gè)相同長(zhǎng)

度的數(shù)據(jù)表之和;即它返回一個(gè)數(shù)據(jù)表,其每個(gè)元素等于相應(yīng)兩個(gè)數(shù)

據(jù)表對(duì)應(yīng)元素之和。請(qǐng)編寫這個(gè)operator+函數(shù)。程序的正確輸出應(yīng)該

是:

兩個(gè)數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個(gè)數(shù)據(jù)表之

和:

4,6,8,10,12,14要求:

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

*//********666********''之間,不得修改程序

的其他部分。

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

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

//DataList.h

#inClude<iostream>usingnamespaCestd;

ClaSSDalaList{〃數(shù)據(jù)表類inlfen;

double*d;public:

DataList(intlen,doubledatalJ=NULL);DataList(DataList&data);

intlengthConst{returnlen;}

doublegetElement(inti)Consttreturnd[i];}

DataListoperator+(ConstDataList&list)Const;〃兩個(gè)數(shù)據(jù)表求和void

showConst;//顯示數(shù)據(jù)表

};

voidwriteToFile(Char$,ConstDataList&);//main.Cpp

#inCludevDataList.h"

DataList::DataList(intlen,doubledataf]):len(ien){d=new

doubletlen];

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

d(Wi=(data==NULL?O.0:data[i]);

)

DataList::DataList(DataList&data):len(data.len){d=new

doubleflen];

for(inti=0;i<len;i++)d[i]=data.d[i];

DataListDataList::0perator+(Con8tDataList&list,)Const{〃兩個(gè)數(shù)據(jù)

表求和double*dd=newdoubleflist.lensthl;

returnDataList(list.length,dd);}

voidDataList::showConst{〃顯示數(shù)據(jù)表fr(intoi=0;i<len-l;i++)

eout?d[i]vv'',";

Cout?dllen-1J?endl;

intmain{

doublesl[]={1,2,3,4,5,6};

doubles2[]={3,4,5,6,7,8};

DataListlistl(6,si),list2(6,s2);〃定義兩個(gè)數(shù)據(jù)表對(duì)象eoutvv”兩個(gè)

數(shù)據(jù)表:"vvendl:

listl.show:list2.show;eoutwendlw”兩個(gè)數(shù)據(jù)表之

和:”vVendl:

(listl+list2).show;

writeToFile(,,,\listl+list2);return0:

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

4g使用VC6打開考生文什夾下的工程testl_3o此工程包含一個(gè)

testl_3.cpp,其中定義了類circle和column,其中column類由circle類

protected派生,但兩個(gè)類的定義并不完整。請(qǐng)按要求完成下列操作,將

程序補(bǔ)充完整。

⑴定義類circle的保護(hù)數(shù)據(jù)成員r和area,它們都是double型的數(shù)據(jù)。

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

⑵添加類circle的無參數(shù)的構(gòu)造函數(shù),使circle對(duì)象的r默認(rèn)值為0,請(qǐng)

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

(3)添加派生類column構(gòu)造函數(shù)的定義,傳入的參數(shù)為double型的height

和radius,并將具分別賦值給數(shù)僻成員h和基類的r,請(qǐng)?jiān)谧⑨尅?/**3**”

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

(4)完成派生類column的成員函數(shù)print的定義,使其以格式“r=_area=_"

先輸出半徑r和底面積area,再以格式“h=_vol=_”輸出高h(yuǎn)和體積vol

的值,請(qǐng)?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。

輸山結(jié)果如下:

r=larea=3.1416

h=2voI=6.2832

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

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

#include<iostream.h>

constdoublepi=3.1416;

classcircle

(

protected:

〃**j**

public:

circle(doubleradius){r=radius;}

voidprint()

(

area=r*r*pi;

cout<<,,r=n<<r<<"n<<',area="<<ared<<endl;

classcolumn:protectedcircle

protected:

doubleh;

public:

〃**3**

voidprint()

**4**

voidmain()

(

columncol(1.0,2.0);

Col.print();

)

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

序文件testlO_3.cpp,其中定義了用于表示雇員信息的CEmployee類與

表示公司信息的Company類,但這兩個(gè)類的定義并不完整。請(qǐng)按要求

完成下列操作。

⑴定義Cemployee類的私有數(shù)據(jù)成員name(大小為50的字符數(shù)組)和

pay(double型數(shù)據(jù)),分別用于記錄雇員姓名和月薪。請(qǐng)?jiān)谧⑨尅啊?*1**?

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

(2)完成Company類默認(rèn)構(gòu)造函數(shù)的定義,該構(gòu)造函數(shù)將n值賦值給私

有成員nam,并完成指針emp所指的n個(gè)Cemployee對(duì)象空間的申請(qǐng),

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

⑶完成Company類成員函數(shù)voidCompany::add(血code,charname[50],

doublepay)的定義,該函數(shù)將某一雇員的編號(hào)code、姓名name及月薪

pay輸入到公司信息中。請(qǐng)?jiān)谧⑨尅敝筇砑舆m當(dāng)?shù)恼Z句。

(4)完成Company類成員函數(shù)voidCompany::print()的定義,使其以“_is

paidRMBforouemonth”的格式輸出公司內(nèi)所有員工的月薪信息。請(qǐng)?jiān)?/p>

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

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

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

#include<iostream.h>

#include<string.h>

classCEmployee

(

public:

voidputname(charn[50]){strcPY(name,n);)

voidgetname(charn[501){strcDY(n,name);)

voidputpay(doubled){pay=d;)

doublegetpay(){returnpay;)

private:

〃**]**

);

classCompany

(

private:

CEmployee*emp;

intnum;

public:

Company(intn);

voidadd(intCOde,Charname[50],doublepay);

voidprint();

}

Company::Company(intn)

(

)

voidCompany::add(intcode,Charname[50],doublepay)

(

voidCompany::print()

(

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

(

(emp+i)->getname(C);

money=(emp+i)->getpay();

cout<<C<<"ispaid"<<money<<"

RMBforonemonth"<<endl;

}

)

voidmain()

(

Companycom(2);

com.add(0,"Jack'1,200);

com.add(l,"Lee",300);

com.print();

)

參考答案

I.A解析:本題是一個(gè)綜合題,考察幾種常用的修飾詞與成員函數(shù)之間

的關(guān)系。Inline和static均可以修飾成員函數(shù)的。

2.B解析C++語言中通常有3種繼承修飾符public,protected和private,

限制依次嚴(yán)格,另外對(duì)類中的數(shù)據(jù)和函數(shù)也有這3種修飾符進(jìn)行限制。

一個(gè)派生類能不能繼承基類的所有數(shù)據(jù)成員受它們的限制。注意:C++

語言中繼承關(guān)系的修飾符publie,protected和private的運(yùn)用。

3.D

4.D解析:本題考核thiso類的每一個(gè)成員函數(shù)都有一個(gè)隱含定義的常

量指針,稱為this指針。它是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象

的地址。成員函數(shù)可以通過這個(gè)指針知道自己屬于哪一個(gè)對(duì)象。當(dāng)對(duì)一

個(gè)對(duì)象調(diào)用成員函數(shù)時(shí),編譯程序先將對(duì)象的地址賦值給this指針,然

后調(diào)用成員函數(shù),每次成員函數(shù)存取數(shù)據(jù)時(shí),則隱含使用this指針。但

是在使用this指針時(shí)需要注意的是:this指針只能在類的成員函數(shù)中使

用,它指向該成員函數(shù)被調(diào)用的對(duì)象。this指針一般用于返回當(dāng)前對(duì)象

自身靜態(tài)成員函數(shù)沒有this指針。因?yàn)轭愔挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,

所以使用this指針沒有什么意義。在靜態(tài)成員函數(shù)中使用this指針會(huì)弓|

起編譯錯(cuò)誤。

5.C解析:類的賦值運(yùn)算符』”只能被重載為成員函數(shù),不能重載為友元

函數(shù)。

6.A解析:本題考核C++的輸入流°cin是一個(gè)輸入流對(duì)象,所以A選

項(xiàng)的敘述是錯(cuò)誤的。

7.B

8.C解析:本題考核函數(shù)的調(diào)用方法。當(dāng)函數(shù)的參數(shù)是引用類型時(shí),參

數(shù)不能為常量、表達(dá)式和變量地址,只能是變量本身。

9.A解析:木題中,雖然Derived1和Derived2都是由共同的基類x派生

而來的,但由于引入了虛基類,使得它們分別對(duì)應(yīng)基類的不同副本。這

時(shí)數(shù)據(jù)成員x只存在一份拷貝,不論在類Derived1修改,還是在類

Derived?中修改,都是直接對(duì)這惟一拷貝進(jìn)行操作。本題程序執(zhí)行語句

“Derivedobj"時(shí),就會(huì)先調(diào)用虛基類Base的構(gòu)造函數(shù),使得x=0,然后

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

數(shù),使得x=20o最后輸出x的值為20o

10.D解析:順序、選擇和循環(huán)是程序的三種基本控制結(jié)構(gòu)。

11.D

I2.A解析:本題考核C++流的概念和I/O的格式化。cin是istream類的

對(duì)象,即輸入流對(duì)象。ifstream是輸入文件流類不能定義個(gè)輸出流對(duì)象。

C選項(xiàng)中執(zhí)行語句序列char*y=PQMN;cout<<y;后將輸出字符串

PQMN\getline函數(shù)功能是允許從輸入流中讀取多個(gè)字符,并且允許指

定輸入終止字符(默認(rèn)是換行字符),在讀取完成后,從讀取的內(nèi)容中刪

除該終止字符,所以D選項(xiàng)中的語句序列后x中字符串應(yīng)該是Happy

newyear'o

13.A

14.C

Co【解析】本題考查的知識(shí)點(diǎn)是虛函數(shù)與多態(tài)性。在成員函數(shù)聲明的

前面加上virtual修飾,即把該函數(shù)聲明為虛函數(shù)。在C++41,一個(gè)

基類指針(或引用)可以用于指向它的派生類對(duì)象,而且通過這樣的指針

(或引用)調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針(或引用)實(shí)際所指向的對(duì)象

類的那個(gè)重定義版木。故木題最終輸出結(jié)果為DBB。

15.B模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與

其他模塊的聯(lián)系最少且接口簡(jiǎn)單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到

高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有

利于提高模塊的獨(dú)立性,所以人錯(cuò)誤,B正確。耦合性是模塊間互相連

接的緊密程度的度量而內(nèi)聚性是指一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合

的緊密程度,所以C與D錯(cuò)誤。故答案為B選項(xiàng)。

16.B

17.D解析:70'輸出為不顯示,只代表一個(gè)字符串的結(jié)束。注意:C++語

言中各種字符轉(zhuǎn)義序列的意義和應(yīng)用。

18.C

本題主要考查了對(duì)象數(shù)組、指針數(shù)組和new運(yùn)算符。new運(yùn)算符返回

指向指定類型的一個(gè)指針。對(duì)象數(shù)組是指數(shù)組元素為對(duì)象的數(shù)組,該

數(shù)組中的每一個(gè)元素都是同一個(gè)類的對(duì)象。定義對(duì)象數(shù)組時(shí),系統(tǒng)將

自動(dòng)調(diào)用構(gòu)造函數(shù)倉(cāng)J建每一個(gè)對(duì)象元素,因?yàn)轭怣yClass中定義了一

個(gè)有一個(gè)整型參數(shù)的構(gòu)造函數(shù),編譯器將不再為其生成缺省構(gòu)造函

數(shù),所以定義對(duì)象數(shù)組時(shí)必須分別調(diào)用有參構(gòu)造函數(shù)為每一個(gè)數(shù)組元

素指定初始值。因此選項(xiàng)A錯(cuò)誤,沒有初始化對(duì)象數(shù)組;選項(xiàng)B中,用

指向?qū)ο蟮闹羔槼跏蓟瘜?duì)象數(shù)組,類型不匹配,因此選項(xiàng)B錯(cuò)誤;指針

數(shù)組是由指針組成的數(shù)組,即數(shù)組中的每一個(gè)元素都是指向同一類型

對(duì)象的指針。選項(xiàng)C定義了指向MyClass類對(duì)象的指針數(shù)組x3,該定

義語句正確;選項(xiàng)D中,只能用指向MyClass類對(duì)象的指針或用已有的

MyClass類對(duì)象的地址來初始化指針數(shù)組x4的每一個(gè)元素,不能用對(duì)

象進(jìn)行初始化,因此選項(xiàng)D錯(cuò)誤。

19.D解析:靜態(tài)數(shù)據(jù)成員必須在類體外初始化,它是類的所有對(duì)象的共

有成員,需要使用類名調(diào)用,靜態(tài)數(shù)據(jù)成員的初始化與權(quán)限控制無關(guān)。

20.C

“++”是右結(jié)合的,所以先賦值為3,最后輸出3+1;常成員函數(shù)只有常

對(duì)象才能調(diào)用,所以輸出2。

21.D

解析:本題考查的知識(shí)點(diǎn)是;語句塊和函數(shù)。if語句的分支和循環(huán)語

句的循環(huán)體可以是一條語句也可以是一個(gè)語句塊,所以不是必須用一

對(duì)大括號(hào)括起來;switch語句中的case標(biāo)號(hào)語句可以是一系列語句,

也可以包含語句塊,也不是必須用一對(duì)大括號(hào)括起來:函數(shù)的函數(shù)體

必須使用一對(duì)大括號(hào)括起來。故本題應(yīng)該選擇D。

22.A解析:C++語言中的不能重載的操作符是和?

23.C

Co【解析】由主函數(shù)main入手,首先X被賦值為3,a被賦值為4,

然后調(diào)用fun函數(shù),參數(shù)為4,所以在fun函數(shù)中的a=4。而主程序中

的X作用域是由它定義開始到cout輸出,在fun函數(shù)中無效。而在

fun函數(shù)定義前的變量X作用域是整個(gè)程序,所以fun函數(shù)中的x值為

5,這樣c的值就為20。在主函數(shù)中的x+fun(a)中的X為靠近這條語

句的x定義,即3,所以最后x的值為20+3=23。

24.00解析:冒泡排序算法在最好的情況下(已經(jīng)有序的)元素交換次數(shù)

為0。

25.20

26.對(duì)象對(duì)象解析:將屬性、操作相似的對(duì)象歸為類,也就是說,類是

具有共同屬性、共同方法的對(duì)象的集合。

27.Base::fun();

28.相鄰相鄰解析:常用的存儲(chǔ)表示方法有4種,順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)、

索引存儲(chǔ)、散列存儲(chǔ)。其中,順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)

在物理位置也相鄰的存儲(chǔ)單元中。

29.inCoinCo解析:本題考查虛函數(shù)和多態(tài)性。原本obj指向祖先

類,隨后被賦值,指向新的子孫類,則在使用use這個(gè)重載的虛函數(shù)時(shí),

根據(jù)當(dāng)前指向可確定調(diào)用子孫的同名虛函數(shù)。

30.(*p)

31.max=(a>B?a:b;max=(a>B?a:b;解析:條件運(yùn)算符要求有三個(gè)

操作對(duì)象,稱三目(元)運(yùn)算符,它是C++語言中惟一的一個(gè)三目運(yùn)算符。

條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3。所以我們可

以寫成(a>B?a:b,它是一個(gè)“條件表達(dá)式執(zhí)行順序是如果(a>B條件

為真,則條件表達(dá)式取值a作為整個(gè)表達(dá)式的值,否則取值b作為整個(gè)

表達(dá)式的值。

32.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)是現(xiàn)實(shí)世界符號(hào)的抽象,而

數(shù)據(jù)模型(datamodel)則是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系

統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束行為,為數(shù)據(jù)庫(kù)系統(tǒng)的信息表示與操作

提供一個(gè)抽象的框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成3種類型,它們

是概念數(shù)據(jù)模型(conceptualdatamodel)、邏輯數(shù)據(jù)模型(logicdatamodel)、

物理數(shù)據(jù)模型(physicaldatamodel)o

33.操作符個(gè)數(shù)操作符個(gè)數(shù)解析:本題考查的是運(yùn)算符重載的概念,用

戶重新定義的運(yùn)算符不改變?cè)\(yùn)算符的優(yōu)先性和結(jié)合性,也不改變運(yùn)算

符的語法結(jié)構(gòu).也就是說重載運(yùn)算符不會(huì)產(chǎn)生新的運(yùn)算符。

34.12345。12345。解析:本題考查的是考生使用簡(jiǎn)單循環(huán)輸出數(shù)

組元素的能力,因?yàn)榻Y(jié)束條件是i<5,而i初始值為0,所以只會(huì)輸出

前5個(gè)元素。

35.派生類派生類解析:如果類A為類B的基類,那么類B稱為類A

的派生類。

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

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

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

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

中的類型為字符串。所以對(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)的異常捕捉語句calch中應(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(…)”。

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

(2)應(yīng)改為“outl.open(Ml.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處

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

中,輸入、輸出方式是在加類中定義的,所以“outl.open(nl.txf,

binaryIapp);”語句缺少類ios,即第2處的語句修改為

Uout1.open(Hl.txtM,ios::binaryIios::app);第3個(gè)標(biāo)識(shí)應(yīng)

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

4€outl.put(sfi]);

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

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

\n(3)應(yīng)改為“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處的語句叮(2::10可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函

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

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

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

(2)應(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(…)”。

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

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

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

\n【解析】本題第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ù),所以修改為

t49,

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

第3處叮(:.$@1m11^「(100);”語句中的丁(:為類,并不是對(duì)象,這里

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

“obj2.SetNumber(lOO);"。

41.(1)應(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”。

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

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

⑶應(yīng)改為“if(st巾]>=a&&st幣]<=2廣。

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

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

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

120,?);5,o第2處的“whilc(str)”語句應(yīng)該是判斷字符串sir中的每一

個(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,所以修改為

44,,

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

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

\n⑵應(yīng)改為"assert(sizeoRs2)=lO);”。

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

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

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

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

常,不能正常執(zhí)行。因

溫馨提示

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

評(píng)論

0/150

提交評(píng)論