《面向對象程序設計C》期末試卷及標準答案B.doc_第1頁
《面向對象程序設計C》期末試卷及標準答案B.doc_第2頁
《面向對象程序設計C》期末試卷及標準答案B.doc_第3頁
《面向對象程序設計C》期末試卷及標準答案B.doc_第4頁
《面向對象程序設計C》期末試卷及標準答案B.doc_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向對象程序設計C+期末考試試卷(B)一、單項選擇題(每小題2分,共40分)1、關于C+與C語言關系的描述中,( )是錯誤的。 AC語言是C+語言的一個子集 BC語言與C+語言是兼容的 CC+語言對C語言進行了一些改進 DC+語言和C語言都是面向對象的2、已知:int m=10; 下列表示引用的方法中,( )是正確的。Aint &x=m; Bint &y=10; Cint &z; Dfloat &t=&m;3、考慮下面的函數(shù)原型聲明:void testDefaulParam(int a,int b=7,char z=*);下面函數(shù)調用中,不合法的是( )。AtestDefaulParam(5)

2、; BtestDefaulParam(5,8);CtestDefaulParam(5,#); DtestDefaulParam(0,0,*);4、系統(tǒng)在調用重載函數(shù)時往往根據(jù)一些條件確定哪個重載函數(shù)被調用,在下列選項中,不能作為依據(jù)的是( )。A函數(shù)的返回值類型 B參數(shù)的類型 C函數(shù)名稱 D參數(shù)個數(shù)5、下列有關C+類的說法中,不正確的是( )。A類是一種用戶自定義的數(shù)據(jù)類型B只有類中的成員函數(shù)或類的友元函數(shù)才能存取類中的私有成員C在類中,如果不做特別說明,所有成員的訪問權限均為私有的D在類中,如果不做特別說明,所有成員的訪問權限均為公用的6、已知X類,則當程序執(zhí)行到語句X array3;時,調

3、用了( )次構造函數(shù)。A0 B1 C2 D37、有關析構函數(shù)的說法,不正確的是( )。A析構函數(shù)有且僅有一個B析構函數(shù)和構造函數(shù)一樣可以有形參C析構函數(shù)的功能是在系統(tǒng)釋放對象之前作一些內存清理工作D析構函數(shù)無任何函數(shù)類型8、類定義的內容允許被其對象無限制地存取的是( )。Aprivate 部分 B protected 部分 Cpublic 部分 D以上都不對9、關于常數(shù)據(jù)成員的說法,不正確的是( )。A常數(shù)據(jù)成員的定義形式與一般常變量的定義形式相同,只不過常數(shù)據(jù)成員的定義必須出現(xiàn)在類體中B常數(shù)據(jù)成員必須進行初始化,并且不能被更新C常數(shù)據(jù)成員通過構造函數(shù)的成員初始化列表進行初始化D常數(shù)據(jù)成員可以

4、在定義時直接初始化10、運用運算符delete刪除一個動態(tài)對象時( )。A系統(tǒng)首先為該動態(tài)對象調用構造函數(shù),再釋放其占用的內存B系統(tǒng)首先釋放該動態(tài)對象占用的內存,再為其調用構造函數(shù)C系統(tǒng)首先為該動態(tài)對象調用析構函數(shù),再釋放其占用的內存D系統(tǒng)首先釋放動態(tài)對象占用的內存,再為其調用析構函數(shù)11、可以在類外用p.a的形式訪問派生類對象p的基類成員a,其中a是( )。A私有繼承的公用成員 B公用繼承的私有成員C公用繼承的保護成員 D公用繼承的公用成員12、在公用繼承方式下,有關派生類對象和基類對象的關系,不正確的敘述是( )。A派生類的對象可以賦給基類的對象B派生類的對象可以初始化基類的引用C派生類的

5、對象可以直接訪問基類中的成員D派生類的對象的地址可以賦給指向基類的指針13、設置虛基類的目的是( )。A簡化程序 B消除二義性 C提高運行效率 D減少目標代碼14、在C+中,用于實現(xiàn)動態(tài)多態(tài)性的是( )。A內聯(lián)函數(shù) B重載函數(shù) C模板函數(shù) D虛函數(shù)15、不能說明為虛函數(shù)的是( )。A析構函數(shù) B構造函數(shù) C類的成員函數(shù) D以上都不對16、如果一個類至少有一個純虛函數(shù),那么就稱該類為( )。A抽象類 B派生類 C純基類 D以上都不對17、下面關于友元的描述中,錯誤的是( )。A友元函數(shù)可以訪問該類的私有數(shù)據(jù)成員B一個類的友元類中的成員函數(shù)都是這個類的友元函數(shù)C友元可以提高程序的運行效率D類與類之

6、間的友元關系可以繼承18、下列運算符中,( )運算符在C+中不能被重載。A& B C: Dnew19、模板的使用實際上是將類模板實例化成一個( )。A函數(shù) B對象 C類 D抽象類20、假定MyClass為一個類,則該類的拷貝構造函數(shù)的聲明語句為( )。AMyClass(MyClass x) BMyClass&(MyClass x)CMyClass(MyClass &x) DMyClass(MyClass *x)二、填空題(前16個空,每空1分,后2個空,每空2分,共20分)1、類和對象的關系可表述為:類是對象的 ,而對象則是類的 。2、在C+中,三種繼承方式的說明符號為 、 和 ,如果不加說明

7、,則默認的繼承方式為 。3、如果只想保留公共基類的一個復制,就必須使用關鍵字 把這個公共基類聲明為虛基類。4、若要把void fun()定義為類A的友元函數(shù),則應在類A的定義中加入語句 。5、類的靜態(tài)成員分為 和 。6、運算符重載要求保持其原來的操作數(shù)個數(shù)、 、 和語法結構。7、通過關鍵字 可以聲明模板,通過關鍵字 指定函數(shù)模板的類型參數(shù),有幾個類型參數(shù)就有幾個類型關鍵字。8、列出C+中兩種用戶自定義的數(shù)據(jù)類型: 、 。9、構造函數(shù)的作用是 。10、后置自增運算符“+”重載為類的成員函數(shù)(設類名為A)的形式為 。三、閱讀下面3個程序,寫出程序運行時輸出的結果:(共13分)1、#includeu

8、sing namespace std;void fun(int &a,int &b) int p; p=a; a=b; b=p;void exchange(int &a,int &b,int &c) if(ab)fun(a,b); if(ac)fun(a,c); if(bc)fun(b,c);int main() int a=12,b=89,c=56; exchange(a,b,c); couta=a,b=b,c=cendl; return 0;2、#include using namespace std;class Date public: Date(int,int,int); Date(i

9、nt,int); Date(int); Date(); void display(); private: int month, day, year; ; Date:Date(int m,int d,int y):month(m),day(d),year(y) Date:Date(int m,int d):month(m),day(d) year=2009; Date:Date(int m):month(m)day=1; year=2010; Date:Date() month=1; day=1; year=2010; void Date:display()coutmonth/day/yeare

