C++練習(xí)題(摘自自學(xué)考試)_第1頁
C++練習(xí)題(摘自自學(xué)考試)_第2頁
C++練習(xí)題(摘自自學(xué)考試)_第3頁
C++練習(xí)題(摘自自學(xué)考試)_第4頁
C++練習(xí)題(摘自自學(xué)考試)_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++程序設(shè)計練習(xí)題1

一、單項選擇題

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

A.C++兼容CB.C++部分兼容C

C.C++不兼容CD.C兼容C++

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

A.cerrB.cin

C.coutD.cfile

3.對使用關(guān)鍵字new所開辟的動態(tài)存儲空間,釋放時必須使用()

A.freeB.create

C.deleteD.realse

4.如沒有使用成員訪問權(quán)限關(guān)鍵字定義類的數(shù)據(jù)成員,則默認為()

A.privateB.public

C.protectedD.friend

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

A.形參是實參的備份B.實參是形參的備份

C.形參和實參是同一對象D.形參和實參無聯(lián)系

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

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

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

7.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達式不正確的是()

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.下列哪個類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)()

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

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

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

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

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

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

A,屬于全局變量B.只屬于該類

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

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

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

A.通過子類的對象訪問B.本類及子類的成員函數(shù)中

C.通過該類對象訪問D.本類的成員函數(shù)中

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

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

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

C.這個類不需要構(gòu)造函數(shù)D.該類不能通過編譯

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

A.0個B.1個

C.至少一個D.0個或多個

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

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

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

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

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

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

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

B.類的對象只能訪問該類的公有成員

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

D.一個類可以將另一個類的對象作為成員

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

A.#includeB.#define

C.#ifD.#else

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

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

C.兩者并行執(zhí)行D.不能確定

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

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

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

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

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

C.友元不是函數(shù)D.友元不能訪問本類私有成員

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

A.public和privateB.public和protected

C.protected和privateD.僅protected

二、填空題

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

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

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

29.__#inc加de_指令指示編譯器將一個源文件嵌入到帶該指令的源文件之中。

30.設(shè)類A有成員函數(shù)voidFun(void);若要定義一個指向類成員函數(shù)的指針變量pafn來指向Fun,

該指針變量的聲明語句是:_void(A::*pafn)(void);_。

31.設(shè)在程序中使用如下語句申請了一個對象數(shù)組:Point*ptr=newPoinU2];

則在需要釋放ptr指向的動態(tài)數(shù)組對象時,所使用的語句是—delete[]ptr;—。

32.在保護派生中,基類權(quán)限為Private的成員在派生類中—不可訪問

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

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

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

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

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

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

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

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

三、改錯題(下面的類定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并給出修改意見)

41.#include<iostream.h>

voidmain(){

intx=5,y=6;

constint*p=&x;

〃修改意見:去掉本句或去掉上句中的const

cout?*p?endl;

}

42.#include<iostream.h>

classf{

private:intxfy;

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

print(){cout?x??,?y?endl;}

);

voidmain(){

fa;

〃修改意見:本句改為或修改成員函數(shù)成的定義

a.print();

44.#include<iostream.h>

classpoint{

private:floatx;

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

voidf(){x=0;}

friendfloatmax(point&a,point&b);

floatmax(point&a,point&b)

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

voidmain(){

pointa,b;

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

coutvva.mac?b);〃修改為:coutvvmax(a、b);

)

四、完成程序題

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

classpoint

(

private:intm,n;

public:

point(intyint);

point(point&);

);

point::point(inta,intb)

{

m=a;n=b:

}

point::point(point&t)

(

m=t.m;n=t.n;

}

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

#include<lostream>

usingnamespacestd;

gonstdoublgpi=3.l4159;

voidmain()

doubler;

cout?"r=";

cin>>r;

doublel=2.0*pi*r;

doubles=pi*r*r;

cout?H\nThelongis:"?l?endl;

cout?uTheareais:”?s?endl;

)

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

