C++自考?xì)v年真題小集_第1頁
C++自考?xì)v年真題小集_第2頁
C++自考?xì)v年真題小集_第3頁
C++自考?xì)v年真題小集_第4頁
C++自考?xì)v年真題小集_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++自考?xì)v年真題小集.txt這是一個(gè)禁忌相繼崩潰的時(shí)代,沒人攔得著你,只有你自己攔著

自己,你的禁忌越多成就就越少。自卑有多種檔次,最高檔次的自卑表現(xiàn)為吹噓自己干什么

都是天才。全國2008年10月自學(xué)考試

C++程序設(shè)計(jì)試題

課程代碼:04737

一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。

錯(cuò)選、多選或未選均無分。

1.對(duì)C++語言和C語言的兼容性,描述正確的是()

A.C++兼容C

B.C++部分兼容C

C.C++不兼容C

D.C兼容C++

2.在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對(duì)象是()

A.cerr

B.cin

C.cout

D.cfile

3.對(duì)使用關(guān)鍵字new所開辟的動(dòng)態(tài)存儲(chǔ)空間,釋放時(shí)必須使用()

A.free

B.create

C.delete

D.realse

4.如沒有使用private關(guān)鍵字定義類的數(shù)據(jù)成員,則默認(rèn)為()

A.private

B.public

C.protected

D.friend

5.使用值傳遞方式將實(shí)參傳給形參,下列說法正確的是()

A.形參是實(shí)參的備份

B.實(shí)參是形參的備份

C.形參和實(shí)參是同一對(duì)象

D.形參和實(shí)參無聯(lián)系

6.在函數(shù)調(diào)用時(shí),如某一默認(rèn)參數(shù)要指明一個(gè)特定值,則有()

A.其之前所有參數(shù)都必須賦值

B.其之后所有參數(shù)都必須賦值

C.其前、后所有參數(shù)都必須賦值

D.其前、后所有參數(shù)都不必賦值

7.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,

下列表達(dá)式不正確的是()

A.intm=max(22,max(59,70));

B.intm=max(max(22,59),70);

C.intm=max(22,59,70);

D.intm=max(59,max(22,70));

8.下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)()

A.函數(shù)體語句較多

B.函數(shù)體語句較少

C.函數(shù)執(zhí)行時(shí)間較短

D.函數(shù)執(zhí)行時(shí)間過長

