自學(xué)考試C程序設(shè)計(jì)試題_第1頁(yè)
自學(xué)考試C程序設(shè)計(jì)試題_第2頁(yè)
自學(xué)考試C程序設(shè)計(jì)試題_第3頁(yè)
自學(xué)考試C程序設(shè)計(jì)試題_第4頁(yè)
自學(xué)考試C程序設(shè)計(jì)試題_第5頁(yè)
已閱讀5頁(yè),還剩181頁(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)介

自學(xué)考試C++程序設(shè)計(jì)試題

課程代碼:04737

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

1.對(duì)C++言語(yǔ)和C言語(yǔ)的兼容性,描述正確的選項(xiàng)是(A)

A.C++兼容CB.C++局部兼容CC.C++不兼容CD.C兼容C++

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

A.cerrB.cinC.coutD.cfile

(cerr:標(biāo)準(zhǔn)錯(cuò)誤輸出(非緩沖方法);cin:標(biāo)準(zhǔn)輸入;

clog標(biāo)準(zhǔn)錯(cuò)誤輸出(緩沖方法))

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

A.freeB.createC.deleteD.realse

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

A.privateB.publicC.protectedD.friend

5.使用值傳遞方法將實(shí)參傳給形參,以下說(shuō)法正確的選項(xiàng)是(A)

A.形參是實(shí)參的備份B.實(shí)參是形參的備份C.形參利實(shí)參是同一對(duì)象D.形參和實(shí)參無(wú)

聯(lián)系

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

A.其之前全部參數(shù)都必須賦值B.其之后全部參數(shù)都必須賦值C.其前、后全部參數(shù)都必須

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

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

值,以下表達(dá)式不正確的選項(xiàng)是(C)

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)

A.函數(shù)體語(yǔ)句較多B.函數(shù)體語(yǔ)句較少C.函數(shù)執(zhí)行時(shí)間較短D.函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng)

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

A.intFunc(int,int,int);B.doubleFunc(int,int);

C.doubleFunc(double,double);D.doubleFunc(int,double);

說(shuō)明:不能以形參名來(lái)區(qū)分函數(shù);不能以

函數(shù)返回值來(lái)區(qū)分函數(shù)。必須是形參的個(gè)

數(shù)或者類型不同才能構(gòu)成函數(shù)重載。

10.對(duì)類中聲明的變量.以下描述中TF確的選項(xiàng)是(C)

A.屬于全局變量B.只屬于該類C.屬于該類,某些情況下也可被該類不同實(shí)例所共享

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

11.類的私有成員可在哪里訪問(wèn)(D)

A.通過(guò)子類的對(duì)象訪問(wèn)B.本類及子類的成員函數(shù)中C.通過(guò)該類對(duì)象訪問(wèn)D.本類的

成員函數(shù)中

12.如果沒(méi)有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,以下描述正確的選項(xiàng)是(A)

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

B.這個(gè)類沒(méi)有構(gòu)造函數(shù)C.這個(gè)類不需要構(gòu)造函數(shù)D.該類不能通過(guò)編譯

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

A.0個(gè)B.1個(gè)C.至少一個(gè)D.0個(gè)或多個(gè)

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

A.保證基類公有成員在子類中可以被訪問(wèn)

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

C.保證基類愛(ài)護(hù)成員在子類中可以被訪問(wèn)D.保證基類私有成員在子類中可以被訪問(wèn)

15.以下關(guān)于類的權(quán)限的描述錯(cuò)誤的選項(xiàng)是(A)

A.類本身的成員函數(shù)只能訪問(wèn)自身的私有成員B.類的對(duì)象只能訪問(wèn)該類的公有成員

C.一般函數(shù)不能直接訪問(wèn)類的公有成員,必須通過(guò)對(duì)象訪問(wèn)D.一個(gè)類可以將另一個(gè)類的

對(duì)象作為成員

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

A.includeB.defineC.ifD.else

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

(B)

A.A類構(gòu)造函數(shù)先執(zhí)行B.成員構(gòu)造函數(shù)先執(zhí)行C.兩者并行執(zhí)行D.不能確定