#include<iostream>

usingnamespacestd;

classcomplex

(

public:

intreal;

intimag;

complex(intr=0,inti=0)

(

real=r;

imag=i;

)

);

complexQDerator+(cumplex&a,complex&b)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

returncomplex(r,i);

)

voidmain()

{

complexx(L2),y(3,4),z;

z=x+y;

cout?z.real?v+“?z.imag?ui"?endl;

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

1,9

50,30

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

源程序如下:

#include<iostream>

usingnamespacestd;

classbase

(

private:

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

};

voidmain()

{base*ptr=newbase[2];

ptr->set(30);

ptr=ptr+1;

ptr->set(50);

basea[2]={l,9};

cout?a[0].get()?,f,"?a[l].get()?endl;

cout?ptr->get()?/z,,f;

ptr=ptr-l;

coutvv>get()vvendl;

delete!]ptr;

)

五、程序分析題

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;

elsereturn0;

)

voidmain()

{

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

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

Sample<long>s3(25),s4(25);

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

)

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

#include<iostream>

usingnamespacestd;

template<classT>

Tmax(TmbTm2)

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

voidmain(){

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

cout?max('y'/br)?,f\t"?max(7A","a7)?endl;

)

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

#include<iostream>

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)?endl;

A*pi=&a;

cout?(pi->*P)(7)?endl;

)

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

include<iostream>

#include<string>

usingnamespacestd;

classBook{

char*title;

char*author;

intnumsold;

public:

Book(){}

Book(constchar*strl,constchar*str2,constintnum)

(

intlen=strlen(strl);

title=newchar[len+l];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+l];

strcpy(author,str2);

numsold=num;

)

voidsetbook(constchar*strLconstchar*str2,constintnum)

(

intlen=strlen(strl);

title=newchar[len+l];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+l];

strcpy(author,str2);

numsold=num;

)

?Book(){

deletetitle;

deleteauthor;

)

voidprint(ostream&output){

output?H書名:"?title?endl;

output?H作者:"?author?endl;

output?,f月銷售量:"vvnumsoldvvendl;

)

);

voidmain(){

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

objl.print(cout);

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

obj2.print(cout);

}

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

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

#include<iostream.h>

#include<math.h>

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(....);//用于輸入三個頂點坐標(biāo)

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

};

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

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

C++程序設(shè)計練習(xí)題2

一、單項選擇題

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

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

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

2.函數(shù)調(diào)用func((expl,exp2),(exp3,exp4,exp5))中所含實參的個數(shù)為()

A.1B.2

C.4D.5

3.假定AB為一個類,則執(zhí)行“ABa(2),b[3],*p[4]語句時共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為()

A.3B.4

C.5D.9

4.假定AB為一個類,px為指向該類的一個含有n個對象的動態(tài)數(shù)組的指針,則執(zhí)行“delete口px;”語句時共調(diào)

用該類析構(gòu)函數(shù)的次數(shù)為()

A.0B.1

C.nD.n+1

5.如果表達式++a中的“++”是作為成員函數(shù)重載的運算符,若采用運算符函數(shù)調(diào)用格式,則可表示為()

A.a.operator++(l)B.operator++(a)

C.operator++(a,l)D.a.operator++()

6.繼承機制的作用是()

A.信息隱藏B.數(shù)據(jù)封裝

C.定義新類D.數(shù)據(jù)抽象

7.以下哪個基類中的成員函數(shù)表示純虛函數(shù)?()

A.virtualvoidvf(int);B.voidvf(int)=0;

C.virtualvoidvf()=0;D.virtualvoidyf(int){}

8.假定一個類的構(gòu)造函數(shù)為"A(intaa,intbb){a=aa;b=aa*bb;}”,則執(zhí)行"Ax(4,5);“語句后,x.a和x.b的值分

別為()

A.4和5B.5和4

C.4和20D.20和5

