2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第1頁(yè)
2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第2頁(yè)
2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第3頁(yè)
2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第4頁(yè)
2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試

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

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

一、1.選擇題(10題)

I.在下列數(shù)據(jù)管理的各階段中,數(shù)據(jù)獨(dú)立性最高的階段是

A.手工管理B.文件系統(tǒng)C.數(shù)據(jù)項(xiàng)管理D.數(shù)據(jù)庫(kù)系統(tǒng)

2.下面關(guān)于運(yùn)算符重載的描述錯(cuò)誤的是

A.運(yùn)算符重載不能改變操作數(shù)的個(gè)數(shù)、運(yùn)算符的優(yōu)先級(jí)、運(yùn)算符的結(jié)合

性和運(yùn)算符的語(yǔ)法紜構(gòu)

B.不是所有的運(yùn)算符都可以進(jìn)行重載

C.運(yùn)算符函數(shù)的調(diào)用必須使用關(guān)鍵字operator

D.在C++語(yǔ)言中不可通過(guò)運(yùn)算符重載創(chuàng)造出新的運(yùn)算符

3.軟件生命周期中所花費(fèi)用最多的階段是()。

A.詳細(xì)設(shè)計(jì)B.軟件編碼C.軟件測(cè)試D.軟件維護(hù)

4.若有以下程序:

main()

{intk=2,i=2,m;

m=(k+=i*=k);

cout<<m<<"J<<i<<endl;

執(zhí)行后的輸出結(jié)果是

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

5.采用面向?qū)ο蠹夹g(shù)開(kāi)發(fā)的應(yīng)用系統(tǒng)的特點(diǎn)是()。

A.重用性更強(qiáng)B.運(yùn)行速度更快C.占用存儲(chǔ)量小D.維護(hù)更復(fù)雜

6.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)和什么放在一起,作為一個(gè)相互依存、不可

分割的整體來(lái)處理?

A.對(duì)數(shù)據(jù)的操作B.信息C.數(shù)據(jù)隱藏D.數(shù)據(jù)抽象

7.下面程序的輸出結(jié)果是()。#include<iostream.h>Classexample{int

a;public:example(intB.{a=b++;}voidprint(){a=a+1cout<<a<<"";}

voidprint()const{cout<<a<;}};voidmain(){examplex(3);Const

exampley(2);x.print();

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

8.語(yǔ)句cout<<setprecision(2)<<1024.4567;的輸出結(jié)果為

A.1024.4567B.1024C.1024.45D.le+003

9.表達(dá)式10>5&&6%3的值是

A.-lB.非零值C.OD.l

10.面向?qū)ο蟪绦蛟O(shè)計(jì)思想的主要特征中不包括

A.繼承性B.功能分解,逐步求精C.封裝性和信息隱藏D.多態(tài)性

二、單選題(13題)

11.有如卜程序:

#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.:Basel(B.,Base2(A.,bl(D.

b2(C.{}

private:

intbl:

intb2:

);

intmain