類的組合,描述的是一個(gè)類內(nèi)嵌其他類的對(duì)象作為成員的情況,它們之間的關(guān)系是一種包含

與被包含的關(guān)系。

在聲明一個(gè)組合類的對(duì)象時(shí),不僅它自身的構(gòu)造函數(shù)將被調(diào)用,而且還將調(diào)用其內(nèi)嵌對(duì)象的

構(gòu)造函數(shù)。這時(shí)構(gòu)造函數(shù)的調(diào)用順序是:

(1)按照內(nèi)嵌對(duì)象在組合類的聲明中出現(xiàn)的次序,依次調(diào)用內(nèi)嵌對(duì)象的構(gòu)造函數(shù);

(2)執(zhí)行本類構(gòu)造函數(shù)的函數(shù)體

析構(gòu)函數(shù)的調(diào)用執(zhí)行順序與構(gòu)造函數(shù)剛好相反。

18.以下描述錯(cuò)誤的選項(xiàng)是(A)

A.在創(chuàng)立對(duì)象前,靜態(tài)成員不存在B.靜態(tài)成員是類的成員

C.靜態(tài)成員不能是虛函數(shù)D.靜態(tài)成員函數(shù)不能直接訪問(wèn)非靜態(tài)成員

說(shuō)明:靜態(tài)成員函數(shù)可以直接訪問(wèn)該類的靜態(tài)數(shù)據(jù)和函數(shù)成員,而訪問(wèn)非靜態(tài)成員,必須通

過(guò)參數(shù)傳遞方法得到對(duì)象名,然后通過(guò)對(duì)象名來(lái)訪問(wèn)。

19.對(duì)于友元描述正確的選項(xiàng)是(B)

A.友元是本類的成員函數(shù)B.友元不是本類的成員函數(shù)C.友元不是函數(shù)D.友元不能訪問(wèn)

本類私有成員

20.在哪種派生方法中,派生類可以訪問(wèn)基類中的protected成員(B

A.publicprivateB.public^0protectedC.protectedprivateD.Rprotected

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

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

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

是:myFile.open("f:\\myText.txt");。

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

23.運(yùn)算符]只能用成員運(yùn)算符來(lái)重載,不能用友元運(yùn)算符來(lái)重載。

24.定義虛函數(shù)所用的關(guān)鍵字是virtual。25.vector類中用于返回向量中第1個(gè)對(duì)象的方

法是front()。

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

't',完成此操作的語(yǔ)句是vector〈char>E(20,'t')。

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

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

的多態(tài)性)。

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

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

voidFun(void);

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

void(A::Xpafn)(void);。

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

PointXptr=newPoint2];

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

32.在愛(ài)護(hù)派生中,基類權(quán)限為Private的成員在派生類中不可訪問(wèn)。

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

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

intA::fun(intx){returnxX2;}

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

34.對(duì)象傳送的消息一般由3局部組成:接收對(duì)象名、調(diào)用操作名和必要的參數(shù)。

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

36.在使用string類的find成員函數(shù)來(lái)檢索主串中是否含有指定的子串時(shí),假設(shè)在主串中

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

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

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

inta=29,b=100;

cout?setw(3)?a?b?endl;

程序的輸出結(jié)果是:29100o

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

coutHex:"?hex?255;

程序的輸出結(jié)果為Hex:ffo

40.C++言語(yǔ)中可以完成輸出一個(gè)換行符并刷新流功能的操控符是3

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

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

41.include<iostream.h>

voidmain(){

intx=5,y=6;

constintXp二&x;

Xp=y;

cout?Xp?endl;

}

Xp=y;指針p所指向的為一常量,不能進(jìn)行左值操作

42.include<iostream.h>