9.-■個類的靜態(tài)數(shù)據(jù)成員所表示屬性()

A.是類或?qū)ο蟮膶傩訠.只是對象的屬性

C.只是類的屬性D.是類和友元的屬性

10.一個C++源程序文件的擴展名為()

A..hB.x

C..cppD..cp

二、填空題

11.重載“<<”操作符時,應(yīng)聲明為一普通__函數(shù)。

12.在C++中,編譯指令都是以#(符號)開始。

14.C++支持兩種多態(tài)性,編譯時的多態(tài)性和—運行一時的多態(tài)性。

15.假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(intaa=0):a(aa){}",則定義該類的對象時,可以有一2__種不

同的定義格式。

16.若p指向X,則__*p與x的表示是等價的。

18.當(dāng)函數(shù)參數(shù)表用void一—保留字表示時,則表示該參數(shù)表為空。

19.每個對象都是所屬類的一個—實例一。

20.作為類的成員函數(shù)重載一個運算符時,參數(shù)表中只有一個參數(shù),說明該運算符有2個操作數(shù)。

-本套試題共分6頁,當(dāng)前頁是第1頁-

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

三、改錯題

21.假定要求下面程序輸出“d=800,f=60”,在第5-20行中存在著三條語句錯誤,請指出錯誤語句的行號并改正。

#include<iostream.h>

classA{〃1行

inta[10];intn;〃2行

public:〃3行

A(intaa[],intnn):n(nn){〃4行

for(inti=0;i<n;i++)aa[i]=a[i];〃5行修改為:for(inti=0;i<n;i++)a[i]=aa[i];

)〃6行

intGet(inti){returna[i];}〃7行

intSumA(intn);〃8行

);〃9行

intA::SumA(intn){〃10行

ints=0;〃U行

for(intj=0;j<n;j++)s+=a[j];〃12行

returns;〃13行

)〃14行

voidmain(){〃15行

inta[]={2,5,8,10,15,20};〃16行

Ax(a,6);〃17行

intd=l;〃18行

for(inti=0;i<4;i++)d*=x.a[i];〃19行修改為:for(inti=0;i<4;i++)d*=x.Get(i);

intf=SumA(6);//20行修改為:intf=x.SumA(6);

cout?nd=n?d<<?;//21行

cout?nf=H?f?endl;//22行

)〃23行

22.下面程序段第4到7行中存在著三條語句的語法錯誤,請指出錯誤語句的行號并改正。

classA{〃1行

inta,b;〃2行

constintc;〃3行

public〃4行

A():c(0);a(0);b(0){}〃5行今A():c(0),a(0),b(0){}

A(intaa,intbb)c(aa+bb);{a=aa;b=bb;]I〃6行■>A(intaa,intbb):c(aa+bb){a=aa;b=bb;}

);//7行

Aa,b(l,2);〃8行

A*x=&a,&y=b;〃9行

A*z=newA,w[10];//10行+A*z=newA;

四、程序填空題(請按提示要求完成以下程序段的填空)

23.在下面一段類定義中,Derived類公有繼承了基類Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。

classBase

(

private:intmeml,mem2;〃基類的數(shù)據(jù)成員

public:Base(intml,intm2){meml=ml;mem2=m2;}

voidoutput(){cout?meml?,'?mem2?,';}

〃…

-本套試題共分6頁,當(dāng)前頁是第2頁-

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

classDerived:publicBase

(

private:

intmem3;〃派生類本身的數(shù)據(jù)成員

public:

〃構(gòu)造函數(shù),由ml和m2分別初始化meml和mem2,由m3初始化mem3

Derived(intml,intm2,intm3);

〃輸出meml,mem2和mem3數(shù)據(jù)成員的值

voidoutput(){

(1);cout?mem3?endl;

}

〃…

);

Derived::Derived(intml,intm2,intm3):⑵{⑶;}

需要補充的語句為:

(1)Base::output()(2)Base(ml,m2)(3)meni3=m3;

24.classA{

inta,b;

public:

(4)〃定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認值為0,

{a=aa;b=bb;}〃在函數(shù)體中用aa初始化a,用bb初始化b

);

main(){

A*pl,*p2;

(5);〃調(diào)用無參構(gòu)造函數(shù)生成由pl指向的動態(tài)對象

⑹;〃調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動態(tài)對象,

〃使a和b成員分別被初始化為4和5

)

需要補充的語句為:

(4)A(intaa=0,intbb=O)(5)pl=newA;(6)p2=newA(4,5);

25.已知一個類的定義如下:(假設(shè)類的成員函數(shù)已實現(xiàn))

#include<iostream.h>

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);〃用數(shù)組aa初始化數(shù)據(jù)成員a,