10、ndl; int main() Date d1(12,31,2009); Date d2(12,31); Date d3(1); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; 3、#include using namespace std;class A public: A()coutconstructing A endl; A()coutdestructing A endl;class B: public A public: B()coutconstructing B endl; B()co

11、utdestructing B endl;class C : public B public: C()coutconstructing C endl; C()coutdestructing C endl;int main() C c1; return 0;四、編程題(共27分)1、(10分) 已知復數(shù)類Complex的聲明如下:class Complexpublic: Complex(); /無參構造函數(shù) Complex(double ); /轉換構造函數(shù)Complex(double, double);/有兩個形參的構造函數(shù) friend Complex operator+(Complex&,

12、 Complex&); /對“+”運算符進行重載 friend ostream& operator(ostream&, Complex&); /對“(istream&, Complex&); /對“”運算符進行重載private: double real,imag;要求:(1)寫出該類的所有構造函數(shù)的類外定義代碼。 (2)寫出對運算符“+”、“”進行重載的運算符重載函數(shù)的定義。2、(17分)下列Shape類是一個表示形狀的抽象類,area( )為求圖形面積的函數(shù),total( )則是一個通用的用以求不同形狀的圖形面積總和的函數(shù)。class Shapepublic:virtual double

13、area()=0;double total(Shape *s , int n) double sum=0.0; for(int i=0; iarea( );return sum; 要求:(1)從Shape類派生圓類(Circle)、正方形類(Square),圓類新增數(shù)據(jù)成員半徑(radius),正方形類新增數(shù)據(jù)成員邊長(a),圓類和正方形類都有構造函數(shù),修改、顯示數(shù)據(jù)成員值的函數(shù),求面積函數(shù)。 (2)寫出main()函數(shù),計算半徑為5.5的圓和邊長為9.9的正方形的面積和(必須通過調用total函數(shù)計算)。面向對象程序設計C+期末考試試卷(B)標準答案1-5D A C A D 6-10D B

14、C D C 11-15D C B D B 16-20A D C C C二、1 抽象 、 實例 2 public 、 private _ _、 protected 、 private _ _3 virtual _ 4 friend void fun(A &a) _5 靜態(tài)數(shù)據(jù)成員 、 靜態(tài)成員函數(shù) 6 結合性 、 優(yōu)先級_ _7 Template 、 class(或typename) 8 類 、 結構體 _9 在創(chuàng)建對象時初始化對象的數(shù)據(jù)成員 _10 A operator+(int) _三、1、a=89,b=56,c=122、12/31/2009 12/31/2009 1/1/2010 1/1/

15、20103、constructing Aconstructing Bconstructing Cdestructing Cdestructing Bdestructing A四、1、(10分)Complex:Complex()real=0;imag=0;Complex:Complex(double r)real=r;Complex:Complex(double r,double i)real=r;imag=i;Complex operator+(Complex &c1,Complex &c2) Complex c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c;ostream& operator (ostream& output,Complex& c) output(c.real+c.imagi) (istream& input,Complex& c) coutc.realc.imag; return input;2、(17分)class Circle:public Shapepublic: Circle(double r)radius=r; void set() coutPlease input the value of the circle:radius; void show() coutthe radi

溫馨提示

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

評論

0/150

提交評論