classf{

private:intx,y;

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

print(){cout?x<</,?y?endl:}

11

voidmain(){

fa;

a.fl(l,1);

a.print();

}

a.fl(1,1);fl()調(diào)用時(shí)實(shí)參與形參數(shù)量不一致

43.include<iostream.h>

classf{

private:intx=0,y=0;

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

voidget(){cout?x?,?y<<endl;}

voidmain(){

fa;

a.fl(1,3);

a.get();

}

private:intx=0,y=0;數(shù)據(jù)成員聲明時(shí)不同意直接賦值

44.include<iostream.h>

classpoint{private:floatx;

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

voidf(){x=0;}

friendfloatmax(points,pointb);

};

floatmax(pointa,pointb)

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

voidmain(){

pointa,b;

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

cout?a.max(a,b);

)

cout?a.max(a,b);max()不是類的成員函數(shù),不能用a.max()方法調(diào)用

45.include<iostream.h>

template<classT>

classf{

private:Tx,y;

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

Tmax(){return(x>y)x:y;}

);

voidmain(){

fa;

a.fl(1.5,3.8);'

cout?a.x?a.y?a.max()<<endl:

}

cout?a.x?a.y?a.max()?endl;x,y是私有類型,不能在主函數(shù)中直接使用

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

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

classpoint

{

private:

intm,n;

public:

point(int,int);

point(point&);

point::point(inta,intb)

m=a;

n二b;

}

point::point(point&t)

(

m=t.m;

n=t.n;

)

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

include<iostream>

usingnamespacestd;

constdoublepi=3.14159;

voidmain()

{

doubler;

cout<<";

cin?r;

double1=2.OXpiXr;

doubles=piXrXr;

cout?M\nThelongis:“<<l?endl;

cout<<"Theareais:"?s<<endl;

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

include<iostream>

include<fstream>

usingnamespacestd;

classcomplex

(

public:

intreal:

intimag;

complex(intr=0,inti=0)

(

real=r;

imag=i;

}

);

complexoperator+(complex&a,complexb)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

returncomplex(r,i);

voidmain()

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

z=x+y;

cout?z.real<</,?z.imag?wi"?endl;

)

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

1,9

50.30

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

源程序如下:

include<iostream>

usingnamespacestd;

classbase

{

private:

intID;

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

};

voidmain()

{

baseXptr=newbase2];

ptr->set(30);

ptr=ptr+1;;

ptr->set(50);

basea2]={l,9};

cout?a0].get()<<”."?al].get()?endl:

cout?ptr->get()<<",";

ptr=ptr-l;

cout<<ptr->get()<<endl;

delete]ptr;

}

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

include<iostream>

usingnamespacestd;

voidmain()

{

floata,b;

floatcha(float,float);//函數(shù)cha的原型聲明

a=12.5;

b=6.5;

floatc-cha(a,b);//調(diào)用函數(shù)cha

cout?c<<endl;

}

floatcha(floatx,floaty)

(

floatw;

w=x-y;

returnw:

}

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

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

include<iostream.h>

template<classT>

classSample

(

Tn;

public:

Sample(Ti){n=i;}

intoperator"(Sample&);

template<classT>

intSample<T>::operator==(Sample&s)

if(n-s.n)

return1;

else

return0;

)

voidmain()

{

Sample<int>sl(2),s2(3);.

cout?wsi與s2的數(shù)據(jù)成員"<<(sl=s2〃相等〃:〃不相等")?endl;

Sample<double>s3(2.5),s4(2.5);

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

}

S1與S2的數(shù)據(jù)成員不相等

S3與S4數(shù)據(jù)成員相等

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

include<iostream>

usingnamespacestd;

template<classT>

Tmax(Tml,Tm2)

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

voidmain(){

cout?max(l,7)?"\t"?max(2.0,5.0)?endl;

cout?max('y','b'<<"\t"?max(HA","a")<<endl;

}75

ya

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

include<iostream>

usingnamespacestd;

classA{

public:

intx;

A(){)

A(inta)(x=a;)

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

voidmain(){

Aa(8);

int(A::Xp)(int);

p=A::get;

cout?(a.Xp)(5)?endl;

AXpi=&a;

cout?(pi->XP)(7)?endl;}

1315

考證素材

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

include<iostream>

include<string>

usingnamespacestd;

classBock{

charXtitle;charXauthor;intnumsold;

public:

Book(){}

Book(constcharXstrl,constcharXstr2?constintnum){

intlen=strlen(strl);

title=newcharlen+1];

strcpy(title,strl);

len=strlen(str2);

author=newcharlen+1];

strcpy(author,str2);

numsold=num;)

voidsetbook(constcharXstrl,constcharXstr2,constintnum)

intlen=strlen(strl);

title=newchar1en+1];

strcpy(title,strl);

len=strlen(str2);author=newcharlen+1];