〃用nn初始化數(shù)據(jù)成員n

intMaxA();〃從數(shù)組a中前n個元素中查找最大值

voidSortA();〃采用選擇排序的方法對數(shù)組a中前n個元素

〃進行從小到大排序

voidInsertAO;//采用插入排序的方法對數(shù)組a中前n個元素進行從小到大排序

voidPrintA();〃依次輸出數(shù)組a中的前n個元素

〃最后輸出一個換行

);

使用該類的主函數(shù)如下:

voidmain()

-本套試題共分6頁,當(dāng)前頁是第3頁-

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

inta[10]={23,78,46,55,62,76,90*,38,42};

AAx;

JZL;

intm=(8);

J91;

cout?m?endl;

)

該程序運行結(jié)果為:

237846556276

78

需要補充的語句為:

(7)x.Seta(a,6);(8)x.MaxAO(9)x.PrintAO

五、程序分析題(閱讀以下程序,寫出其運行結(jié)果)

26.當(dāng)從鍵盤上輸入9.98時,寫出下面程序的執(zhí)行結(jié)果。

#include<iostreain.h>

voidmain()

{

inta,b;

charch;

cin?a?ch?b;//從鍵盤上輸入9.98

cout?a?endl?b?endl;

)

27.#include<iostream.h>

classaa{

public:

virtualintfunc(){return0;}

);

classtest:publicaa{

public:

intfunc(){return58;}

};

voidmain(){

testd;

aa&b=d;

cout?b.func()?endl;

cout?b.aa::func()?endl;

)

28.#include<iostream.h>

classmyclass{

public:

intnumber;

voidset(inti);

);

-本套試題共分6頁,當(dāng)前頁是第4頁-

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

intnumber=8;

voidmyclass::set(inti)

(

number=i;

)

voidmain()

(

myclassmyl;

intnumber=20;

myl.set(6);

cout?myl.number?endl;

myl.set(number);

cout?myl.number?endl;

myl.set(::number);

cout?myl.number?endl;

)

29.#include<iostream.h>

classa

{

public:virtualvoidprint(){cout?nthisisclassaprinting.M?endl;};

};

classb:publica

(

public:voidprint(){};

);

classc:publicb

(

public:voidprint(){cout?”thisisclasscprinting.H?endl;}

);

voidshow(a&aa)

(

aa.printO;

)

voidmain()

(

aa;bb;cc;

show(a);

show(b);

shovv(c);

)

30.#include<iostream.h>

classDate

{

intYear,Month,Day;

public:

Date(inty=2001,intm=l,intd=l){Year=y;Month=m;Day=d;}

voidPrintDate(){cout?Year?*7**?Month?*7**?Day?endl;}

-本套試題共分6頁,當(dāng)前頁是第5頁-

摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題

classTime

{

intHoure,Minutes,Seconds;

public:

Time(inth=5,intm=30,ints=0){Houre=h;Minutes=m;Seconds=s;}

voidPrintTime(){cout?Houre?H:,,?Minutes?H:,,?Seconds?endl;}

);

classDate_Time:publicDate,publicTime

{

public:

Date_Time(){};

Date_Time(inty,intmo,intd,inth=O,intmi=09ints=0):

Date(y,mo,d)9Time(h,mi,s){}

voidPrintDate_Time(){PrintDate();PrintTime();}

);

voidmain()

(

Date_Timea,b(2002,10,l,6,20,0),《2003,3,8,6,7);

a.PrintDate_Time();

b.PrintDate_Time();

c.PrintDate_Time();

)

