




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+程序設(shè)計復(fù)習(xí)題一、 選擇題1 所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個實體,這實體也就是( ) A、類 B、對象 C、函數(shù)體 D、數(shù)據(jù)塊2面向?qū)ο蟮某绦蛟O(shè)計語言必須具備的關(guān)鍵要素是( ) A、抽象和封裝 B、抽象和多態(tài)性 C、抽象、封裝、繼承和多態(tài)性 D、抽象、封裝和繼承性3類的構(gòu)造函數(shù)被自動調(diào)用執(zhí)行的情況是在定義該類的( ) A、成員函數(shù)時 B、數(shù)據(jù)成員時 C、對象時 D、友元函數(shù)時4設(shè)有函數(shù)模板 template Q Sum(Qx,Qy) return(x)+(y); 則下列語句中對該函數(shù)模板錯誤的使用是( ) A、Sum(10,2); B、Sum(5.0,6
2、.7); C、Sum(15.2f,16.0f); D、Sum(AB,CD);5已知類A是類B的友元,類B是類C的友元,則( ) A、類A一定是類C的友元 B、類C一定是類A的友元 C、類C的成員函數(shù)可以訪問類B的對象的任何成員 D、類A的成員函數(shù)可以訪問類B的對象的任何成員6靜態(tài)成員函數(shù)沒有( ) A、返回值 B、this指針 C、指針參數(shù) D、返回類型7當(dāng)一個類的某個函數(shù)被說明為virtual時,該函數(shù)在該類的所有派生類中( ) A、都是虛函數(shù) B、只有被重新說明時才是虛函數(shù) C、只有被重新說明為virtual時才是虛函數(shù) D、都不是虛函數(shù)8下面敘述不正確的是( ) A、派生類一般都用公有派
3、生 B、對基類成員的訪問必須是無二義性的 C、賦值兼容規(guī)則也適用于多重繼承的組合 D、基類的公有成員在派生類中仍然是公有的9在C+中實現(xiàn)封裝是借助于( ) A、枚舉 B、類 C、數(shù)組 D、函數(shù)10所有在函數(shù)中定義的變量,都是( ) A、全局變量 B、局部變量 C、靜態(tài)變量 D、寄存器變量11下列特性中,C與C+共有的是( ) A、繼承 B、封裝 C、多態(tài)性 D、函數(shù)定義不能嵌套12通常情況下,函數(shù)模板中的類型參數(shù)個數(shù)不能是( ) A、0 B、2 C、4 D、313在下列成對的表達(dá)式中,運算符“+”的意義不相同的一對是( ) A、5.0+2.0和5.0+2 B、5.0+2.0和5+2.0 C、5
4、.0+2.0和5+2 D、5+2.0和5.0+214類的指針成員的初始化是通過函數(shù)完成的,這個函數(shù)通常是( ) A、析構(gòu)函數(shù) B、構(gòu)造函數(shù) C、其它成員函數(shù) D、友元函數(shù)15要禁止修改指針p本身,又要禁止修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為( ) A、const char *p=“ABCD”; B、char const *p=“ABCD”; C、char *const p=“ABCD”; D、const char * const p=“ABCD”;16如果表達(dá)式+i*k中的“+”和“*”都是重載的友元運算符,則采用運算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為( ) A、operator*(i.op
5、erator+(),k) B、operator*(operator+(i),k) C、i.operator+().operator*(k) D、k.operator*(operator+(i)17下列說法中正確的是( ) A、類定義中只能說明函數(shù)成員的函數(shù)頭,不能定義函數(shù)體 B、類中的函數(shù)成員可以在類體中定義,也可以在類體之外定義C、類中的函數(shù)成員在類體之外定義時必須要與類聲明在同一文件中 D、在類體之外定義的函數(shù)成員不能操作該類的私有數(shù)據(jù)成員18若派生類的成員函數(shù)不能直接訪問基類中繼承來的某個成員,則該成員一定是基類中的( ) A、私有成員 B、公有成員 C、保護(hù)成員 D、保護(hù)成員或私有成員
6、19對基類和派生類的關(guān)系描述中,錯誤的是( ) A、派生類是基類的具體化 B、基類繼承了派生類的屬性 C、派生類是基類定義的延續(xù) D、派生類是基類的特殊化20類B是類A的公有派生類,類A和類B中都定義了虛函數(shù)func(),p是一個指向類A對象的指針,則p-A:func()將( ) A、調(diào)用類A中的函數(shù)func() B、調(diào)用類B中的函數(shù)func() C、根據(jù)p所指的對象類型而確定調(diào)用類A中或類B中的函數(shù)func() D、既調(diào)用類A中函數(shù),也調(diào)用類B中的函數(shù)答案:1B 2C 3C 4D 5D 6B 7A 8D 9B 10B11D 12A 13C 14B 15D 16B 17B 18A 19B 20
7、A二、 填空題1假定用戶沒有給一個名為AB的類定義析構(gòu)函數(shù),則系統(tǒng)自動給出的缺省析構(gòu)函數(shù)定義為_。2模板定義中標(biāo)識類型的參數(shù)必須用關(guān)鍵字_修飾。3表達(dá)式counthex還可表示為_。4通過C+語言中的_機(jī)制,可以從現(xiàn)存類中構(gòu)建其子類。5要在調(diào)用虛函數(shù)的時候強(qiáng)制進(jìn)行靜態(tài)聯(lián)編,可以通過在調(diào)用中對虛函數(shù)加_實現(xiàn)。6封裝要求一個對象應(yīng)具備明確的功能,并具有_以便和其它對象相互作用。7在刪除一個動態(tài)對象時,將自動調(diào)用該動態(tài)對象所屬類的_函數(shù)。8靜態(tài)成員函數(shù)、友元函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是_。9在下面的類定義中,私有成員有_。 class Location int X,Y; prote
8、cted: int zeroX,zerxY; int SetZero(intzeroX, intzeroY); private: int length,height; public: void init(int initX,int initY); int GetX(); int GetY(); ;10類的私有成員只能被它的成員函數(shù)和_訪問。11在用C進(jìn)行程序設(shè)計時,最好用_代替malloc。12函數(shù)模板中緊隨template之后尖括號內(nèi)的類型參數(shù)都要冠以保留字_。13在ios類中定義的用于控制輸入輸出格式的枚舉常量中,用于代表十進(jìn)制、八進(jìn)制和十六進(jìn)制的3個枚舉常量是dec、oct和_。14如果
9、重載了運算符,則相應(yīng)的運算符函數(shù)名是_。15由static修飾的數(shù)據(jù)成員為該類的所有對象_。16設(shè)函數(shù)max是由函數(shù)模板實現(xiàn)的,并且max(3.5,5)和max(10,5)都是正確的函數(shù)調(diào)用,則該模板具有_個類型參數(shù)。17在單繼承和多繼承方式中,面向?qū)ο蟮某绦蛟O(shè)計應(yīng)盡量使用_繼承。18語句序列 ifstream datafile; datafile.open(“data.dat”); 的功能可用一個語句實現(xiàn),這個語句是_。19將關(guān)鍵字const寫在函數(shù)頭之后,函數(shù)體之前,說明該函數(shù)是一個const成員函數(shù)。此時const不是指定函數(shù)的返回值,而是修飾_指針。20一個抽象類的派生類可以實例化的必
10、要條件是實現(xiàn)了所有的_。21在C+中,虛函數(shù)幫助實現(xiàn)了類的_性。22通過C+語言中類的_,可以擴(kuò)充和完善已有類以適應(yīng)新的需求。23為了在對象生存期結(jié)束時釋放其指針成員所指向的動態(tài)存儲空間,通常需要為該類定義_。24在聯(lián)合中,所有數(shù)據(jù)成員具有_的位置,任一時刻只有_個數(shù)據(jù)成員有效。25.在已經(jīng)定義了整型指針ip后,為了得到一個包括10個整數(shù)的數(shù)組并由ip所指向,應(yīng)使用語句_。26為了實現(xiàn)多態(tài)性,派生類需重新定義基類中的_。27編譯時的多態(tài)性通過_函數(shù)實現(xiàn)。28在派生類中實現(xiàn)基類成員的初始化,需要由派生類的構(gòu)造函數(shù)調(diào)用_來完成。29在C中,訪問指針?biāo)赶虻膶ο蟮某蓡T使用運算符_。30重載函數(shù)在參數(shù)
11、類型或參數(shù)個數(shù)上不同,但_相同。答案:1 AB();2 class(或typcname)3cout,sctf(ios:hex,ios:basefield)(或coutsetf(ios:hex),或cout;30函數(shù)名三、 改錯題1指出下面程序中的錯誤,并說明出錯原因。 #include class ConstFun public: void ConstFun() const int f5()constreturn 5; int Obj() return 45; int val; int f8(); ; int ConstFun:f8()return val; void main() const
12、 ConstFun s; int i=s.f5();coutValue=iendl; 2指出下面程序中的錯誤,并說明錯誤原因。 #include class A public:void fun()couta.funendl; ; class B public:void fun()coutb.funendl; void gun()coutb.gunendl; ; class C:public A,public B private:int b; public:void gun()cout c.gunendl; ; void main() c obj; obj.fun(); obj.gun(); 3
13、指出下面程序段中的錯誤,并說明出錯原因。 class Location int X,Y; protected: int zeroX,zeroY; int SetZero(int zeroX,int zeroY)X=zeroX;Y=zeroY; private: int length,height; public: float radius; void init(int initX,int initY)length=initX;height=initY; int GetX()return X; int GetY()return Y; ; int main() Location retangleA
14、=25,20,3,5,6,7,3; return 0; 4下面的程序先把字符串“Look out!”輸出到一個文件中,然后再從該文件輸入,并顯示在屏幕上,顯示效果為Look out!。程序中有一處錯誤,請用下橫線標(biāo)出錯誤所在行,并給出更改意見。 # include void main() ofstream outf(“D:tem.dat”,ios:trunc); outfk; countk; inf.close( ); 5下面的程序有一處錯誤,請用下橫線標(biāo)出錯誤所在行并改正錯誤。 # include class Test public; static int x; ; int x=20;/對類
15、成員初始化 void main ( ) coutTest:x; 6下面的程序類B的定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并說明錯誤原因。# include # include class A public:A(const char *nm)strcpy(name,nm); private:char name80; ; class B:public A public:B(const char *nm):A(nm) void PrintName( )const; ; void B:PrintName( )const cout“name:”nameendl; void main( ) B b1(
16、“wang li”); b1.PrintName( ); 答案:1程序中第4行“void ConstFun()”錯誤,因為聲明構(gòu)造函數(shù)時不能指定返回類型。2第15行 obj.fun();語句錯誤,因為用C類的對象obj對函數(shù)fun()的訪問是兩義的,應(yīng)使用成員名限定來消除兩義性。3location retangleA25,20,3,5,6,7,3;語句錯誤,因為數(shù)據(jù)成員不都是公有成員,不能用初始化列表初始化。4第7行錯,應(yīng)改為:char k;while(inf.get(k) coutk;注:還可改為char k;while(k=inf.get()!=EOF) coutk;char k20;in
17、f.get(k,20); coutk;或char k20;inf.getline(k,20); coutk;或其中的變量k也可以是其他變量名。5程序中第6行錯誤,該行應(yīng)為: int Test:x=20;6第12行有錯,因為在類B中,name是由類A私有成員繼承來的,不能被派生類訪問。四、 四、完成程序題根據(jù)題目要求填空,完成程序。1在下面程序段橫線處填上適當(dāng)?shù)膬?nèi)容。 class A _ int n; public: A(int nn=0):n(nn) if(n=0)a=0; else a=new intn; _/定義析構(gòu)函數(shù),釋放動態(tài)數(shù)組空間 ;2在下面程序橫線處填上適當(dāng)內(nèi)容,使程序執(zhí)行結(jié)果為
18、: 200_ _ 100 程序如下: #include template _ Tf(Tx,Ty) if(sizeof(T)=_) return x+y; else return x*y; void main() cout f(10,20)-f(45.5,54.5)endl; 3下面程序三次調(diào)用同一函數(shù)sum,在橫線處填上適當(dāng)內(nèi)容,使輸出結(jié)果為: S=2 S=5 S=9 程序如下: #include void sum(int i) static int s; _; coutS=sendl; void main (void) int i; for (i=0;_) sum(i); 4請在下面橫線處填
19、上適當(dāng)?shù)膬?nèi)容,使程序的輸出為: 7.00000 7程序如下: #include viod main() double x=7; cout_x; coutendl_x; 5在下面程序橫線處填上適當(dāng)?shù)膬?nèi)容,使該程序輸出結(jié)果為: Creating B end of B end of A 程序如下: #include class A public: A() _coutend of Aendl; ; calss B:public A public: B()_ B()coutend of Bendl; ; void main() A*pa=new B; delete pa 6在下面程序橫線處填上適當(dāng)內(nèi)容,
20、以使該程序執(zhí)行結(jié)果為: 12 88 # include template class Tany public: ; void pr() if(sizeof(int)= ) county? x:y)endl; else couty? y:x)endl; ; void main( ) Tanydobj=12.0,88.0; dobj.pr( ); Tany iobj=12,88; iobj.pr( ); 7在下面的橫線處填上適當(dāng)內(nèi)容,使程序完整。 # include # include class loc private: float x,y; public; loc( ) x=x1; y=y1;
21、 float getx( )return x; float gety( )return y; float dis(loc&,loc&); ; float loc:dis(loc&a,loc&b) flost dx=a.x-b.x; flost dy=a.y-b.y; return sqrt(dx*dx+dy*dy); void main( ) loc pl(3.5,4.5),p2(5.5,6.5); float d=loc:dis(p1,p2); cout“The distance is”d; 8在下面程序中的橫線處填上適當(dāng)內(nèi)容,使程序完整。 # include class vehicle p
22、rotected: int size; int speed; public; void setSpeed(int s)speed=s; getSpeedLevel( )return speed/10; ; class car:public vehicle public: int getSpeedLeve( )return speed/5; class truck:public vehicle public: int getspeedLevel( )return speed/15; ; int maxSpeedLevel(vehicle ,vehicle ) if(v1.getSpeedLeve
23、l( )v2.getSpeedLevel( ) return 1; else reutrn 2; void main() turck t; car c; t.setSpeed(130); c.setSpeed(60); coutmaxSpeedLevel(t,c)endl;/此結(jié)果輸出為2 9在下面橫線處填上合適內(nèi)容,完成類B的定義。 # include class A public:A( )a=0; A(int i)a=i; void print( )couta”,”; private:int a; ; class B:public A public:B( )b1=b2=0 B( )b1=i
24、;b2=0; B(int i,int j,int k): b1=j;b2=k;/使a的值為i void print( )A:print( );coutb1”,”b2endl; private:int b1,b2; 10根據(jù)注釋在空白處填寫適當(dāng)內(nèi)容。 class Location private: int X,Y; public: void init(int initX,int initY); int GetX( ); int GetY( );void Location:init(int initX,int initY) X=initX; Y=initY; int Location:GetX(
25、) reutrn X; int Location:GetY( ) reutrn Y; # includevoid main( ) Location A1;A1.init(20,90); /定義一個指向A1的引用rA1 /用rA1在屏幕上輸出對象A1的數(shù)據(jù)成員X和Y的值 答案:1int *a;A()deletea; 2class T sizeof(double)(或8或其他等價形式)3s2i(或其他等價形式)i3;i+(或其他等形式) 4setiosflage (ios:showpoint)resetiosflags(ios:showpoint) 說明:其中ios: 可寫成ios_basc:5v
26、irtual A()cout”creating B”end; 6T x,y;sizeof x(或sizeof(x)或sizeof y 或 sizeof(y) 或 sizeof(T)7float x1,float y1;static 8virtual int &v1 &v2 9int i A(i) 10Location &rA1 =A1;coutrA1.GetX()rA1.GetY();五、 程序分析題1寫出下面程序輸出結(jié)果。 # include class A public: virtual void func()coutfunc in class A endl; ;class B publi
27、c: virtual void func()coutfunc in class B endl; ; class C:public A, public B public: void func()coutfunc in class Cendl; ; void main() C c; A& pa=c; B& pb=c; C& pc=c; pa.func(); pb.func(); pv.func(); 輸出為:答案:func in class Cfunc in class Cfund in class C2寫出下面程序的輸出結(jié)果。 # include class Location public: int X,Y; void init(int initX,int initY); int GetX(); int GetY(); ; void Location:init (int initX,int initY) X=initX; Y=initY; int Location:GetX() return X; int Location:GetY() return Y; void display(Location& rL) coutrL. GetX()rL.GetY()init(7,8); for
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遂寧職業(yè)學(xué)院《生物信息與智能醫(yī)學(xué)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 中級宏觀經(jīng)濟(jì)學(xué)(雙語)(山東聯(lián)盟)知到課后答案智慧樹章節(jié)測試答案2025年春山東財經(jīng)大學(xué)
- 中式面點制作工藝知到課后答案智慧樹章節(jié)測試答案2025年春青島酒店管理職業(yè)技術(shù)學(xué)院
- 中外兒童文學(xué)經(jīng)典閱讀與寫作知到課后答案智慧樹章節(jié)測試答案2025年春湖南師范大學(xué)
- 中醫(yī)藥基礎(chǔ)入門知到課后答案智慧樹章節(jié)測試答案2025年春內(nèi)江師范學(xué)院
- 天津工藝美術(shù)職業(yè)學(xué)院《影視節(jié)目錄制與傳播》2023-2024學(xué)年第二學(xué)期期末試卷
- 池州學(xué)院《電氣控制與可編程控制技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國音樂學(xué)院《修建性詳細(xì)規(guī)劃制圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州汽車工程職業(yè)學(xué)院《康復(fù)醫(yī)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海電機(jī)學(xué)院《大學(xué)生就業(yè)與創(chuàng)業(yè)指導(dǎo)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025中國遠(yuǎn)洋海運集團(tuán)校園招聘1484人筆試參考題庫附帶答案詳解
- 2025年安徽商貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫一套
- 2025年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年河南經(jīng)貿(mào)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- unctad -全球投資趨勢監(jiān)測 第 48 期 Global Investment Trends Monitor,No. 48
- 2025年浙江機(jī)電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗實驗室建設(shè)技術(shù)規(guī)范
- 2025年聚焦全國兩會知識競賽題庫及答案(共100題)
- 2024智能網(wǎng)聯(lián)汽車零部件行業(yè)研究報告-2025-01-智能網(wǎng)聯(lián)
- 2025年中國融通資產(chǎn)管理集團(tuán)限公司春季招聘(511人)高頻重點提升(共500題)附帶答案詳解
- 急性心肌梗死的急救與護(hù)理
評論
0/150
提交評論