版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C+程序設(shè)計(jì)復(fù)習(xí)題一、 選擇題1 所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個(gè)實(shí)體,這實(shí)體也就是( ) A、類 B、對象 C、函數(shù)體 D、數(shù)據(jù)塊2面向?qū)ο蟮某绦蛟O(shè)計(jì)語言必須具備的關(guān)鍵要素是( ) A、抽象和封裝 B、抽象和多態(tài)性 C、抽象、封裝、繼承和多態(tài)性 D、抽象、封裝和繼承性3類的構(gòu)造函數(shù)被自動調(diào)用執(zhí)行的情況是在定義該類的( ) A、成員函數(shù)時(shí) B、數(shù)據(jù)成員時(shí) C、對象時(shí) D、友元函數(shù)時(shí)4設(shè)有函數(shù)模板 template Q Sum(Qx,Qy) return(x)+(y); 則下列語句中對該函數(shù)模板錯(cuò)誤的使用是( ) 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)一個(gè)類的某個(gè)函數(shù)被說明為virtual時(shí),該函數(shù)在該類的所有派生類中( ) A、都是虛函數(shù) B、只有被重新說明時(shí)才是虛函數(shù) C、只有被重新說明為virtual時(shí)才是虛函數(shù) D、都不是虛函數(shù)8下面敘述不正確的是( ) A、派生類一般都用公有派
3、生 B、對基類成員的訪問必須是無二義性的 C、賦值兼容規(guī)則也適用于多重繼承的組合 D、基類的公有成員在派生類中仍然是公有的9在C+中實(shí)現(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ù)個(gè)數(shù)不能是( ) A、0 B、2 C、4 D、313在下列成對的表達(dá)式中,運(yùn)算符“+”的意義不相同的一對是( ) 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ù)完成的,這個(gè)函數(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中的“+”和“*”都是重載的友元運(yùn)算符,則采用運(yùn)算符函數(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ù)成員在類體之外定義時(shí)必須要與類聲明在同一文件中 D、在類體之外定義的函數(shù)成員不能操作該類的私有數(shù)據(jù)成員18若派生類的成員函數(shù)不能直接訪問基類中繼承來的某個(gè)成員,則該成員一定是基類中的( ) A、私有成員 B、公有成員 C、保護(hù)成員 D、保護(hù)成員或私有成員
6、19對基類和派生類的關(guān)系描述中,錯(cuò)誤的是( ) A、派生類是基類的具體化 B、基類繼承了派生類的屬性 C、派生類是基類定義的延續(xù) D、派生類是基類的特殊化20類B是類A的公有派生類,類A和類B中都定義了虛函數(shù)func(),p是一個(gè)指向類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假定用戶沒有給一個(gè)名為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ù)的時(shí)候強(qiáng)制進(jìn)行靜態(tài)聯(lián)編,可以通過在調(diào)用中對虛函數(shù)加_實(shí)現(xiàn)。6封裝要求一個(gè)對象應(yīng)具備明確的功能,并具有_以便和其它對象相互作用。7在刪除一個(gè)動態(tài)對象時(shí),將自動調(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è)計(jì)時(shí),最好用_代替malloc。12函數(shù)模板中緊隨template之后尖括號內(nèi)的類型參數(shù)都要冠以保留字_。13在ios類中定義的用于控制輸入輸出格式的枚舉常量中,用于代表十進(jìn)制、八進(jìn)制和十六進(jìn)制的3個(gè)枚舉常量是dec、oct和_。14如果
9、重載了運(yùn)算符,則相應(yīng)的運(yùn)算符函數(shù)名是_。15由static修飾的數(shù)據(jù)成員為該類的所有對象_。16設(shè)函數(shù)max是由函數(shù)模板實(shí)現(xiàn)的,并且max(3.5,5)和max(10,5)都是正確的函數(shù)調(diào)用,則該模板具有_個(gè)類型參數(shù)。17在單繼承和多繼承方式中,面向?qū)ο蟮某绦蛟O(shè)計(jì)應(yīng)盡量使用_繼承。18語句序列 ifstream datafile; datafile.open(“data.dat”); 的功能可用一個(gè)語句實(shí)現(xiàn),這個(gè)語句是_。19將關(guān)鍵字const寫在函數(shù)頭之后,函數(shù)體之前,說明該函數(shù)是一個(gè)const成員函數(shù)。此時(shí)const不是指定函數(shù)的返回值,而是修飾_指針。20一個(gè)抽象類的派生類可以實(shí)例化的必
10、要條件是實(shí)現(xiàn)了所有的_。21在C+中,虛函數(shù)幫助實(shí)現(xiàn)了類的_性。22通過C+語言中類的_,可以擴(kuò)充和完善已有類以適應(yīng)新的需求。23為了在對象生存期結(jié)束時(shí)釋放其指針成員所指向的動態(tài)存儲空間,通常需要為該類定義_。24在聯(lián)合中,所有數(shù)據(jù)成員具有_的位置,任一時(shí)刻只有_個(gè)數(shù)據(jù)成員有效。25.在已經(jīng)定義了整型指針ip后,為了得到一個(gè)包括10個(gè)整數(shù)的數(shù)組并由ip所指向,應(yīng)使用語句_。26為了實(shí)現(xiàn)多態(tài)性,派生類需重新定義基類中的_。27編譯時(shí)的多態(tài)性通過_函數(shù)實(shí)現(xiàn)。28在派生類中實(shí)現(xiàn)基類成員的初始化,需要由派生類的構(gòu)造函數(shù)調(diào)用_來完成。29在C中,訪問指針?biāo)赶虻膶ο蟮某蓡T使用運(yùn)算符_。30重載函數(shù)在參數(shù)
11、類型或參數(shù)個(gè)數(shù)上不同,但_相同。答案:1 AB();2 class(或typcname)3cout,sctf(ios:hex,ios:basefield)(或coutsetf(ios:hex),或cout;30函數(shù)名三、 改錯(cuò)題1指出下面程序中的錯(cuò)誤,并說明出錯(cuò)原因。 #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指出下面程序中的錯(cuò)誤,并說明錯(cuò)誤原因。 #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、指出下面程序段中的錯(cuò)誤,并說明出錯(cuò)原因。 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!”輸出到一個(gè)文件中,然后再從該文件輸入,并顯示在屏幕上,顯示效果為Look out!。程序中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行,并給出更改意見。 # include void main() ofstream outf(“D:tem.dat”,ios:trunc); outfk; countk; inf.close( ); 5下面的程序有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并改正錯(cuò)誤。 # include class Test public; static int x; ; int x=20;/對類
15、成員初始化 void main ( ) coutTest:x; 6下面的程序類B的定義中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并說明錯(cuò)誤原因。# 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()”錯(cuò)誤,因?yàn)槁暶鳂?gòu)造函數(shù)時(shí)不能指定返回類型。2第15行 obj.fun();語句錯(cuò)誤,因?yàn)橛肅類的對象obj對函數(shù)fun()的訪問是兩義的,應(yīng)使用成員名限定來消除兩義性。3location retangleA25,20,3,5,6,7,3;語句錯(cuò)誤,因?yàn)閿?shù)據(jù)成員不都是公有成員,不能用初始化列表初始化。4第7行錯(cuò),應(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行錯(cuò)誤,該行應(yīng)為: int Test:x=20;6第12行有錯(cuò),因?yàn)樵陬怋中,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請?jiān)谙旅鏅M線處填
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); /定義一個(gè)指向A1的引用rA1 /用rA1在屏幕上輸出對象A1的數(shù)據(jù)成員X和Y的值 答案:1int *a;A()deletea; 2class T sizeof(double)(或8或其他等價(jià)形式)3s2i(或其他等價(jià)形式)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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能硬件庫存質(zhì)押擔(dān)保協(xié)議3篇
- 專業(yè)化危險(xiǎn)品運(yùn)輸安全承諾協(xié)議模板版
- 2024建筑模板購銷合同范本
- 2025年度LED廣告車租賃與旅游景觀點(diǎn)亮工程合同3篇
- 2024暑期兼職項(xiàng)目人力資源派遣合同3篇
- 2025版高標(biāo)準(zhǔn)承包魚塘養(yǎng)殖基地管理合同3篇
- 2024智能音響控制系統(tǒng)設(shè)計(jì)與施工合同
- 2024某城市地鐵線路擴(kuò)建工程勘察設(shè)計(jì)合同
- ‘卓爾系’產(chǎn)品2024年度庫存管理與合作合同
- 2024版房地產(chǎn)全程策劃合同
- 周計(jì)劃工作安排日程表Excel模板
- GB∕T 26465-2021 消防員電梯制造與安裝安全規(guī)范(高清最新版)
- 泌尿道感染臨床路徑
- 古詩詞常見的修辭手法講課教案
- 科研項(xiàng)目評審評分表
- A5技術(shù)支持的課堂導(dǎo)入作業(yè)1—問題描述.針對日常教學(xué)中的某一主題針對教學(xué)目標(biāo)、教學(xué)內(nèi)容以及教學(xué)對象用簡短的語言描述當(dāng)前課堂導(dǎo)入環(huán)節(jié)中存在的問題和不足以及借助信息技術(shù)改進(jìn)課堂導(dǎo)入的必要性
- 2-07端陽賽馬節(jié)的傳說
- 國家開放大學(xué)《土木工程力學(xué)(本)》章節(jié)測試參考答案
- 衣柜技術(shù)標(biāo)準(zhǔn)
- 某隧道二襯檢測報(bào)告范本(共13頁)
- (完整版)臨時(shí)用電施工合同
評論
0/150
提交評論