(

Derivedd(1,2,3,4);

return0;

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

12.下列關(guān)于運(yùn)算符函數(shù)的敘述中,錯(cuò)誤的是

A.運(yùn)算符函數(shù)的名稱總是以operator為前綴

B.運(yùn)算符函數(shù)的參數(shù)可以是對(duì)象

C.運(yùn)算符函數(shù)只能定義為類的成員函數(shù)

D.在表達(dá)式中使用重載的運(yùn)算符相當(dāng)于調(diào)用運(yùn)算符重載函數(shù)

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

變化是()

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

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

14.有如下程序:

#nclude<iostream>

usingnamespacestd;

classMyClass{

public:MyClass(intx):val(x){}

voidSet(intx){Val=x;}

voidPrint()const{cout<<Mval="<<Vai<<*\t';}

private:intval;

};

intmain(){

constMyClassobj1(10);

MyClassobj2(20);

objl.Print();〃語(yǔ)句1

obj2.Print();〃語(yǔ)句2

objl.Set(20);〃語(yǔ)句3

obi2.Set(30);〃語(yǔ)句4

return0;

)

其主函數(shù)中錯(cuò)誤的語(yǔ)句是()o

A.語(yǔ)句1B.語(yǔ)句2C.語(yǔ)句3D.語(yǔ)句4

6已知類A有公用數(shù)據(jù)成員a,并重載了二運(yùn)算符,且有Aobj2;

constA*ptr=newA;,則下列語(yǔ)句錯(cuò)誤的是()。

A.ptr->a=100;B.ptr=&obj2;C.ptr++;D.obj2=*ptr;

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

#include<iostream.h>

voidmain

(

inta=3,b=0;

int*P=&a;

b=+a++;

cout?*P?,7,?b?endl;

)

A.3,4B.4,3C.3,4D.4,4

17.關(guān)于在調(diào)用模板函數(shù)時(shí)模板實(shí)參的使用,下列表述中正確的是()0

A.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,如果能從模板函數(shù)的實(shí)參中獲

得相同的信息,則君可以省略

B.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,如果它們是參數(shù)表中的最后的

若干個(gè)參數(shù),則都可以省略

C.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,若能夠省略則必須省略

D.對(duì)于常規(guī)參數(shù)所對(duì)應(yīng)的模板實(shí)參,任何情況下都不能省略

18.對(duì)于類定義

classA{

public:

voidfunc2{}

};

classB:publicA{public:

w)idfuncl|cout?HclassBfuncl”vvendl:}

virtualvoillfimc2{cout?"classBfunc2"?endl:}

};

下面正確的敘述是0。

A.A::rune2和B::fund都是虛函數(shù)

B.A::func2和B::funel都不是虛函數(shù)

C.B::fund是虛函數(shù),而A::func2不是虛函數(shù)

D.B::fund不是虛函數(shù),而A::func2是虛函數(shù)

19.下面程序的運(yùn)行結(jié)果是()。

#include<iostream.h>

voidmain()

(

inti=l:

while(i<=8)

if(++i%3!=2)continue;

elsecout?i;

}

A.25B.36C.258D.369

20.下列有關(guān)繼承和派生的敘述中,正確的是

A.派生類不能訪問(wèn)基類的保護(hù)成員

B.作為虛基類的類不能被實(shí)例化

C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)

D.虛函數(shù)必須在派生類中重新實(shí)現(xiàn)

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

chara[3][4];

下列表達(dá)式中錯(cuò)誤的是

A.a⑵=“WIN”

B.strcpy(a[2],"WIN")

C.a[2][3]=W

D,a[0][1]=a[0][1]

22.有如下程序:

#include<iostream>

usingnamespacestd;

classVAC{public;

intf()const(return3;}

intf(){return5;}

):

Intmain(){

VACvl;constVACv2;

cout<<vl.f()<<v2.f();

return0:

}

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

A.53B.35C.55D.33

23.下列有關(guān)繼承和派生的敘述中,正確的是()。

A.如果一個(gè)派生類公有繼承其基類,則該派生類對(duì)象可以訪問(wèn)基類的保

護(hù)成員

B.派生類的成員函數(shù)可以訪問(wèn)基類的所有成員

C.基類對(duì)象可以賦值給派生類對(duì)象

D.如果派生類沒(méi)有實(shí)現(xiàn)基類的一個(gè)純虛函數(shù),則該派生類是一個(gè)抽象類

三、2.填空題(12題)

24.軟件開(kāi)發(fā)過(guò)程主要分為需求分析、設(shè)計(jì)、編碼與測(cè)試4個(gè)階段,其

中階段產(chǎn)生“軟件需求規(guī)格說(shuō)明書

25.軟件生命周期包括8個(gè)階段。為了使各時(shí)期的任務(wù)更明確,又可分

為3個(gè)時(shí)期:軟件定義期、軟件開(kāi)發(fā)期、軟件維護(hù)期。編碼和測(cè)試屬于

[]期。

26.有一種只在循環(huán)語(yǔ)句或switch語(yǔ)句中使用的流程控制語(yǔ)句,表示該

語(yǔ)句的關(guān)鍵字是______0

27.有以下程序:

#include<iostream>

usingnamespacestd;

classCFactorial

