c++面向對象程序設計試題及答案解析經典題目_第1頁
c++面向對象程序設計試題及答案解析經典題目_第2頁
c++面向對象程序設計試題及答案解析經典題目_第3頁
c++面向對象程序設計試題及答案解析經典題目_第4頁
c++面向對象程序設計試題及答案解析經典題目_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.9/10密封線內不答密封線內不答題系名____________班級____________姓名____________學號____________填空題〔每空1分,共14分觀看以下程序:classpoint{public:voidshow<>{cout<<"point"<<endl;}};voidmain<>{pointp1;point*p;p=&p1;______p1.show<>_________//通過對象p1訪問show函數_______p.show<>_______//通過指針p訪問show函數}在C++類中可以包含___公共___、___保護_____和___私有__三種具有不同訪問控制權的成員。定義類時,在類頭中將使用關鍵字__class_____來表示類定義的開始。如果一個類中至少有一個純虛函數,則該類稱為_______抽象類_________。C++類的組成包括數據成員和______成員函數________,友元__是___〔是、不是該類的成員函數。友員函數是用關鍵字_____friend_______修飾的非成員函數。若有:inti;int&j=i;i=10;j=i+1;則i=____11_____,j=___11______。8、new的功能是_______分配內存空間______,delete的功能是______釋放內存空間______________。選擇題<每小題1.5分,共30分>1、下列特性中不是面向對象程序設計語言所特有的是〔D。〔A數據封裝 〔B繼承〔C多態性 〔D模板2、〔B是給變量取一個別名,它引入了變量的同意詞。〔A指針 〔B引用 〔C枚舉 〔D結構3、類成員的訪問權限中,〔只能被本類的成員函數和其友元函數訪問。〔Ashare 〔Bpublic 〔Cprivate 〔Dprotected4、關于構造函數,下列說法不正確的是〔。〔A構造函數名字和類名相同〔B構造函數在創建對象時自動執行〔C構造函數無任何函數返回類型〔D構造函數有且只有一個5、派生類可以訪問其基類的〔。〔A公有成員〔B保護成員〔C私有派生〔D公有和保護成員6、下列關于運算符重載的描述中,錯誤的是〔。〔A運算符重載不可以改變操作數的個數〔B運算符重載不可以改變運算符的功能〔C運算符重載不可以改變結合方向〔D運算符重載不可以改變運算優先級7、C++語言是從早期的C語言逐漸發展演變而來的.與C語言相比,它在求解問題方法上進行的最大改進是〔〔A面向過程〔B面向對象〔C安全性〔D復用性8、對于類中定義的成員,其隱含訪問權限為〔。A.publicB.protectedC.privateD.static9、下面有關重載函數的說法中正確的是〔〔A重載函數必須具有不同的返回值類型;〔B重載函數形參個數必須不同;〔C重載函數必須有不同的形參列表〔D重載函數名可以不同;10、有如下的對類"CSample"的說明,其中〔是錯誤的。classCSample{A.inta=23;B.CSample<>;public:C.CSample<intval>;D.~CSample<>;11、在inta=3,int*p=&a;中,*p的值是<>A.變量a的地址值B.無意義C.變量p的地址值D.312、每個類〔構造函數。〔A只能有一個〔B只可有公有的〔C可以有多個〔D只可有缺省的13、在一個類中可以對一個操作符進行〔重載。〔A1種〔B2種以下〔C3種以下〔D多種14、在公有繼承的情況下,基類非私有成員在派生類中的訪問權限〔〔A受限制〔B保持不變〔C受保護〔D不受保護15、應在下列程序劃線處填入的正確語句是〔#include<iostream.h>classBase{public:voidfun<>{cout<<"Base::fun"<<ENDL;}};classDerived:publicBase{voidfun<>{_____________//顯示調用基類的函數fun<>cout<<"Derived::fun"<<ENDL;}};〔Afun<>;〔BBase.fun<>;〔CBase::fun<>;〔DBase->fun<>;16、執行下面的程序將輸出〔#include<iostream.h>classBASE{ charc; public: BASE<charn>:c<n>{} virtual~BASE<>{cout<<c;} };classDERIVED:publicBASE{ charc;public: DERIVED<charn>:BASE<n+1>,c<n>{} ~DERIVED<>{cout<<c;}};intmain<>{DERIVEDa<'X'>;return0;}〔AXY

〔BYX

〔CX

〔DY下面描述中,表達錯誤的是〔〔A公有繼承時基類中的public成員在派生類中仍是public的〔B公有繼承是基類中的private成員在派生類中仍是private的〔C公有繼承時基類中的protected成員在派生類中仍是protected的〔D私有繼承時基類中的public成員在派生類中是private的18、定義析構函數時,應該注意〔〔A其名與類名完全相同〔B返回類型是void類型〔C無形參,也不可重載〔D函數體中必須有delete語句19、對于在類中定義的靜態數據成員,下面正確的說法是〔A.該類的每個對象中都有一個靜態數據成員B.對象創建時產生C.在類外進行初始化D.既可以在類外初始化,也可以在類內初始化20、C++中聲明常量的關鍵字是〔。A.constB.externC.publicD.enum改錯題<每處2分,共6分>使用VC6打開考生文件夾下的工程proj1,此工程包含一個源程序文件main.cpp,但該程序運行有問題,請改正main函數中的錯誤,使程序的輸出結果為:member=0member=5menber=10源程序文件main.cpp清單如下:#include<iostream.h>class

MyClass{public:MyClass<int

i>{member=i;}void

SetMember<int

m>{member=m;}int

GetMember<>const{return

menber;}void

print<>cont{cout<<"member="<<MEMBER<<ENDL;}private:int

member;};voed

main<>{MyClass

obj1;//更正_____________________________obj1.print<>;MyClass

obj2<3>;obj1.member=5;//更正__________________________MyClass.SetMember<10>;//更正_______________________obj1.print<>;obj2.print<>;}寫出下列程序的執行結果〔每小題5分,共20分#include<iostream.h>classSample{intn;public:Sample<inti>{n=i;}friendintadd<Sample&s1,Sample&s2>;};intadd<Sample&s1,Sample&s2>{returns1.n+s2.n;}voidmain<>{Samples1<10>,s2<20>;cout<<add<s1,s2><<endl;}執行結果是:#include<iostream.h>intadd<intx,inty>{returnx+y+1;}doubleadd<doublex,doubley>{returnx+y-1;}voidmain<>{inta=2,b=4;doublec=2.6,d=7.4;cout<<add<a,b><<","<<add<c,d><<endl;}執行結果是:3、#include<iostream.h>classA{public:intn;};classB:virtualpublicA{};classC:virtualpublicA{};classD:publicB,publicC{intgetn<>{returnB::n;}};voidmain<>{Dd;d.B::n=10;d.C::n=20;cout<<d.B::n<<","<<d.C::n<<endl;}執行結果是:4、#include<iostream.h>classmyclass{inta,b;staticints;public:myclass<intx,inty>{a=x;b=y;s++;}voidprint<>{cout<<s<<endl;}};intmyclass::s=0;voidmain<>{myclassm1<1,2>,m2<4,5>,m3<6,7>;m1.print<>;m2.print<>;m3.print<>;}執行結果是:編程題<每題10分、共30分>測試一個名為rectangle的矩形類,其屬性為矩形的左下角與右上角兩個點的坐標,能計算矩形的面積。<10分>定義一boat與car兩個類,二者都有weight屬性,定義二者的一個友元函數totalweight<>,計算二者的重量和。<10分>設計一個汽車類vehicle,包含的數據成員有車輪個數wheels和車重weight。小車類car是它的派生類,其中包含載人數passenger_load。每個類都有相關數據的輸出方法。在主程序中定義一個car類對象,對其車輪個數、車重、載人數進行設置并顯示。<10分>填空題<每空1分,共14分>〔1p1.show<>;p->show<>〔2公有、私有、保護〔3class〔4抽象類〔5成員函數、不是〔6friend〔711、11〔8動態申請內存空間、釋放由new申請的空間選擇題<每小題1.5分,共30分>1、D2、B3、C4、D5、D6、B7、B8、C9、C10、A11、D12、C13、D14、B15、C16、A17、B18、C19、C20、A改錯題<每錯2分,共6分>MyClassobj1<0>;obj1.SetMember<5>;obj2.SetMember<10>;寫出下列程序的執行結果〔每小題5分,共20分〔130〔5分〔279<每個2.5分>〔32020<每個2.5分>〔43〔2分3〔2分3〔1分編程題〔每題10分、共30分1、#include<iostream.h>#include<math.h>classrectangle//<2分>{private: intx1,y1,x2,y2;//<2分>public: rectangle<intxx1,intyy1,intxx2,intyy2>//<1分> { x1=xx1;y1=yy1;x2=xx2;y2=yy2; } intgetarea<>//<2分> { returnabs<<x2-x1>*<y1-y2>>; }};voidmain<>{ rectanglerect1<3,7,8,5>;<2分> cout<<rect1.getarea<><<endl;<1分>}2、<10分>#include<iostream.h>classcar;〔1分classboat{private: intweight;//<1分>public: boat<intw>:weight<w>{}//<1分> friendinttotalweight<boatb1,carc1>;//<2分>};classcar{/<1分>private: intweight;<1分>public: car<intw>:weight<w>{}; friendinttotalweight<boatb1,carc1>;<1分>};inttotalweight<boatb1,carc1>//<1分>{ returnb1.weight+c1.weight;}voidmain<>{ carc1<1000>; boatb1<2000>; cout<<totalweight<b1,c1><<endl;<1分>}3、<10分>#include<iostream.h>classvehicle//定義汽車類<3分>{protected:intwheels;//車輪數floatweight;//重量public:vehicle<intwheels,floatweight>;intget_wheels<>;floatget_weight<>;floatwheel_load<>;voidshow<>;};classcar:publicvehicle//定義小車類<3分>{intpassenger_load;//載人數public:car<intwheels,floatweight,intpassengers=4>;intget_passengers<

溫馨提示

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

評論

0/150

提交評論