strcpy(author,str2);numsold=num;

考證素材

考證素材

?Book(){

deletetitle;deleteauthor;

}

voidprint(ostream&output){

output?,!書名:"?title<<endl;

output?A,"?author?endl;

output”"月銷售量:"<<numsold<<endl;

書名:數(shù)據(jù)結(jié)構(gòu)

voidmain(){

嚴(yán)蔚敏

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

書名:C++程序設(shè)

objl.print(cout);計(jì)

作業(yè):李春葆

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

obj2.print(cout);

}

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

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

include<iostream.h>

include<math.h>

classpoint{

private:floatx,y;

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

pcint.()fx=O: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ù)的過(guò)程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值類型)

推斷三條邊能構(gòu)成三角形的條件:任

意兩邊之和大于第三邊或任意兩邊之

差小于第3邊。

voidtri::settri(floatxl,floatyl,floatx2,floaty2,floatx3,floaty3)

{x.set(xl,yl);y.set(x2,y2);z.set(x3,y3);}

voidtri::test。{

sl=sqrt((x.getx0-y?getx0)X(x,g

etx0-y?getx())+(x.gety0-y.gety

())X(x,gety()-y,gety()));

s2=sqrt((x.getx()-z,getx())X(x.getx()-z.getx())+(x,gety()-z,gety())X(x,gety()-z,getyQ));

s3=sqrt((y.getx()-z.getx())X(y.getx()-z.getx())+(y.gety()-z.gety())X(y.gety()-z.gety())):

考證素材

考證素材

自學(xué)考試C++程序設(shè)計(jì)試題

課程代碼:04737

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

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

未選均無(wú)分。

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

A..cppB..hC..libD..obj

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

A.cerrB.cinC.coutD.cfile

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

A.define<file.h>B.includefile,hC.definefile.hD.include*file.h*

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

A.無(wú)B.后綴L或eC.前綴零D.前綴Ox

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

A.intXp=&x;B.intp=x;C.intp=x;D.int&p=x;

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

A.publicB.publishC.protectedD.private

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

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

A.10,10B.10,15C.15,10D.15,15

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

A.前部B.中部C.后部D.兩端

9.設(shè)存在函數(shù)intinin(int,int)返回兩參數(shù)中較小值,假設(shè)求15,26,47三者中最小值,以下表達(dá)式中錯(cuò)

誤的選項(xiàng)是(B)

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)成重載的是(C)

A.intprint(int);B.voidprint(char,char);

C.intprint(char);D.voidprint(int?int);

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

人7/2和7.0/2?0B.7/2.0和7/2

/2和7/2/2.0和7.0/2

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

A.減少代碼量,加快訪問(wèn)速度B.減少代碼量,減緩訪問(wèn)速度

C.增加代碼量,減緩訪問(wèn)速度D.增加代碼量,加快訪問(wèn)速度

13.類的私有成員可在哪里被訪問(wèn)(A)

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

C.通過(guò)對(duì)象名在任何位置D.不可訪問(wèn)

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

A.定義成員函數(shù)時(shí)B.定義對(duì)象時(shí)

C.定義數(shù)據(jù)成員時(shí)D.定義友元函數(shù)時(shí)

15.以下關(guān)于析構(gòu)函數(shù)描述正確的選項(xiàng)是(D)

A.可以重載B.函數(shù)體中必須有delete語(yǔ)句

C.返回類型必須是void類型D.不能指定返回類型

16.設(shè)有函數(shù)TSum(Tx,Ty){returnx+y;},其中T為模板類型,則以下語(yǔ)句中對(duì)該函數(shù)錯(cuò)誤的使用是

(D)