31.#include<iostream.h>

voidf2(int&x,int&y)

(

intz=x;x=y;y=z;

)

voidmain()

(

intx=10,y=26;

cout?nx,y=n?x?H,H?y?endl;

f2(x,y);

cout?nx,y=n<<x?H,M?y?endl;

x++;y-;

f2(y,x);

cout?Mx,y=M?x?H,M?y?endl;

)

-本套試題共分6頁,當(dāng)前頁是第6頁-

2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題

C++程序設(shè)計練習(xí)題3

一、單項選擇題

1.以下說法中正確的是()

A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行

B.C++程序總是從main函數(shù)開始執(zhí)行

C.C++函數(shù)必須有返回值,否則不能使用函數(shù)

D.C++程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個程序文件中

2.以下關(guān)于函數(shù)模板敘述正確的是()

A.函數(shù)模板也是一個具體類型的函數(shù)

B.函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)是同一個概念

C.通過使用不同的類型參數(shù),函數(shù)模板可以生成不同類型的函數(shù)

D.用函數(shù)模板定義的函數(shù)沒有類型

3.在重載一個運算符時,其參數(shù)表中沒有任何參數(shù),這表明該運算符是()

A.作為友元函數(shù)重載的1元運算符

B.作為成員函數(shù)重載的1元運算符

C.作為友元函數(shù)重載的2元運算符

D.作為成員函數(shù)重載的2元運算符

4.構(gòu)造函數(shù)不具備的特征是()

A.構(gòu)造函數(shù)的函數(shù)名與類名相同

B.構(gòu)造函數(shù)可以重載

C.構(gòu)造函數(shù)可以設(shè)置默認參數(shù)

D.構(gòu)造函數(shù)必須指定類型說明

5.在C++中,封裝是借助什么達到的()

A.結(jié)構(gòu)B.數(shù)組

C.類D.函數(shù)

6.在哪種情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)?()

A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句

C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用

7.在關(guān)鍵字public后面定義的成員為類的()

A.私有成員B.公用成員

C保護成員D.任何成員

8.以下哪個基類中的成員函數(shù)表示純虛函數(shù)?()

A.virtualvoidtt()=O;B.voidtt(int)=0;

C.virtualvoidtt(int);D.virtualvoidtt(int){)

9.假定AA是一個類,"AA*abc()const;”是該類中一個成員函數(shù)的原型,若該函數(shù)返回this值當(dāng)用x.abc()

調(diào)用該成員函數(shù)后,x的值()

A.已經(jīng)被改變B.可能被改變

C.不變D.受到函數(shù)調(diào)用的影響

10.C++對C語言作了很多改進,即從面向過程變成為面向?qū)ο蟮闹饕蚴牵ǎ?/p>

A.增加了一些新的運算符

B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)

C.規(guī)定函數(shù)說明符必須用原型

D.引進了類和對象的概念

-本套試題共分8頁,當(dāng)前頁是第1頁-

2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題

二、填空題

11.如果一個派生類只有一個唯一的基類,則這樣的繼承關(guān)系稱為__單繼承

12.C++支持兩種多態(tài)性:__編譯__時的多態(tài)性和運行時的多態(tài)性。

14.所有模板都以template關(guān)鍵字和一個一類型參數(shù)__表開頭。

15.若一個函數(shù)的定義處于調(diào)用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的一聲明—語句。

16.類型轉(zhuǎn)換函數(shù)沒有返回值類型,而且參數(shù)表為一空___。

17.C++提供的預(yù)處理命令有嵌入指令,條件編譯指令和一宏定義指令