(

private:

intvalue;

intfact;

public:

CFactorial(intval);

voidCalculateFactorial();

voidDisplayO;

CFactorial::CFactorial(intval)

(

value=val;

fact=1;

)

voidCFactorial::CalculateFactorial()

(

inti=value;

while(i>1)

fact*=i—;

)

voidCFactorial::DisplayO

(

cout<<value<<”!="<<fact<<endl;

)

intmain()

(

CFactorialA(5);

A.CalculateFactorial();

A.DisplayO;

return0;

)

程序中,類CPactorial的功能是【】,該程序運(yùn)行的結(jié)果是[】。

28.閱讀以下程序:

#include<iostream.h>

voidmain()

(

staticintalJ[3]={9,7,5,3,1,2,4,6,8};

inti,j,sl=Ots2=0;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

(

if(i==j)sl=sl+a[i][j];

if(i+j==2)s2=s2+a[i][j];

)

cout<<s1<<'*,"<<s2<<endl;

I

則該程序的輸出結(jié)果為【】。

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

#defineMIN(a,b)(((a)<(b))?a:b)

#include<iostream.h>

voidmain()

(

intx=3,y=5;

cout<<MIN(x,y)<<end1;

}

30.有以下程序:

#include<iostream>

#include<string>

usingnameSpacestd;

classperson

(

intage;

Char*name;

public:

person(inti,Char*str)

(

intj;

j=strlen(str)+1;

name=newchar[j];

strcpy(name,str);

age=i;

)

?person()

(

deletename;

cout<<;

)

voiddisplayO

(

cout<<name<<'*:"<<age;

)

);

intmain()

(

persondemo(30,"Smith");

demo.displayO;

return0;

則該程序的輸出結(jié)果為:【】。

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

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

classDerived:publicBase

(

public:

voidfun()

(

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

cout<<"Derived::funH<<endl;

1

);

32.請(qǐng)?jiān)谙铝谐绦蛑械臋M線處填寫正確的語(yǔ)句。

#include<iostream>

usingnamespacestd;

classBase{

public:

voidfun(){cout<<"Basefun"<<endl;}

);

classDerivde:publicBase{

public:

voidfun(){

______〃調(diào)用基類的函數(shù)fun()

cout<<"Derivedfun'*<<endl;

}

);

33.下列程序的輸出結(jié)果是

#include<iostream>

usingnamespacestd:

template<typenameT>

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

intmain()

(

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

return0;

}

34.如果表達(dá)式-x中的是重載的類運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格

式,及表達(dá)式還可以表示為0

35.在C++語(yǔ)言的結(jié)構(gòu)化程序設(shè)計(jì)中,【】是程序的基本組成單元;在

C++語(yǔ)言的面向?qū)ο笤O(shè)計(jì)框架中,【】是程序的基本組成單元。

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

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

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

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

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

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

chartsl=nabc":

/1

assert(sizeof(s1)==3):

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

chars2llOJ=Mabn:

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

assert(sizeof(s2)==2);

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

chars3=23:

//

|/******汴*errr)r不不不不不不予不

assert(sizeof(s3)==4);

cout?Msizeof(s3)=1u?endl;

return;

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

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

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

~TC;

TC:TC

cout?',Constructor',?n,

i=0;

)

//

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

TC:display

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

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

TC:TC

COUI?"Destructof'?endl:

}

voidmain

TCa;

a.display;

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

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

Constructor,i=0,

Destructor

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

可。

試題程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

?TC;

);

!?*??*?

//****^**不**

TC:TC

(

cout?',Constructorn?n,";

i=0;

)

//?1?^1*?S??1??1??1**&**&*

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

TC:display

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

!!******e[Tor******

TC:TC

(

COUI?',Destructor,'?endl:

)

voidmain

(

TCa;

a.display;

39.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序

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

number=l

number=10

number=100

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

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

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intmi

(

number=m;

}

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?Hnumber="?number?endl;

)

private:

intnumber;

);

voidmain

/

/f不*T*不*T**?*小*T*小m*/**^1**^不不小小不不不

TCobjl;

objl.Print;

TCobj2⑶;

/-X*

//********errcr不不不不不卻亭予

objl.number=10;

II********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

40.使用VC++6.0打開(kāi)考生文件夾下的源程序文件

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

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

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

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

!!******error******白勺卜山^。

試題程序:

#include<iostream>

#include<fstream>

/1

usingstd;

voidWriteFile(char*s)

ofstreamout1;

f*1**1**!**1**4**£?*£**£**4?

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

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

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

(

l*1**1**1**1**1**1**1**1**4*?£**4*

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

outl.puts(s[i]);

)

outl.close;

}

voidClearFile

(

ofstreamout1;

outl.open("l.txt");

outl.close;

}

intmain

(

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:u?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

41.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,但該程

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

確。

程序輸出:

8

8

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

即可,其他的語(yǔ)句不能修改。

試題程序:

#include(iostream.h>

classCO

public:

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

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

staticintn=O:

CO

n++:

?CO

):

?^/

/********e]Tcr不不不不不不不不/

intCO:;n;

voidmain

COobj;

COobj2[7J;

CO*C=NULL:

c=&obj:

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

eout?C.n?endl;

cout?C0::n?endl;

}

42.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp。本程序

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

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

到屏幕中。

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

構(gòu),錯(cuò)誤的語(yǔ)句在//******en*or******的下面。

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120J;

cout?HEntcrastringcndwith?."?cndl;

/*1**2**1*?<>*1**1**2**2**2*

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

cin.getline(str,120);

1*1**1**1*?*?????*?

//****舉舉**pji*cr*不******

while(str)

/?,?*t??[??,??,??£??1?*X**X**X**£??£??£?

//小小小小小小小小error不<**><?<**><**>

if(str|jD二a)

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

i++;

}

cout?str?endl;

return;

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

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

number=l

number=10

number=100

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

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

試題程序:

#include<iostream.h>

classTC

public:

TC(inti)

number=i;

voidSetNumber(intmi

(

number=m;

}

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?"number=H?number?endl;

)

private:

intnumber;

voidmain

TCobjl;

objl.Print;

TCobj2(3);

//

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

objl.number=10;

II********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

9,8,7,6,5

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

可。其他的語(yǔ)句不能修改。

試題程序:

#include(iostream.h>

classTC

Ii

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

TC(inti)

m_i=i;

)

voidprint

cout?—m_i?,

)

public:

intm_i;

intmain

l^1*^1*__?!?/

/不不不不不不不不error不不不不予不不苓/

inti;

TC04(10);

while(i>5)

!***************!

i++

04.print;

)

cout?endl;

returnO;

45.使用VC++6.0打開(kāi)考生文件夾下的源程序文件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ò)誤的語(yǔ)句在//******enw******的下面。

試題程序:

#include<iostream.h)

intmain

(

try

throw(nerror");

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

catch(chars)

(

cout?s?endl;

try

(

throw((int)0);

)

/*1**1*■!**1?

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

catch

(

cout?i?endl;

)

try

(

throw(O);

throwC^rror");

/*t?*t?*t?*t?*t?*1*-L■>■的■的一^

//年小不小不小小小prrcr不不早亭不壽壽壽

catch

(

cout?MERROR"?endl;

}

returnO;

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

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

(2)應(yīng)添力CTconstchar*GetName2”。

⑶應(yīng)添加“TC2(char*str)”°

⑷應(yīng)添加“m_str[i]=O;

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

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

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

4t,5

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

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

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

44,,

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打開(kāi)考生文件夾下的源程序文件3.cppo類

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

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

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

整。

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

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

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

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

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

他的程序代碼。

試題程序:

#include<iostream.h>

classPeople

(

public:

/fat*

/fI?Y??Yw?T??T?

(

inti;

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

{m_UserName[i]=sUserName[i];

f*1**1**1**1**1*?1**1**1**1*

/f*T**7*f*T**T**T**T*

m_Old=nOld;

)

private:

charm_UserNamef32];

intm_01d;

/7,*2**2^*2**2*

/f?卜?卜?卜?[??[??[??[??卜4?卜,卜,;、q、;、(、,j、

};

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

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

if

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

+)

s[i]=personl.m_UserName[i];

s[i+l]=0;

)

else

for(inti=0;person?.m_UserName[i]!=0;i+

+)

{s[il=person2.m_UserName[i];

s[i+l]=0;

)

)

)

voidmain

(

chars[32];

PeopleplC'abc1',20);

Peoplep2(ndef,,30):

fun(S,pl,p2);

cout?s?endl:

return;

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

48.使用VC6打開(kāi)考生文件夾下的工程testl6_3,此工程

⑴定義類Cat的保護(hù)數(shù)據(jù)成員itsAge用于表示年齡,它是int型的數(shù)

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

⑵定義類Cat的保護(hù)數(shù)據(jù)成員GetAgeO的類外定義,返回成員的itsAge

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

⑶完成成員函數(shù)SetAge(intage)的類外定義,把數(shù)據(jù)成員itsAge賦值為

參數(shù)age的值,請(qǐng)?jiān)谧⑨尅啊?*3***之后添加適當(dāng)?shù)恼Z(yǔ)句。

(4)完成成員函數(shù)Meow的類外定義,使其輸出字節(jié)符串“meow.”到屏幕

上。請(qǐng)?jiān)谧⑨尅?*4**”后添加適當(dāng)?shù)恼Z(yǔ)句。

輸出結(jié)果如下:

meow.

kittyisacatwhois5yearsold.

meow.

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

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

#include<iostream.h>

classCat

public:

intGetAge();

voidSetAge(intage);

voidMeow();

protected:

〃**]**

};

intCat::GetAge()

(

)

voidCat::SetAge(intage)

(

)

voidCat::Meow()

(

)

voidmain()

(

Catkitty;

kitty.Meow();

kitty.SetAge(5);

cout<<"kittyisacatwhois

cout<<kitty.GetAge();

cout<<*'yearsold.Vn";

kitty.Meow();

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

序文件test4_3.cpp,其對(duì)一個(gè)學(xué)校的教師和考生情況進(jìn)行了描述。由于

教師和考生之間有相同的信息,如姓名、年齡等,所以可抽象出一個(gè)基

類person,考生類student和教師類teacher作為person類的派生類。請(qǐng)

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

⑴定義基類person的私有數(shù)據(jù)成員name和age,分別用于表示姓名和

年齡,name為字符指針,age為血型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅啊?*1**?之后添

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

(2)完成基類person的重載構(gòu)造函數(shù)person(char*minta)的定義,把數(shù)據(jù)

成員name,age分別初始化為參數(shù)n,a的值,請(qǐng)?jiān)谧⑨尅?/**2**”之后

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

⑶根據(jù)主函數(shù)main中對(duì)si的聲明,定義派生類student的構(gòu)造函數(shù)。

在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。

(4)完成派生類teacher成員函數(shù)voidsetinf(ehar*n,inta,char*d,char*1)

的定義,其功能為記錄教師的姓名、年齡、院,系與職稱信息。請(qǐng)?jiān)谧?/p>

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

輸出結(jié)果如下:

劉雷(45)destruclor

蔣軍(23)destructor

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

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

#include<iostream.h>

classperson

(

〃**]**

public:

person(){}

person(char*n,inta)

(

〃**2**

voidsetname(char*n){name=n;)

voidsetage(inta){age=a;}

?person。{cout<<name<<"(u<<age<<")destructor'^<<endl;)

);

classstudent:publicperson

(

char*department;

intcode;

public:

(

department^;

code=c;

}

};

classteacher:publicperson

(

char*department;

char*level;

public:

teacher(){}

voidsetinf(char*n,inta,char*d,char*1)

(

department=d;

level=l;

)

);

voidmain()

(

students1("蔣軍二23,”計(jì)算機(jī)學(xué)院二2);

teachertl;

tl.setinf(“劉雷",45,”計(jì)算機(jī)學(xué)院”,”教授)

參考答案

1.D解析:顯然,在數(shù)據(jù)庫(kù)系統(tǒng)階段,數(shù)據(jù)獨(dú)立性最高。

2.C解析:例如“="運(yùn)算符就不能被重載,通過(guò)重載可以創(chuàng)造新的運(yùn)

算方式,但是不能臆造新的運(yùn)算符;定義的時(shí)候必須使用關(guān)鍵宇operator,

而調(diào)用時(shí)可直接使用運(yùn)算符;

3.D解析:軟件生命周期分為軟件定義、軟件開(kāi)發(fā)及軟件運(yùn)行維護(hù)3個(gè)

階段。本題中,詳細(xì)設(shè)計(jì)、軟件編碼和軟件測(cè)試都屬于軟什開(kāi)發(fā)階段;

維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長(zhǎng),花費(fèi)代價(jià)

最大的一個(gè)階段.軟件工程學(xué)的一個(gè)目的就是提高軟件的可維護(hù)性,降

低維護(hù)的代價(jià)。

4.C解析:首先進(jìn)行括號(hào)內(nèi)的運(yùn)算,注意賦值表達(dá)式是從右向左進(jìn)行的。

i=l*k,k=k+i,m=k,所以計(jì)算得m=6,i=4o

5.A解析:使用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)的應(yīng)用系統(tǒng),強(qiáng)調(diào)封裝和復(fù)用。封裝

隱藏信息,使得被封裝的模塊與外界的耦合度更低,更容易重用。軟件

復(fù)用是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)??梢员粡?fù)用的軟件成

分一般稱作可復(fù)用構(gòu)件,無(wú)論對(duì)可復(fù)用構(gòu)件原封不動(dòng)地使用還是作適當(dāng)

的修改后再使用,只要是用來(lái)構(gòu)造新軟件,則都可稱作復(fù)用。面向?qū)ο?/p>

方法之所以特別有利于軟件復(fù)用,是由于它的主要概念及原則與軟件復(fù)

用的要求十分吻合。面向?qū)ο蠓椒◤拿嫦驅(qū)ο蟮木幊贪l(fā)展到面向?qū)ο蟮?/p>

分析與設(shè)計(jì),使這種方法支持軟件復(fù)用的固有特征能夠從軟件生命周期

的前期階段開(kāi)始發(fā)揮作用,從而使OO方法對(duì)軟件復(fù)用的支持達(dá)到了較

高的級(jí)別。與其他軟件工程方法相比,面向?qū)ο蠓椒ǖ囊粋€(gè)重要優(yōu)點(diǎn)是,

它可以在整個(gè)軟件生命周期達(dá)到概念、原則、術(shù)語(yǔ)及表示法的高度一致。

這種一致性使得各個(gè)系統(tǒng)成分盡管在不同的開(kāi)發(fā)與演化階段有不同的

形態(tài),但可具有貫穿整個(gè)軟件生命周期的良好映射。這一優(yōu)點(diǎn)使OO方

法不但能在各個(gè)級(jí)別支持軟件復(fù)用,而且能對(duì)各個(gè)級(jí)別的復(fù)用形成統(tǒng)一

的、高效的支持,達(dá)到良好的全局效果。綜上所述,選項(xiàng)A為本題正確

答案。

6.A解析:面向?qū)ο笳Z(yǔ)言包含3個(gè)要素,即對(duì)象、類和繼承。這3個(gè)要

素反映了面向?qū)ο蟮膫鹘y(tǒng)觀念。面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì)是把數(shù)據(jù)和對(duì)

數(shù)據(jù)的操作當(dāng)成一個(gè)整體即對(duì)象。

7.C解析:“++”是石結(jié)合的,所以先賦值為3,最后輸出3+1;常成員

函數(shù)只有常對(duì)象才能調(diào)用,所以輸出2。

8.D解析:setprecision()函數(shù)為設(shè)置小數(shù)位數(shù)。注意:C++中I/O流各種

函數(shù)的使用例如:setw(),setfill()o

9.C

10.B解析:C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言它充分支持面向?qū)?/p>

象思想中的3個(gè)主要特征:封裝性、繼承性、多態(tài)性。B選項(xiàng)所描述是

結(jié)構(gòu)化程序設(shè)計(jì)的思想。

11.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。

12.C解析:運(yùn)算符函數(shù)可以重載為成員函數(shù)也可以重載為非成員函數(shù),

如重載為友元函數(shù)。

13.D

14.C

解析:此題考查的是常對(duì)象。使用const關(guān)鍵字修飾的對(duì)象稱為常對(duì)

象,它不能被更新。主函數(shù)中聲明的objl是常對(duì)象,因此。bjl不能被

更新,即語(yǔ)句3更新。均1的語(yǔ)句錯(cuò)誤。

15.A

Ao【解析】本題考查const修飾符的作用。注意,const位置不同,其

修飾的部分也是不同的。本題中const修飾的是ptr所指的對(duì)象本身,

所以,ptr可以重新指向新的對(duì)象,而ptr->a則無(wú)法被更新。

16.B

*P為所指對(duì)象a的值,語(yǔ)句“b=+a++;”等價(jià)于"b=b+a;a=a+l;

17.D

在調(diào)用一個(gè)模板函數(shù)時(shí),編譯系統(tǒng)需要足夠的信息來(lái)判別每個(gè)虛擬類

型參數(shù)所對(duì)應(yīng)的實(shí)際類型,可以從兩個(gè)不同的渠道獲得這樣的信息:

從模板實(shí)參表(用“V〉”括起來(lái)的參數(shù)表)或從模板函數(shù)實(shí)參表(用括起

來(lái)的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛

擬類型參數(shù)所對(duì)應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若

干參數(shù),則模板實(shí)參表中的那幾個(gè)參數(shù)可以省略。如果模板實(shí)參表中

的實(shí)參都被省略了,則空表也可以不要,因此選項(xiàng)D錯(cuò)誤。反

之,對(duì)于某個(gè)模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無(wú)法獲得同樣的

信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有

其他不能省略的實(shí)參,則其自身還是不能省略。

18.C

基類中說(shuō)明的虛函數(shù),在派生類中自然就是虛函數(shù),所以類B中fund

是虛函數(shù);而類A中的func2沒(méi)有被關(guān)鍵字virtual修飾,所以不是虛

函數(shù)。

19.C

Co【解析】應(yīng)該先做++運(yùn)算,然后進(jìn)行%運(yùn)算,最后比較不等式,

實(shí)際上最后輸出的結(jié)果就是被3除,余數(shù)為2的不大于8的數(shù)。

20.C

解析:本題考查的知識(shí)點(diǎn)是:繼承和派生。無(wú)論使用哪種繼承方式,

派生類中的成員都不能訪問(wèn)基類中的私有成員,而可以訪問(wèn)基類中的

公有成員和保護(hù)成員,因此選項(xiàng)A)不正確。在C++中,只有抽象類

不能被實(shí)例化,而虛基類不一定非得是抽象類,所以選項(xiàng)B)不正確。

在派生類中可以重新定義從基類繼承下來(lái)的虛函數(shù),也可以不重新定

義,因此選項(xiàng)D)不正確。故本題應(yīng)該選擇C。

21.A

22.A

Ao本題考查常成員函數(shù)的應(yīng)用。VAC類中說(shuō)明了兩個(gè)函數(shù),一個(gè)是

常成員函數(shù),一個(gè)是普通函數(shù);在主函數(shù)中說(shuō)明了兩個(gè)對(duì)象,通過(guò)普

通對(duì)象vl調(diào)用的是普通函數(shù),輸出5;通過(guò)常對(duì)象V2調(diào)用的是常成員

函數(shù),輸出3。

23.D

私有繼承方式為基類的公用成員和保護(hù)成員在派生類中成了私有成

員,其私有成員仍為基類私有,但派生類對(duì)象可以訪問(wèn)基類的保護(hù)成

員,所以基類對(duì)象不能賦值給派生類對(duì)象。抽象類是指含有純虛擬函

數(shù)的類,所以選項(xiàng)D正確。

24.需求分析需求分析解析:需求分析階段的工作主要包括需求獲取、

需求分析、編寫需求規(guī)格說(shuō)明書和需求評(píng)審4個(gè)方面,產(chǎn)生的主要文檔

為軟件需求規(guī)格說(shuō)明書,它可以為用戶、分析人員和設(shè)計(jì)人員之間的交

流提供方便,直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),也可作為控制軟件開(kāi)發(fā)進(jìn)

程的依據(jù)。

25.軟件開(kāi)發(fā)軟件開(kāi)發(fā)

26.break

27.求自然數(shù)的階乘120求自然數(shù)的階乘\r\nl20解析:類CFactorial中

的成員函數(shù)CalculateFactorial。實(shí)現(xiàn)的功能是:求自然數(shù)value的階乘結(jié)

果。

28.1810

29.3

3O.Smith:30DSmith:30D解析:本題考核類與對(duì)象的操作。主函數(shù)中

定義類person的對(duì)象demo,并賦初值(30,'smith)。然后調(diào)用成員函數(shù)

display。輸出賦值結(jié)果,即Smitch:30o程序結(jié)束時(shí)dem。對(duì)象的析構(gòu)函

數(shù)被調(diào)用,再輸出“D”。

31.Base::fun();Base::fun();解析:此題考查的是成員函數(shù)的調(diào)用。因?yàn)闄M

線處的作用是調(diào)用基類的fun函數(shù),又因?yàn)榕缮愔幸灿衒un()函數(shù).所

以必須對(duì)fun()函數(shù)加以限定,即Base::fun();。

32.Base::fun()Base::fun()解析此題考查的是派生類對(duì)基類成員的訪問(wèn)。

本題中派生類Derived覆蓋了基類Base中的fun(),如果需要調(diào)用基類

中的fun(),則需要使用域運(yùn)算符故應(yīng)滇寫B(tài)ase::fun()。

33.33.14。3,3.140解析:C++編譯系統(tǒng)將根據(jù)實(shí)參表中的實(shí)參的類型

來(lái)確定函數(shù)的形參歹J表中的類型。函數(shù)fun(3,6)返回的值為3,函數(shù)調(diào)

用fun(3.14F,6.28F)返回的值為3.14。

34.x.operator-()

35.函數(shù)類函數(shù)\r\n類解析:函數(shù)是程序功能實(shí)現(xiàn)的主要方式,是實(shí)現(xiàn)

結(jié)構(gòu)化設(shè)計(jì)(將程序分成若干個(gè)函數(shù)實(shí)現(xiàn))的基本組成;類是一種用戶定

義的類型,是實(shí)現(xiàn)數(shù)據(jù)封裝和數(shù)據(jù)抽象的工具,是面向?qū)ο笤O(shè)計(jì)中的基

本組成。

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

\n(2)應(yīng)改為"assert(sizeof(s2)=lO);”。

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

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

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

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

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

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

str2[10]說(shuō)明,str2的空間為10,在第2處修改為“assert(sizeoRs2)—10)廠。

charstr3=23;語(yǔ)句說(shuō)明23是字符,所占存儲(chǔ)空間為I,所以修改為

uassert(sizeof(s3)=1);

37.(1)應(yīng)改為"TC::TC"。

\n(2)應(yīng)改為"oidTC::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ù)沒(méi)有參數(shù)。由第2處“TC=display”后的語(yǔ)句看,這

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)應(yīng)改為"Objl.SetNumber(lO);

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

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

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

“obj2.SetNumber(lOO);

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

⑵應(yīng)改為“outl.open(Hl.txt",ios::binaryIios::app);

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

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

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

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

中,輸入、輸出方式是在ios類中定義的,所以open(nl.txtM,

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

“outl.open("l.txt",ios::binaryIios::叩p);第3個(gè)標(biāo)識(shí)應(yīng)

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

“outl.put(s[i]);

41.(l)"staticintn=O"應(yīng)改為"staticintn;"。

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

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

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

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

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

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

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

⑶應(yīng)改為“if(str[i]>=a&&str[i]v=2)”。

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

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

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

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

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

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

“if(st巾]>=a)?語(yǔ)句是判斷字符st幣]是否為小寫字符,而現(xiàn)有的語(yǔ)句只

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

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

43.(1)應(yīng)改為"TCobjl(l);”。

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

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

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

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

出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的叮Cobjl(l);工第2處處的

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

成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為

4t55

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

第3處與(2.$611%1^「(100);"語(yǔ)句中的“2為類,并不是對(duì)象,這里

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

uobj2.SetNumber(lOO);"。

44.(1)應(yīng)添加“public:?。

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

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

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

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

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

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

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

(2)應(yīng)改為"cateh(inti)”。

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論