A.Sum(l,2);B.Sum(3.0,2.2);C.Sum(,A',,C');D.Sum("A","C");

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

A.includeB.defineC.elseD.pragma

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

A.在創(chuàng)立對(duì)象前不存在B.不能說(shuō)明為虛函數(shù)

C.不能直接訪問(wèn)非靜態(tài)函數(shù)D.不是對(duì)象的成員

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

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

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

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

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

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

A.私有繼承的私有成員B.公有繼承的私有成員

C.私有繼承的愛(ài)護(hù)成員D.公有繼承的公有成員

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

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

考證素材

考證素材

21.假設(shè)使用標(biāo)準(zhǔn)輸出流把整型變量a的值輸出到屏幕上,完成此操作的C++語(yǔ)句是_cout?a;一0

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

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

intb=100;cout?*Hex:"<<hex?b;

程序的輸出結(jié)果是_Hex:64o

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

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

26.寫出聲明一個(gè)復(fù)數(shù)對(duì)象的語(yǔ)句,并使該對(duì)象被初始化為2.2+1.33此聲明語(yǔ)句是_complex<double>

c(2.2,1.3);o

27.假設(shè)有函數(shù)定義為:

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

{returnml+m2+m3;}

在主函數(shù)中有ints=add(l)+add(O,l)+add(O,b2);

則執(zhí)行此語(yǔ)句后s的值為_(kāi)15—。

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

29.在源程序中有宏定義:definePI3.14,則假設(shè)不想使該宏定義影響到程序的其它地方,可以使用_undef

PI刪除該宏定義。(注:配套教材上沒(méi)有)

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

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

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

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

f關(guān)一o

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

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

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

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

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

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

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

cout?noshowpoint?123.0;

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

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

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

41.include<iostream.h>

classf{

private:floatx,y;

考證素材

考證素材

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

floatmax(){return(x<y)x:y;}//求最大值〃error應(yīng)改為floatmax(){return(x>y)x:y;}

};

main(){

fa(1.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;}

}//error缺少分號(hào);

main(){

consttesta(3);

a.set(5);

a.get();

)

43.include<iostream.h>

classpoint{

private:floatx,y;

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

point0{x=0;y=0;}

voidgetx(){cout?x?endl;}

voidgetyO{cout?y?endl;}

);

voidprint(pointa){cout?a.x?endl;"/error:應(yīng)將print函數(shù)說(shuō)明為point類的友元函數(shù)

mainO{

pointa;

a.fl(3.0,5.0);

print(a);

)

44.include<iostream.h>

classf{

private:intx,y;

publicsfl(inta,intb){x=a;y=b;}

考證素材

考證素材

voidprint0{cout?x?y?endl;}

);

mainO{

fa;

a.fl(1.5,1.8);//error:實(shí)際參數(shù)類型與fl函數(shù)的形參類型不一致,應(yīng)修改為一致。

a.print();

}

45.include<iostream.h>

main(){

intx=6;

constintXp=x;//error:應(yīng)改為constintXp=&x;

cout?Xp?endl;

}

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

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

include<iostream>

usingnamespacestd;

voidmain()

(

intXa,Xp;

a=newint(10);

P=_a;

cout?Xp?endl;

___deletep;deletea;)

)

47.include<iostream>

usingnamespacestd;

classbase

(

private:intx;

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

intget(){returnx;}

voidshowbase(){cout?*x="r?x?endl;}

};

classDerived:publicbase

{private:inty;

考證素材

考證素材

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

voidshowderived()

{cout?/rx=*?get0<<",y=*?y?endl;}

};

voidmain()

{

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderived0;

b=d;

b.showbase();

Derivedbl(d);(或Derivedbl(6,7);或basebl(6);或basebl(d);)

bl.showbasc();

baseXpb=&bl;

pb->showbase();

d.showderived();

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::display0

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

include<iostream>

usingnamespacestd;

classB

public:

考證素材

考證素材

virtualvoiddisplay(){cout?*B::display()*?endl;}

};

classC:publicB

(

public:

virtualvoid(或void)display(){cout?*C::display()*?endl;}

};

voidfun(BXp)

(

p->display();

}

voidmain()

(

Bb,Xpb;

Cc;

pb=&b;

fun(pb);

pb=&c;

fun(pb);

}

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

Thisislinel

Thisisline2

Thisisline3

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

include<iostream>

include〈fstream)

usingnamespacestd;

voidmain()

(

fstreamfin,fout;

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

if(!fout.is_open())

return;

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

fout?*Thisisline*?i+l?endl;

考證素材

考證素材

font,close0;

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

if(!fin.is_open())

return;

charstrlOO];

while(!fin.eof()(或等價(jià)答案))

(

fin.getline(str,100);

cout?str?endl;

}

fin.close0;

}

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