9.intFunc(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載()

A.intFunc(int,int,int);

B.doubleFunc(int,int);

C.doubleFunc(double,double);

D.doubleFunc(int,double);

10.對(duì)類中聲明的變量,下列描述中正確的是()

A.屬于全局變量

B.只屬于該類

C.屬于該類,某些情況下也可被該類不同實(shí)例所共享

D.任何情況下都可被該類所有實(shí)例共享

11.類的私有成員可在何處訪問()

A.通過子類的對(duì)象訪問

B.本類及子類的成員函數(shù)中

C.通過該類對(duì)象訪問

D.本類的成員函數(shù)中

12.如果沒有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是()

A.編譯器總是自動(dòng)創(chuàng)建一個(gè)不帶參數(shù)的構(gòu)造函數(shù)

B.這個(gè)類沒有構(gòu)造函數(shù)

C.這個(gè)類不需要構(gòu)造函數(shù)

D.該類不能通過編譯

13.?個(gè)類可包含析構(gòu)函數(shù)的個(gè)數(shù)是()

A.0個(gè)

B.1個(gè)

C.至少一個(gè)

D.0個(gè)或多個(gè)

14.this指針存在的目的是()

A.保證基類公有成員在子類中可以被訪問

B.保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼

C.保證基類保護(hù)成員在子類中可以被訪問

D.保證基類私有成員在子類中可以被訪問

15.下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是()

A.類本身的成員函數(shù)只能訪問自身的私有成員

B.類的對(duì)象只能訪問該類的公有成員

C.普通函數(shù)不能直接訪問類的公有成員,必須通過對(duì)象訪問

D.一個(gè)類可以將另一個(gè)類的對(duì)象作為成員

16.在編譯指令中,宏定義使用哪個(gè)指令()

A.ttinclude

B.ttdefine

C.#if

D.#else

17.設(shè)類A將其它類對(duì)象作為成員,則建立A類對(duì)象時(shí),下列描述正確的是()

A.A類構(gòu)造函數(shù)先執(zhí)行

B.成員構(gòu)造函數(shù)先執(zhí)行

C.兩者并行執(zhí)行

D.不能確定

18.下列描述錯(cuò)誤的是()

A.在創(chuàng)建對(duì)象前,靜態(tài)成員不存在

B.靜態(tài)成員是類的成員

C.靜態(tài)成員不能是虛函數(shù)

D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員

19.對(duì)于友元描述正確的是()

A.友元是本類的成員函數(shù)

B.友元不是本類的成員函數(shù)

C.友元不是函數(shù)

D.友元不能訪問本類私有成員

20.在哪種派生方式中,派生類可以訪問基類中的protected成員()

A.public和private

B.public和protected

C.protected和private

D.僅protected

二、填空題(本大題共20小題,每小題1分,共20分)

請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。

21.設(shè)要把一個(gè)文件輸出流對(duì)象myFile與文件“f:\myText.txt相關(guān)聯(lián),所用的C++語句

是:。

22.C++中ostream類的直接基類是。

23.運(yùn)算符[]只能用運(yùn)算符來重載,不能用友元運(yùn)算符來重載。

24.定義虛函數(shù)所用的關(guān)鍵字是。

25.vector類中用于返回向量中第1個(gè)對(duì)象的方法是。

26.在C++中,利用向量類模板定義?個(gè)具有20個(gè)char的向量E,其元素均被置為字符't',

實(shí)現(xiàn)此操作的語句是。

27.類的繼承是指子類繼承基類的和成員函數(shù)。

28.不同對(duì)象可以調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為。

29.指令指示編譯器將一個(gè)源文件嵌入到帶該指令的源文件之中。

30.設(shè)類A有成員函數(shù)

voidFun(void);

若要定義一個(gè)指向類成員函數(shù)的指針變量pafn來指向Fun,該指針變量的聲明語句是:

31.設(shè)在程序中使用如下語句申請(qǐng)了一個(gè)對(duì)象數(shù)組:

Point*ptr=newPoint[2];

則在需要釋放ptr指向的動(dòng)態(tài)數(shù)組對(duì)象時(shí);所使用的語句是—

32.在保護(hù)派生中,基類權(quán)限為Private的成員在派生類中

33.類A有如下成員函數(shù)

intA::fun(doublex){return(int)x/2;)

intA::fun(intx){returnx*2;}

設(shè)a為類A的對(duì)象,在主函數(shù)中有ints=a.fun(6.0)+a.fun(2),則執(zhí)行該語句后,s的值

為________o

34.對(duì)象傳送的消息一般由3部分組成:接收對(duì)象名、調(diào)用操作名和o

35.將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,實(shí)參是對(duì)象的_______o

36.在使用string類的find成員函數(shù)來檢索主串中是否含有指定的子串時(shí),若在主事中不

含指定的子串,find函數(shù)的返回值是________。

37.在C++中,聲明布爾類型變量所用的關(guān)鍵字是o

38.執(zhí)行下列代碼

inta=29,b=100;

cout〈程序的輸出結(jié)果是:_.o

39.執(zhí)行下列代碼

cout<<〃Hex:〃?hex?255;

程序的輸出結(jié)果為O

40.C++語言中可以實(shí)現(xiàn)輸出一個(gè)換行符并刷新流功能的操控符是_______o

三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)

下面的類定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。

41.ttinclude

main(){

intx=5,y=6;

constint*p=&x;

*p=y;

cout<<*p<)

42.^include

classf{

private:intx,y;

public:fl(){x=0;y=0;}

print(){cout<}

main(){

fa;

a.fl(l,1);

a.print();

)

43.ttinclude

classf{

private:intx=0,y=0;

public:voidfl(inta,intb){x=a;y=b;}

voidget(){cout<};

main(){

fa;

a.fl(1,3);

a.get();

)

44.ttinclude

classpoint{private:floatx;

public:voidf(floata){x=a;}

voidf(){x=0;}

friendfloatmax(pointfea,point&b);

);

floatmax(point&a,point&b)

{return(a.x>b.x)?a.x:b.x;)

main(){

pointa,b;

a.f(2.2);b.f(3.3);

cout<}

45.^include

template

classf{

private:Tx,y;

public:voidfl(Ta,Tb){x=a;y=b;}

Tmax(){retum(x>y)?x:y;}

};

main(){

fa;

a.fl(1.5,3.8);'

cout<)

四、完成程序題(本大題共5小題,每小題4分,共20分)

46.完成下面類中的成員函數(shù)的定義。

classpoint

(

private:

intm,n;

public:

point(int,int);

point(point&);

};

point::point(inta,intb)

(

m=a;

_________=b;

)

point::point()

m二t.m;

n=t.n;

)

47.下面是一個(gè)輸入半徑,輸出其面積和周長的C++程序,在下劃線處填上正確的語句。

#include

usingnamespacestd;

pi=3.14159;

voidmain()

(

doubler;

cout<<"r=/,;

double1=2.0*pi*r;

doubles=pi*r*r;

cout<<"\nThelongis:"<cout?,zTheareais:"<}

48.在下劃線處填上缺少的部分。

ttinclude

^include

usingnamespacestd;

classcomplex

(

public:

intreal;

intimag;

complex(intr=0,inti=0)

(

real二r;

imag=i;

)

};

complexoperator+(,complex&b)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

return;

}

voidmain()

(

complexx(l,2),y(3,4),z;

z=x+y;

cout<}

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

1,9

50,30

請(qǐng)根據(jù)輸出數(shù)據(jù)在下面程序中的下劃線處填寫正確的語句。

源程序如下:

#include

usingnamespacestd;

classbase

(

private:

intm;

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

);

voidmain()

(

base*ptr=newbase[2];

ptr->set(30);

ptr=;

ptr->set(50);

basea[2]={l,9};

cout<cout<get()?,/,";

ptr=ptr-l;

cout<<<delete[]ptr;

)

50.在下面橫線處填上求兩個(gè)浮點(diǎn)數(shù)之差的cha函數(shù)的原型聲明、調(diào)用方法。

#include

usingnamespacestd;

voidmain()

(

floata,b;

//函數(shù)cha的原型聲明

a=12.5;

b=6.5;

floatc=;//調(diào)用函數(shù)cha

cout<}

floatcha(floatx,floaty)

(

floatw;

w=x-y;

returnw;

)

五、程序分析題(本大題共4小題,每小題5分,共20分)

51.給出下面程序的輸出結(jié)果。

#include

template

classSample

(

Tn;

public:

Sampledi){n=i;}

intoperator==(Sample&);

};