18.對象將其大部分實現(xiàn)細節(jié)隱藏起來,這種機制稱為__信息隱蔽―o

19.定義類動態(tài)對象數(shù)組時,其元素只能靠自動調(diào)用該類的一構(gòu)造函數(shù)——來進行初始化。

20.在函數(shù)體之前加—const_關(guān)鍵字可以防止函數(shù)誤操作改變數(shù)據(jù)成員的值。

三、改錯題(本大題共2小題,每小題6分,共12分)

21.下面是分數(shù)類fract的定義及測試主程序,在類定義及其友元函數(shù)定義中1到6行中有三處錯誤,更正

錯誤后程序應(yīng)顯示41/28,請指出錯誤所在行的行號并給出改正意見。

classfract{

intden;〃分子

intnum;〃分母

public〃1行

fract(intd=0,intn=l):den(d),num(n){)〃2行

friendfract&operator+=(fract,fract&);〃3行

voidshow(){cout?den?,/'?num;}〃4行

);〃5行

friendfract&operator+=(fractfl,fractf2)〃6行

{〃7行

fl.den=fl.den*f2.num+fl.num*f2.den;〃8行

fl.num*=f2.num;〃9行

returnfl;〃10行

voidmain(){

fractfr(3,4);

fr+=fract(5,7);

fnshow();

}

錯誤行的行號為1、3和6o

分別改正為_public:_、__friendfract&operator+=(fract&,fract&);___

和____friendfract&operator+=(fract&fl,fract&f2);____。

22.下面程序段第13-17行中存在著三條語句錯誤,請指出錯誤語句的行號并說明原因

classA{〃1行

inta;〃2行

public:〃3行

A(intaa=0):a(aa){}〃4行

};〃5行

classB{〃6行

inta,b;/〃行

constintc;〃8行

-本套試題共分8頁,當(dāng)前頁是第2頁-

2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題

Ad;〃9行

public://10行

B():c(0){a=b=0;}//ll行

B(intaa,intbb):d(aa+bb){//12行

a=aa;b=bb;c=aa-bb;//13行應(yīng)去掉c=aa-bb;

}//14行

}//15行應(yīng)加上分號(;)

Ba,b(l,2);〃16行

Bx=a,y(b),z(l,2,3);〃17行z的定義可以是z(l,2);

錯誤行的行號為_13____、_____15_____和______17_____o

錯誤原因分別為一常成員變量只能用初始化表的方式初始化_、_沒有分號—和—Z定義錯誤____O

四、程序填空題(請按提示要求完成以下程序段的填空)

23.在下面一段類定義中,Derived類是由直接基類Base1和Base2所派生的,Derived類包含有兩個間

接基類BaseBase,在初始化函數(shù)Init中,需要把xl和x2的值分別賦給屬于基類Basel的x成員和屬于

基類Basel的x成員。

classBaseBase{

protected:

intx;

public:

BaseBase(){x=1;}

);

classBasel:publicBaseBase{

public:

Basel(){}

);

classBase2:publicBaseBase{

public:

Base2(){}

);

classDerived:_⑴一

(

public:

Derived(){}

voidInit(intxl,intx2){

__(2)—;

__(3)—;

)

voidoutput(){cout?Basel::x?^?Base2::x?endl;}

};

需要補充的語句為:

(1)publicBasel,publicBasel(2)Basel::x=xl;(3)Basel::x=x2;

24.#include<iostream.h>

#include<stdlib.h>

classA{

-本套試題共分8頁,當(dāng)前頁是第3頁-

2(X)7年10月自考面向?qū)ο蟪绦蛟O(shè)計試題

int*a;intn;

intMaxLen;

public:

A():a(0)9n(0)9MaxLen(O){)

A(int*aa,intnn9intMM){

n=nn;

MaxLen=MM;

if(n>MaxLen)exit(l);

a=newint[MaxLen];

(4);

溫馨提示

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

評論

0/150

提交評論