include<iostrcam>

usingnamespacestd;

template<classT>

Tfun(Tx)

(

_T_y;

y=xXx-T(5);

returny;

)

voidmainO

(

floata=2;

cout?fun(a)?

}

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

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

include<iostream>

include<string>

usingnamespacestd;

include<fstream>

voidmainO

ofstreammyFilel;

考證素材

考證素材

myFilel.openC*myTextl.txt*);

cout?*EnterthedatainChineseformat(e.g.,202X,May25):*?endl;

stringDate(*202X,January1");

stringYear=Date.substr(0,4);

intk=Date.findC,*);

inti=Date.find(*");

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

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

stringNewDate=Day+**+Month+**+Year;

myFilel?,*originaldate:*?Date?endl;

myFilel?*Converteddate:*?NewDate?endl;

myFilel.close();

)

originaldate;202X,January1

Converteddate:1January202X

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

include<iostream>

usingnamespacestd;

classSimple

(

intx,y;

public:

Simple(){x=y=0;}

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

voidcopy(Simple&s);

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

voidprint0{cout?*x=*?x<<*,y=*?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(l,2),obj2;

obj2.copy(objl);

func(objl,obj2);

objl.print();

obj2.print();

}

x=l,y=2

x=70,y=80

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

includc*iostrcam.h"

intmainO

(

inti=17;

while(i>=10)

if(一i%4==3)continue;

else

cout?*i=*?i—?endl;

)

i=16

i=14

i=12

i=10

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

include<iostream>

usingnamespacestd;

voidmainO

(

intnum=300;

int&ref=num;

cout?ref;

ref=ref-100;

cout?*“<<num;

考證素材

考證素材

num=num-50;

cout?**?ref?endl;

)

300200150

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

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

如下二種根本操作:

(l)push入棧(2)pop出棧,用數(shù)組來(lái)完成

include<iostream>

usingnamespacestd;

template<classT,intsize>

classStack{

Txsizel;

intcurrent;

public:

Stack(){current=0;}

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

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

);

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

參考答案

include<iostream>

usingnamespacestd;

template<classT,intsize>

classStack{

Txsize];

intcurrent;

public:

Stack()(current=0;}

boolPush(Te);

boolPop(T&e);

};

template<classT,intsize>

boolStack<T,size>::Push(Te){〃插入新元素e為新的棧頂元素

if(current==size){〃棧滿

returnfalse;

考證素材

考證素材

)

x++current=e;

returntrue;

}//Push

template<classT,intsize>

boolStack<T,size>::Pop(T&e){〃假設(shè)棧不空,刪除棧頂元素,并用e返回其值,并返回true,否則返回false

if(current=0)returnfalse;

e=xcnrrent—];

returntrue;

}//Pop

〃測(cè)試程序,不是答案的一局部