template

intSample::operator==(Sample&s)

(

if(n==s.n)

return1;

else

return0;

)

voidmain()

(

Samplesl(2),s2(3);.

cout?"si與s2的數(shù)據(jù)成員〃<?sl=二s2?〃相等":"不相等〃)<Samples3(2.5),

s4(2.5);

cout<<〃s3與s4的數(shù)據(jù)成員〃<<(s3=s4?"相等":〃不相等〃X}

52.給出下面程序的輸出結(jié)果。

#include

usingnamespacestd;

template

Tmax(Tml,Tm2)

{return(ml>m2)?ml:m2:}

voidmain(){

cout<cout<}

53.給出下面程序的輸出結(jié)果

#include

usingnamespacestd;

classA{

public:

intx;

A(){)

A(inta){x=a;}

intget(inta){returnx+a;}};

voidmain(){

Aa(8);

int(A::*p)(int);

p=A::get;

cout<<(a.*p)(5)<A*pi=&a;

cout?(pi->*P)(7)<54.給出下面程序的輸出結(jié)果。

include

#include

usingnamespacestd;

classBook{

char*title;

char*author;

intnumsold;

public:

Book(){}

Book(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold=num;}

voidsetbook(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold二num;

}

?Book(){

deletetitle;

deleteauthor;

)

voidprint(ostream&output){

output<<"書名:"<output<<"作者:"<output*"月銷售

量:〃<).

};

voidmain(){

Bookobjl("數(shù)據(jù)結(jié)構(gòu)〃,〃嚴(yán)蔚敏〃,200),obj2;

objl.print(cout);

obj2.setbook(〃C++語言程序設(shè)計(jì)",〃李春葆〃,210);

obj2.print(cout);

)

六、程序設(shè)計(jì)題(本大題共1小題,共10分)

55.在三角形類TRI實(shí)現(xiàn)兩個(gè)函數(shù),功能是輸入三個(gè)頂點(diǎn)坐標(biāo)判斷是否構(gòu)成三角形

ttinclude

#include

classpoint{

private:floatx,y;

public:point(floata,floatb){x=a;y=b;}

point(){x=0;y=0;},

voidset(floata,floatb){x=a;y=b;}

floatgetx(){returnx;}

floatgety(){returny;}

);

classtri(

pointx,y,z;

floatsi,s2,s3;

public;...settri(....);//用于輸入三個(gè)頂點(diǎn)坐標(biāo)

....test(....);//用于判斷是否構(gòu)成三角形

);請(qǐng)寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值

類型

全國2009年1月自學(xué)考試

C++程序設(shè)計(jì)試題

課程代碼:04737

一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)o

錯(cuò)選、多選或未選均無分。

1.C++源程序文件擴(kuò)展名為()

A..cpp

B..h

C..lib

D..obj

2.在C++中使用流進(jìn)行輸入輸出,其中專用于從鍵盤進(jìn)行輸入的流是()

A.cerr

B.cin

C.cout

D.cfile

3.包含自定義頭文件file,h的預(yù)處理指令是()

A.#define<file.h>

B.#includefile,h

C.^definefile,h

D.#include,zfile.h〃

4.用于標(biāo)識(shí)十六進(jìn)制前綴或后綴是()

A.元

B.后綴L或e

C.前綴零

D.前綴Ox

5.設(shè)存在整型變量intx,則下列句與其它三項(xiàng)含義不同的是()

A.int*p=&x;

B.int&p=x;

C.int&p=x;

D.int&p=x;

6.在定義類成員時(shí),為產(chǎn)生封裝性,則需使用哪個(gè)關(guān)鍵字()

A.public

B.publish

C.protected

D.private

7,設(shè)函數(shù)voidswap(int&,int&)將交換兩形參的值,如兩整型變量inta=10;intb=15;

則執(zhí)行swap(a,b)后,a、b值分別為()

A.10,10

B.10,15

C.15,10

D.15,15

8.函數(shù)默認(rèn)參數(shù)在函數(shù)原型中說明,默認(rèn)參數(shù)必須放在參數(shù)序列的()

A.前部

B.中部

C.后部

D.兩端

9.設(shè)存在函數(shù)intmin(int,int)返回兩參數(shù)中較小值,若求15,26,47三者中最小值,下

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

A.intm=min(min(15,26),min(15,47));

B.intm=min(15,26,47);

C.intm=min(15,min(47,26));

D.intm=min(min(47,26),16);

10.下列函數(shù)不能和函數(shù)voidprint(char)構(gòu)成重載的是()

A.intprint(int);

B.voidprint(char,char);

C.intprint(char);

D.voidprint(int,int);

11.在下列成對(duì)的表達(dá)式中,運(yùn)算結(jié)果類型相同的一對(duì)是()

A.7/2和7.0/2.0

B.7/2.0和7/2

C7.0/2和7/2

D.7.0/2.0和7.0/2

12.內(nèi)聯(lián)函數(shù)的特點(diǎn)是()

A.減少代碼量,加快訪問速度

B.減少代碼量,減緩訪問速度

C.增加代碼量,減緩訪問速度

D.增加代碼量,加快訪問速度

13.類的私有成員可在何處被訪問()

A.本類的成員函數(shù)中

B.本類及子類的成員函數(shù)中

C.通過對(duì)象名在任何位置

D.不可訪問

14.類的構(gòu)造函數(shù)在以下什么情況下會(huì)被自動(dòng)調(diào)用()

A.定義成員函數(shù)時(shí)

B.定義對(duì)象時(shí)

C.定義數(shù)據(jù)成員時(shí)

D.定義友元函數(shù)時(shí)

15.下列關(guān)于析構(gòu)函數(shù)描述正確的是()

A.可以重載

B.函數(shù)體中必須有delete語句

C.返回類型必須是void類型

D.不能指定返回類型

16.設(shè)有函數(shù)TSum(Tx,Ty){returnx+y;),其中T為模板類型,則下列語句中對(duì)該函數(shù)

錯(cuò)誤的使用是()

A.Sum(l,2);

B.Sum(3.0,2.2);

CSum('A','C');

D.Sum("A〃,"C");

17.下列哪個(gè)編譯指令屬于條件編譯指令()

A.^include

B.^define

C.#else

D.Spragma

18.關(guān)于類的靜態(tài)成員函數(shù)描述錯(cuò)誤的是()

A.在創(chuàng)建對(duì)象前不存在

B.不能說明為虛函數(shù)

C.不能直接訪問非靜態(tài)函數(shù)

D.不是對(duì)象的成員

19.如果類A被聲明成類B的友元,則()

A.類A的成員即類B的成員

B.類B的成員即類A的成員

C.類A的成員函數(shù)不得訪問類B的成員

D.類B不一定是類A的友元

20.派生類的對(duì)象可以訪問以下那種情況繼承的基類成員()

A.私有繼承的私有成員

B.公有繼承的私有成員

C.私有繼承的保護(hù)成員

D.公有繼承的公有成員

二、填空題(本大題共20小題,每小題1分,共20分)

請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。

21.若使用標(biāo)準(zhǔn)輸出流把整型變量a的值輸出到屏幕上,實(shí)現(xiàn)此操作的C++語句是。

22.C++將數(shù)據(jù)從一個(gè)對(duì)象流向另一個(gè)對(duì)象的流動(dòng)抽象為“流”,從流中獲取數(shù)據(jù)的操作稱為

23.執(zhí)行下列代碼

intb=100;

cout?/zllex:z/?hex<<b;

程序的輸出結(jié)果是。

24.靜態(tài)聯(lián)編所支持的多態(tài)性稱為的多態(tài)性。

25.C++程序必須有且只有一個(gè)主函數(shù),其函數(shù)名為。

26.寫出聲明一個(gè)復(fù)數(shù)對(duì)象的語句,并使該對(duì)象被初始化為2.2+1.3i,此聲明語句是o

27.若有函數(shù)定義為:

intadd(intml=0,intm2=2,intm3=4)

{returnml+m2+m3;}

在主函數(shù)中有ints=add(l)+add(0,l)+add(0,1,2);

則執(zhí)行此語句后s的值為。

28.C++中使用關(guān)鍵字說明函數(shù)為內(nèi)聯(lián)函數(shù)。

29.在源程序中有宏定義:#definePI3.14,則若不想使該宏定義影響到程序的其它地方,

可以使用刪除該宏定義。

30.類和其它數(shù)據(jù)類型不同的是,組成這種類型的不僅可以有數(shù)據(jù),還可以有對(duì)數(shù)據(jù)進(jìn)行操作

的。

31.有下列代碼inta=0;doubleb=0;cin?a?b;當(dāng)用鍵盤輸入1.25時(shí),b=。

32.對(duì)于類Point而言,其析構(gòu)函數(shù)的定義原型為____o

33.對(duì)象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對(duì)象在類中說明的順序,與它們?cè)诔蓡T初始化列

表中給出的順序______O

34.類的簡單成員函數(shù)是指聲明中不含、volatile,static關(guān)鍵字的函數(shù)。

35.與操作對(duì)象的數(shù)據(jù)類型相互獨(dú)立的算法稱為____。

36.從一個(gè)或多個(gè)以前定義的類產(chǎn)生新類的過程稱為o

37.在vector類中向向量尾部插入一個(gè)對(duì)象的方法是____。

38.C++中用于動(dòng)態(tài)創(chuàng)建對(duì)象,并返回該對(duì)象的指針的關(guān)鍵字是o

39.C++的流類庫預(yù)定義的與標(biāo)準(zhǔn)輸出設(shè)備相聯(lián)接的流是____。

40.執(zhí)行下列代碼

cout<<noshowpoint<<123.0;

程序輸出結(jié)果是O

三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)

下面的類定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。

41.#include<iostream.h>

classf{

private:floatx,y;

public:f(floata,floatb){x=a;y=b;}

floatmax(){return(x<y)?x:y;}//求最大值

};

main(){

fa(l.5,3.8);

cout<<a.max()<<endl;

}

42.#include<iostream.h>

classtest{

private:intx;

public:test(inta){x=a;}

voidset(inta){x=a;}

voidget(){cout<<x<<endl;}

)

main(){

consttesta(3);

A.set⑸;

A.get();

}

43.#include<iostream.h>

classpoint{

private:floatx,y;

public:fl(floata,floatb){x=a;y=b;}

point(){x=0;y=0;}

voidgetx(){cout<<x<<endl;}

voidgety(){cout?y?endl;}

};

voidprint(pointa){cout?a.x?endl;}

main(){

pointa;

A.fl(3.0,5.0);

print(a);

)

44.#include<iostream.h>

classf(

private:intx,y;

public:fl(inta,intb){x=a;y=b;}

voidprint(){cout?x?y<<endl;}

};

mainO{

fa;

A.fl(1.5,1.8);

A.print();

)

45.#include<iostream.h>

main(){

intx=6;

constint*p二x;

cout<<*p?endl;

)

四、完成程序題(本大題共5小題,每小題4分,共20分)

46.完成下面程序,使其輸出10,并在退出運(yùn)行時(shí)正確釋放分配給指針的存儲(chǔ)空間。

#include<iostream>

usingnamespacestd;

voidmain()

(

int*a,*p;

a=newint(10);

P=;

cout<<*p<<endl;

47.#include<iostream>

usingnamespacestd;

classbase

(

private:intx;

public:base(inta){x=a;}

intget(){returnx;}

voidshowbase(){cout?,,x="z<<x<<endl;}

);

classDerived:publicbase

{private:inty;

public:Derived(inta,intb):base(a){y=b;}

voidshowderivedO

{cout<<,,x=,,<<get()<<",y=zz<<y<<endl;}

);

voidmain()

(

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderivedO;

b.showbase();

bl.showbase();

base*pb=&bl;

pb—>showbase();

d.showderivedO;

b.showbase();

)

輸出結(jié)果如下:

x=3

x=6,y=7

x=6

x=6

x=6

x=6,y=7

x=6

48.下面程序的運(yùn)行結(jié)果如下:

B::display()

C::display()

在下劃線處填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

classB

(

public:

display(){cout<<〃B::display()〃<<endl;

);

classC:publicB

public:

display(){cout?,,C::display(),z?endl;}

);

voidfun(B*p)

(

p->display();

)

voidmain()

(

Bb,*pb;

Cc;

pb=&b;

fun(pb);

pb=&c;

fun(pb);

)

49.下面程序的運(yùn)行結(jié)果如下:

Thisislinel

Thisisline2

Thisisline3

在下劃線處填上缺少的部分。源程序如下:

ttinclude<iostream>

ttinclude

usingnamespacestd;

voidmain()

(

fstreamfin,fout;

fout.open(〃my.txt〃,ios::out);

if(!fout.is_open())

return;

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

fout?/zThisislinez,<<i+l?endl;

fout.closeO;

fin.open(〃my.txt〃,ios::in);

if(!fin.is_open())

return;

charstr[100];

while()

(

fin.getline(str,100);

cout<<str<<endl;

)

fin.close();

)

50.在下劃線處填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

Tfun(Tx)

(

______y;

y=x*x-T(5);

returny;

)

voidmain()

(

floata=2;

cout?fun(a);

)

五、程序分析題(本大題共4小題,每小題5分,共20分)

51.請(qǐng)寫出myTextl.txt文本文件中的內(nèi)容

#include<iostream>

#include<string>

usingnamespacestd;

#include<fstream>

voidmain()

(

ofstreammyFilel;

myFilel.open(z/myTextl.txt〃);

cout?z/EnterthedatainChineseformat(e.g.,2008,May25):/z<<endl;

stringDate(“2008,January1");

stringYear=Date,substr(0,4);

intk=Date.find(",");

inti二Date,find(〃〃);

stringMonth=Date,substr(k+1,i-k-l);

stringDay=Date.substr(i+1,2);

stringNewDate=Day+〃〃+Month+〃〃+Year;

myFilel?,zoriginaldate:z,<<Date?endl;

myFi1e1?,zConverteddate:,z<<NewDate<<endl;

myFilel.close();

)

52.給出下面程序的輸出結(jié)果

#include<iostream>

usingnamespacestd;

classSimple

intx,y;

public:

Simple(){x=y=O;}

Simple(inti,intj){x=i;y=j;}

voidcopy(Simple&s);

voidsetxy(inti,intj){x=i;y=j;}

voidprint()(cout?/,x=,/<<x<</,,y=z,<<y<<endl;}

);

voidSimple::copy(Simple&s)

(

x=s.x;y=s.y;

)

voidfunc(Simplesi,Simple&s2)

{

si.setxy(30,40);

s2.setxy(70,80);

)

voidmain()

(

Simpleobjl(1,2),obj2;

obj2.copy(objl);

func(objl,obj2);

objl.print();

obj2.print();

)

53.給出下面程序的輸出結(jié)果

#includez/iostream.h〃

intmain()

(

inti=17;

while(i>=10)

if(―i%4=3)continue;

else

cout?,zi=,z<<i―<<endl;

)

54.給出下面程序的輸出結(jié)果

#include<iostream>

usingnamespacestd;

voidmain()

(

intnum=300;

int&ref=num;

cout?ref;

ref=ref-100;

cout<<"〃<<num;

num=num-50;

cout<<,zzz<<ref<<endl;

)

六、程序設(shè)計(jì)題(本大題共1小題,共10分)

55.定義堆棧類模板Stack(先進(jìn)后出),棧的大小由使用者確定。要求該類模板對(duì)外提供

如下二種基本操作:

(1)push入棧(2)pop出棧,用數(shù)組來實(shí)現(xiàn)

#include<iostream>

usingnamespacestd;

template<classT,intsize>

classStack{

Tx[size];

intcurrent;

public:

Stack(){current=0;}

....push(....);

....pop(....);

};

請(qǐng)寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值類型)

全國2009年10月自學(xué)考試

C++程序設(shè)計(jì)試題

課程代碼:04737

一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。

錯(cuò)選、多選或未選均無分。

1.對(duì)C++中主函數(shù)描述正確的是()

A.名稱為main,可為多個(gè)

B.名稱不限,可為多個(gè)

C.名稱為main,必須有且只能有一個(gè)

D.名稱不限,必須有且只能有一個(gè)

2.調(diào)用聲明為intresult(inta,intb)的函數(shù)時(shí),正確的方法是()

A.result(1,2)

B.result(1)

C.result(0.1,0.3)

D.result(1,2,3)

3.用于包含C++標(biāo)準(zhǔn)庫iostream的預(yù)處理指令是()

A.ftdefine

B.#include

C.#define<iostream,

D.#include'iostream'

4.無類型標(biāo)識(shí)符是指()

A.void

B.bool

C.short

D.long

5.從本質(zhì)上看,引用是被引用變量的()

A.拷貝

B.別名

C.復(fù)制

D.克隆

6.下面關(guān)于數(shù)組的初始化正確的是()

A.charstr[]={'a','b','c'};

B.charstr[2]={'a','b','c'};

C.charstr[l][2]={{,a,,'b*},{'e','d'}};

D.charstr[][]={'a'b'c'};

7.C++類中定義的成員默認(rèn)訪問屬性為()

A.public

B.private

C.protected

D.friend

8.決定C++語言中函數(shù)的返回值類型的是()

A.return語句中的表達(dá)式類型

B.調(diào)用該函數(shù)時(shí)系統(tǒng)隨機(jī)產(chǎn)生的類型

C.調(diào)用該函數(shù)時(shí)的主調(diào)用函數(shù)類型

D.在定義該函數(shù)時(shí)所指定的數(shù)據(jù)類型

9.函數(shù)int&min(int&,int&)返回參數(shù)中較小者,設(shè)有兩整型變量inta=10;intb=15;

在執(zhí)行語句min(a,b)-;之后,a,b值分別為()

A.9,14

B.9,15

C.10,14

D.10,15

10.聲明函數(shù)為內(nèi)聯(lián)函數(shù)時(shí)所使用的關(guān)鍵字為()

A.const

B.inline

C.short

D.signed

IL函數(shù)intsum(inta=l,intb=l,intc=3)可與下列哪個(gè)函數(shù)同時(shí)聲明()

A.doublesum(int);

B.charsum(int,int);

C.intsum(double);

D.intsum(int,int,int);

12.函數(shù)模板templatevoidFunc(T,T)可具有下列哪種實(shí)例化形式()

A.voidFunc(float,int)

B.voidFunc(char,char)

C.voidFunc(int,double)

D.voidFunc(bool,float)

13.下列訪問成員的方式哪個(gè)是正確的()

A.對(duì)象名,對(duì)象成員名

B.對(duì)象指針名.對(duì)象成員名

C.對(duì)象名f對(duì)象成員名

D.類名一對(duì)象成員名

14.對(duì)類A,復(fù)制構(gòu)造函數(shù)的原型是()

A.A::A(constA&);

B.A::A(constA*);

C.A::A(constA);

D.A::A();

15.對(duì)classpoint,如使用point*ptr=newpoint[2];創(chuàng)建對(duì)象數(shù)組,則刪除此數(shù)組使用

的語句是()

A.deleteptr[2];

B.deletet]ptr;

C.deleteptr[];

D.delete[2]ptr;

16.下列哪個(gè)編譯指令不屬于條件編譯指令()

A.#if

B.#else

C.#endif

D.tterror

17.類A中存在靜態(tài)數(shù)據(jù)成員x,設(shè)a和b是類A的兩個(gè)對(duì)象,在執(zhí)行a.x=10之后,b.x

的值為()

A.未初始化

B.等于a.x

C.等于0

D.隨機(jī)

18.使用string/庫操縱字符串時(shí),將兩個(gè)字符串連接成一個(gè)字符串的函數(shù)是()

A.strlen()

B.strcap()

C.strcat()

D.strcmp()

19.基類中的public成員,通過public派生,其在派生類中的訪問權(quán)限為()

A.不可訪問

B.private

C.protected

D.public

20.不同對(duì)象調(diào)用同名函數(shù),但導(dǎo)致完全不同行為的現(xiàn)象稱為()

A.抽象

B.封裝

C.繼承

D.多態(tài)性

二、填空題(本大題共20小題,每小題1分,共20分)

請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。

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

22.執(zhí)行代碼doublepi=3.1415192;cout<<setprecision(3)<<pi;程序的輸出結(jié)果

是?

23.C++語言提供的的基本控制結(jié)構(gòu)可以分為3種類型:順序結(jié)構(gòu)、和循環(huán)結(jié)構(gòu)。

24.要使用STL庫提供的對(duì)數(shù)組進(jìn)行降嘉排序算法,在源程序中需要包含的頭文件是o

25.在C++標(biāo)準(zhǔn)庫中,用類來表示復(fù)數(shù)。

26.將對(duì)象作為函數(shù)參數(shù),是將實(shí)參對(duì)象的傳遞給形參對(duì)象,這種傳遞是單向的。

27.C++函數(shù)的返回類型可以是除數(shù)組與以外的任何類型。

28.能提供封裝的C++關(guān)鍵字是。

29.在C++的類聲明中,用public關(guān)鍵字聲明的類成員的訪問權(quán)限是。

30.開發(fā)一個(gè)C++語言程序的步驟通常包括編輯、、連接、運(yùn)行和調(diào)試。

31.C++類中的_____函數(shù)在對(duì)象的生存期結(jié)束時(shí)被自動(dòng)調(diào)用。

32.友元函數(shù)可以存取類的、公有成員和保護(hù)成員。

33.若類的成員函數(shù)用關(guān)鍵字static進(jìn)行修飾,這樣的成員函數(shù)稱為。

34.在C++中,創(chuàng)建派生類對(duì)象時(shí)?,總是先從的初始化開始的。

35.類的繼承是指派生類繼承基類的數(shù)據(jù)成員和。

36.在C++中,利用向量類模板定義一個(gè)具有20個(gè)double的向量,其元素均被置為0.5,實(shí)

現(xiàn)此操作的語句是。

37.vector類中用于返回向量中的最后一個(gè)對(duì)象的方法是。

38.虛函數(shù)類似于重載函數(shù),但與重載函數(shù)的實(shí)現(xiàn)策略不同,對(duì)虛函數(shù)聲明時(shí)應(yīng)使用

關(guān)鍵字。

39.在C++中,雖然友元提供了類之間數(shù)據(jù)進(jìn)行訪問的?種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)

計(jì)的_______特性。

40.執(zhí)行下列代碼

cout<<showpoint<<123.0;程序的輸出結(jié)果是。

三、改錯(cuò)題(本大題共5小題,每小題4分,共20分)

下面的每個(gè)程序都有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。

41.#include

usingnamespacestd;

intmain(){

intnum;max=10;num=1

while(num<max)num++;

cout<X"Num="?num;

return0;

)

42.#include

usingnamespacestd;

classA{

voidshow(){

cout<<"Hello!";

}

);

intmain(){

Aa;a.show();

return0;

)

43.#include

usingnamespacestd;

intmain()(

constintnum=20;

intscores[num];

for(inti=l;i<=num;i++){

scores[i]=i;

}

return0;

)

44.#include

usingnamespacestd;

classCMax{

private:

intxx;intyy;

public:

CMax(intx,inty)

{xx=x;yy=y;}

voidsetValue(intx,inty)

{xx=x;yy=y;}

intmax(){

returnxx>yy?xx:yy;

)

};

voidmain(){

CMaxm();

m.setValue(20,30);

cout<<"Max="<}

45.^include

usingnamespacestd;

classA{

public:

charname[255];

private:

char*getName()

{returnname;}

);

classB:publicA{

public:

B(char*n){

strcpy(name,n);

)

};

voidmain(){

Bb(〃Hello!");

cout<<"Name:"<}

四、完成程序題(本大題共5小題,每小題4分,共20分)

46,將下面程序補(bǔ)充完整,使程序輸出結(jié)果為:

Begin

Welcome

Show

End

程序如下:

#include

usingnamespacestd;

classA{

public:

cout<<〃Begin"<}

voidshow(){

cout<<"Show"<}

cout<<z,End"<}

);

Aobject;

intmain(){

cout?,zWelcome<object.show();

return0;

)

47.請(qǐng)將下面程序補(bǔ)充完整,使程序可以正常打印9X9乘法口訣。

#include

usingnamespacestd;

classA{

private:

inta;intb;

public:

{a=x;b=y;}

voidset(intx,inty)

{a=x;b=y;}

voiddisplay(){

cout<}

};

intmain(){

Aa(l,1);

for(inti=l;i<=9;i++){

for(intj=l;____;j++){

a.set(j,i);

a.display();

cout<<"";

}

cout<)

return0;

)

48.將下面程序補(bǔ)充完整,使程序可以輸入學(xué)生信息并計(jì)算平均成績。

#include

#include

usingnamespacestd;

classStudent{

private:

charname[255];

intscore[10];

public:

Student(charn[],ints[]){

for(inti=0;i<10;i++){

score[i]=s[i];

)

)

voidShow(){

intsum=0;

for(inti=0;i<10;i++){

)

cout<<〃名字:“<<name?w,平均成績:〃<}

);

voidmain(){

charname[255];

intscore[10];

cout?ff姓名:";cin?name;

for(inti=0;i<10;i++){

cout<<"成績"<cin〉〉score[i];

}

Students(name,score);

s.Show();

}

49.將下面程序補(bǔ)充完整,使程序可以正常運(yùn)行,并釋放內(nèi)存。

#include

classA{

private:

T*data;

intlength;

public:

A(intlen){

length=len;

data二newT[len];

)

?A()(

)

T&operator[](inti){

returndata[i];

}

};

intmain(){

Aobj(2);

obj[0]=l;

obj[l]=2;

cout<cout<return0;

}

50.將下面程序補(bǔ)充完整,使程序運(yùn)行結(jié)果為:

ClassA

ClassB

程序如下:

#include

#include

classA(

public:

virtualvoidGetA()=0;

};

classB:publicA(

private:

charstr[32];

public:

voidGetA(){

cout<<"ClassA"<}

constchar*GetB(){

)

B(char*s){

strcpy(str,s);

}

};

voidmain(){

A*a;

Bb(〃ClassB");

a=;

a->GetA();

cout<return;

)

五、程序分析題(本大題共2小題,每小題5分,共10分)

51.ttinclude

usingnamespacestd;

intmain(){

inti,j;

for(i=l;i<=4;i+=l)

for(j=2;j<=4;j+=j){

if(i+j<5)

cout<<"+f,;

else

cout<<"*";

return0;

52.ttinclude

usingnamespacestd;

classA{

inta;

public:

A(intaa=O){a=aa;}

-A(){cout<<〃DestructorA!”<};

classB:publicA{

intb;

public:

B(intaa=0,intbb=0):A(aa){b=bb;}

?B(){cout<<"DestructorB!?b?endl;}

);

voidmain(){

Bx(5),y(6,7);

)

六、程序設(shè)計(jì)題(本大題10分)

53.下面Shape類是?個(gè)表示形狀的抽象類,Area()為求圖形面積的函數(shù)。請(qǐng)從Shape類派

生梯形類(Trapezoid)、圓形類(Circle),三角形類(Triangle),并給出具體的求面積函

數(shù)。其中,所有派生類計(jì)算面積需要用到的參數(shù)由構(gòu)造函數(shù)給出,梯形面積計(jì)算需要上底、

下底和高,三角形面積需要底和高,圓形面積需要半徑。

形狀的抽象類聲明如下:考試大收集整理

classShape(

public:

virtualdoubleArea(

溫馨提示

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