voidmain(){

Stack<int,5>s;

s.Push(l):s.Push(2);

inte;

if(s.Pop(e))

cout?e?endl;

else

cout?"??铡薄秂ndl;

cout<<"再次出棧,試試看...“<<endl;

if(s.Pop(e))

cout?e?endl;

else

cout<<"棧已空"<<endl;

考證素材

考證素材

全國(guó)自考C++程序設(shè)計(jì)模擬卷子(-)38

一、單項(xiàng)選擇題(本大題共20小題,每題1分,共20分)在每題列出的四個(gè)備選項(xiàng)中只

有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多項(xiàng)選擇或未選均

無(wú)分。

1.編寫C++程序一般需經(jīng)過(guò)的幾個(gè)步驟依次是()

人.編輯、調(diào)試、編譯、連接

B.編輯、編譯、連接、運(yùn)行

C.編譯、調(diào)試、編輯、連接

D.編譯、編輯、連接、運(yùn)行

答案:B解析:(P21)經(jīng)過(guò)編輯、編譯、連接和運(yùn)行四個(gè)步驟。編輯是將C++源程序輸入計(jì)算機(jī)

的過(guò)程,保存文件名為cpp。編譯是使用系統(tǒng)提供的編譯器將源程序cpp生成機(jī)器言語(yǔ)的過(guò)程,

目標(biāo)文件為obj,由于沒(méi)有得到系統(tǒng)分配的絕對(duì)地址,還不能直接運(yùn)行。連接是將目標(biāo)文件obj

轉(zhuǎn)換為可執(zhí)行程序的過(guò)程,結(jié)果為exe。運(yùn)行是執(zhí)行exe,在屏幕上顯示結(jié)果的過(guò)程。

2?決定C++言語(yǔ)中函數(shù)的返回值類型的是()

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

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

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

D.在定義該函數(shù)時(shí)所指定的數(shù)據(jù)類型答案:D解析:(P51)函數(shù)的返回值類型由定義函數(shù)時(shí)的

指定的數(shù)據(jù)類型決定的。A項(xiàng)的表達(dá)式的值要轉(zhuǎn)換成函數(shù)的定義時(shí)的返回類型。

3.下面表達(dá)不正確的選項(xiàng)是0

月.派生類一般都用公有派生

B.對(duì)基類成員的訪問(wèn)必須是無(wú)二義性的

C.賦值兼容規(guī)則也適用于多重繼承的組合

D.基類的公有成員在派生類中仍舊是公有的答案:D解析:(P136)繼承方法有三種:公有、私

有和愛(ài)護(hù)。多繼承中,多個(gè)基類具有同名成員,在它們的子類中訪問(wèn)這些成員,就產(chǎn)生了二

義性,但進(jìn)行訪問(wèn)時(shí),不能存在二義性。賦值兼容規(guī)則是指派生類對(duì)象可以當(dāng)作基類對(duì)象使

用,只要存在繼承關(guān)系,所以單繼承或多繼承都適用。基類中的公有成員采納私有繼承時(shí),

在派生類中變成了私有成員,所以D項(xiàng)錯(cuò)誤。

考證素材

考證素材

4.所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個(gè)實(shí)體,這實(shí)體

也就是()

月?類

B.對(duì)象

C.函數(shù)體

D.數(shù)據(jù)塊

答案:A解析:(P39)類即數(shù)據(jù)和操作的組合體,數(shù)據(jù)是類的靜態(tài)特征,操作是類具有

的動(dòng)作。

5.在公有派生類的成員函數(shù)不能直接訪問(wèn)基類中繼承來(lái)的某個(gè)成員,則該成員肯定是基類中的

0

4.私有成員

B.公有成員

C.愛(ài)護(hù)成員

D.愛(ài)護(hù)成員或私有成員

答案:A解析:(P133)在派生類中基類的愛(ài)護(hù)或者基類公有都可以直接訪問(wèn),基類的私有成員只

能是基類的成員函數(shù)來(lái)訪問(wèn)。所以選擇A項(xiàng)。

6.對(duì)基類和派生類的關(guān)系描述中,錯(cuò)誤的選項(xiàng)是0

月.派生類是基類的具體化

B.基類繼承了派生類的屬性

C,派生類是基類定義的連續(xù)

。.派生類是基類的特別化答案:B解析:(P129)派生類的成員一個(gè)是來(lái)自基類,一個(gè)來(lái)自本

身,所以派生類是基類的擴(kuò)展,也是基類的具體化和特別化,派生類是對(duì)基類擴(kuò)展。B項(xiàng)基

類不能繼承派生類成員,所以錯(cuò)誤。

7.關(guān)于this指針使用說(shuō)法正確的選項(xiàng)是()

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

B.保證基類私有成員在子類中可以被訪問(wèn)。

C.保證基類愛(ài)護(hù)成員在子類中可以被訪問(wèn)。

D.保證基類公有成員在子類中可以被訪問(wèn)。

答案:A解析:(P86)this指針是隱藏的,可以使用該指針來(lái)訪問(wèn)調(diào)用芯象中的數(shù)據(jù)?;惖某?/p>

員在派生類中能否訪問(wèn),與繼承方法有關(guān),與this沒(méi)有關(guān)系。所以選擇A項(xiàng)。

8.所謂多態(tài)性是指0

月.不同的對(duì)象調(diào)用不同名稱的函數(shù)

B.不同的對(duì)象調(diào)用相同名稱的函數(shù)

C.一個(gè)對(duì)象調(diào)用不同名稱的函數(shù)

考證素材

考證素材

D.一個(gè)對(duì)象調(diào)用不同名稱的對(duì)象答案:B解析:(P167)多態(tài)性有兩種靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)

性,靜態(tài)多態(tài)性是指調(diào)用同名函數(shù),由于參數(shù)的不同調(diào)用不同的同名函數(shù);動(dòng)態(tài)多態(tài)性是指

不同對(duì)象調(diào)用同名函數(shù)時(shí),由于對(duì)象不同調(diào)用不同的同名函數(shù)。多態(tài)性肯定具有相同的函

數(shù)名,所以選擇B項(xiàng)。

9.一個(gè)函數(shù)功能不太復(fù)雜,但要求被一再調(diào)用,則應(yīng)把它定義為0

內(nèi)聯(lián)函數(shù)

B.重載函數(shù)

C.遞歸函數(shù)

D.嵌套函數(shù)

答案:A解析:(P59)內(nèi)聯(lián)函數(shù)特征代碼少,一再調(diào)用,執(zhí)行效率高。重載函數(shù)解決統(tǒng)一接口的問(wèn)

題;遞歸是子程序調(diào)用,程序調(diào)用要消耗很多空間和時(shí)間,循環(huán)/迭代都比遞歸有效率得多,遞歸只

是從形式上,邏輯比擬簡(jiǎn)潔。嵌套函數(shù)即反復(fù)調(diào)用,速度較慢。所以選擇A項(xiàng)。

10.下面函數(shù)模板定義中不正確的選項(xiàng)是0

A.A

B.B

C.C

D.D

答案:A解析:(P147)A項(xiàng)中F是一個(gè)返回Q類型的值,而return中用返回類型作為返回值錯(cuò)

誤。所以選擇

A項(xiàng)。

11.假設(shè)ClassY:publicX,即類Y是類X的派生類,則說(shuō)明一個(gè)Y類的對(duì)象時(shí)和刪除Y類對(duì)象

時(shí)

,調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的次序分別為0

A.X,Y;Y,X

B.X,Y;X,Y

C.Y,X;X,Y

D.Y,X;Y,X

答案:A解析:(P130)派生類構(gòu)造函數(shù)必須對(duì)這三類成員進(jìn)行初始化,其執(zhí)行順序:調(diào)用基類構(gòu)

造函數(shù)

;調(diào)用子對(duì)象的構(gòu)造函數(shù);派生類的構(gòu)造函數(shù)體。析構(gòu)函數(shù)在執(zhí)行過(guò)程中也要對(duì)基類和成員對(duì)象

進(jìn)行操作,但它的執(zhí)行過(guò)程與構(gòu)造函數(shù)正好相反,即對(duì)派生類新增一般成員進(jìn)行清理;調(diào)用成員

對(duì)象析構(gòu)函數(shù),對(duì)派生類新增的成員對(duì)象進(jìn)行清理;調(diào)用基類析構(gòu)函數(shù),對(duì)基類進(jìn)行清理,所以

選擇A項(xiàng)。

12.適宜采納inlino定義函數(shù)情況是:)

月?函數(shù)體含有循環(huán)語(yǔ)句

考證

溫馨提示

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