面向對象程序設計C期末試卷及標準答案_第1頁
面向對象程序設計C期末試卷及標準答案_第2頁
面向對象程序設計C期末試卷及標準答案_第3頁
面向對象程序設計C期末試卷及標準答案_第4頁
面向對象程序設計C期末試卷及標準答案_第5頁
免費預覽已結束,剩余8頁可下載查看

下載本文檔

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

文檔簡介

1、?面向對象程序設計C+?期末測試試卷(A)班級:姓名:學號:分數:題號一二三四總分得分試卷說明:本套試題共四個大題,全部題目都答在做題紙上,寫在其他地方均無效.(做題紙在本套試卷的第10頁上)一、選擇題(每題2分,共40分)1、C+是().A.面向對象的程序設計語言B.面向過程的程序設計語言C.既支持面向對象的程序設計又支持面向過程的程序設計的混合型語言D.非結構化的程序設計語言2、面向對象程序設計思想的主要特征中不包括().A.封裝性B.多態性C.繼承性D.功能分解,逐步求精3、假設定義:stringstr;當語句cin>>str;執行時,從鍵盤輸入:MicrosoftVisua

2、lStudio6.0!所得的2果是str=().A.MicrosoftVisualStudio6.0!B.MicrosoftC.MicrosoftVisualD.MicrosoftVisualStudio6.04、考慮下面的函數原型聲明:voidtestDefaulParam(inta,intb=7,charz='*');下面函數調用中,不合法的是().A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(5,'#');D.testDefaulParam(0,0,'*');5、

3、以下語句中,將函數intsum(intx,inty)正確重載的是().A.floatsum(intx,inty);B.intsum(inta,intb);C.floatsum(floatx,floaty);D.doublesum(inty,intx);6、以下表示引用的方法中,是正確的.:inta=1000;A.int&x=a;B.char&y;C.int&z=1000;D.float&t=&a;7、在一個函數中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用.A.內聯函數B.重載函數C.遞歸調用D.嵌套調用8、以下有關C+類的說法中,

4、不正確的選項是.A.類是一種用戶自定義的數據類型B.只有類中的成員函數或類的友元函數才能存取類中的私有成員C.在類中,如果不做特別說明,所有成員的訪問權限均為私有的D.在類中,如果不做特別說明,所有成員的訪問權限均為公用的9、X類,那么當程序執行到語句:Xarray3;時,調用了次構造函數.A.0B.1C.2D.310、下面說法中,正確的選項是A. 一個類只能定義一個構造函數,但可以定義多個析構函數B. 一個類只能定義一個析構函數,但可以定義多個構造函數C.構造函數與析構函數同名,只要名字前加了一個求反符號D.構造函數可以指定返回類型,而析構函數不能指定任何返回類型,即使是void類型也不可以

5、11、:print函數是一個類的常成員函數,它無返回值,以下表示中,是正確的.A.voidprintconst;B.constvoidprint;C. voidconstprint;D.voidprintconst;12、下面描述中,表達錯誤的選項是A.公用繼承時基類中的public成員在派生類中仍是public的B.公用繼承時基類中的private成員在派生類中仍是private的C.公用繼承時基類中的protected成員在派生類中仍是protected的D.私有繼承時基類中的public成員在派生類中是private的13、設置虛基類的目的是().A.簡化程序B.消除二義性C.提升運行效

6、率D.減少目標代碼14、下面()的表達不符合賦值兼容規那么.A.派生類的對象可以賦值給基類的對象B.基類的對象可以賦值給派生類的對象C.派生類的對象可以初始化基類的對象D.派生類的對象的地址可以賦值給指向基類的指針15、關于虛函數的描述中,()是正確的.A.虛函數是一個static類型的成員函數B.虛函數是一個非成員函數C.基類中說明了虛函數后,派生類中與其對應的函數可不必說明為虛函數D.派生類的虛函數與基類的虛函數具有不同的參數個數和類型16、下面關于友元的描述中,錯誤的選項是().A.友元函數可以訪問該類的私有數據成員B. 一個類的友元類中的成員函數都是這個類的友元函數C.友元可以提升程序

7、的運行效率D.類與類之間的友元關系可以繼承17、以下關于靜態數據成員的說法,不正確的選項是().A.類中定義的公用靜態數據成員,可以通過類的對象來訪問B.類中定義的所有靜態數據成員,都必須在類外初始化C.靜態數據成員不是所有對象所共用的D.普通的成員函數可以直接訪問類中的靜態數據成員18、如果表達式+i*k中的“+和“*都是重載的友元運算符,假設采用運算符函數調用格式,那么表達式還可以表示為().A.operator*(i.operator+(),k)B.operator*(operator+(i),k)C. i.operator+().operator*(k)D.k.operator*(op

8、erator+(i)19、下面對模板的聲明,正確的選項是.A.template<T>B.template<classT1,T2>C.template<classT1,classT2>D.template<classT1;classT2>20、以下的各類函數中,不是類的成員函數A.構造函數B.析構函數C.友元函數D.復制構造函數二、填空題前14個空,每空1分,后3個空,每空2分,共20分1、類和對象的關系可表述為:類是對象的,而對象那么是類的.2、靜態成員函數沒有隱含的,所以,在C+程序中,靜態成員函數主要用來訪問靜態數據成員,而不訪問非靜態成員.

9、3、在圖1中,A,B,C,D,E,F均是類,其中屬于單繼承的派生類有,屬于多繼承的派生類有,類F的基類有,類A的派生類有0圖1類的繼承層次圖4、如果只想保存公共基類的一個復制,就必須使用關鍵字把這個公共基類聲明為虛基類.5、從實現的角度來講,多態性可以劃分為兩類:和.6、如果一個類包含一個或多個純虛函數,那么該類稱為.7、假設要把voidfun定義為類A的友元函數,那么應在類A的定義中參加語旬08、列出C+中的兩種代碼復用方式:和.9、析構函數的作用是.10、假定A是一個類名,那么該類的拷貝構造函數的原型說明語句為:.11、后置自增運算符“+重載為類的成員函數(設類名為A)的形式為:三、閱讀下

10、面4個程序,寫出程序運行時輸出的結果.(共13分)1、#include<iostream>usingnamespacestd;voidfun(int&a,int&b)intp;p=a;a=b;b=p;voidexchange(int&a,int&b,int&c)if(a<b)fun(a,b);if(a<c)fun(a,c);if(b<c)fun(b,c);intmain()inta=12,b=89,c=56;exchange(a,b,c);cout<<"a="<<a<<

11、",b="<<b<<",c="<<c<<endl;return0;2、#include<iostream>usingnamespacestd;classApublic:A()cout<<"A");classBpublic:B()cout<<"B");classC:publicApublic:C()cout<<"C"private:Bb;intmain()Cobj;return0;3、#include&

12、lt;iostream>usingnamespacestd;classApublic:A()cout<<"A:A()called.n"virtualA()cout<<"A:A()called.n"classB:publicApublic:B(inti)cout<<"B:B()called.n"buf=newchari;)virtual-B()deletebuf;cout<<"B:-B()called.n")private:char*buf;);intmain()

13、A*a=newB(15);deletea;return0;)4、#include<iostream>usingnamespacestd;classApublic:voidf()cout<<"CallA'sfunctionf()"<<endl;);classBpublic:voidf()cout<<"CallB'sfunctionf()"<<endl;voidg()cout<<"CallB'sfunctiong()"<<endl;

14、classC:publicA,publicBpublic:voidg()cout<<"CallC'sfunctiong()"<<endl;);intmain()Ccc;cc.B:f();cc.B:g();cc.g();return0;四、編程題(27分)1、(10分)復數類Complex的聲明如下:classComplexpublic:Complex();/無參構造函數Complex(double);/轉換構造函數Complex(double,double);/有兩個形參的構造函數friendComplexoperator+(Complex&

15、amp;,Complex&);/對“+運算符進行重載friendostream&operator<<(ostream&,Complex&);對“<<運算符進行重載friendistream&operator>>(istream&,Complex&);對“>>運算符進行重載private:doublereal,imag;要求:(1)寫出該類的所有構造函數的類外定義代碼.(2)寫出對運算符“+、“<<"、“>>進行重載的運算符重載函數的定義.2、(17分)以下S

16、hap啖是一個表示形狀的抽象類,area()為求圖形面積的函數,total()那么是一個通用的用以求不同形狀的圖形面積總和的函數.classShapepublic:virtualdoublearea()=0;);doubletotal(Shape*s,intn)doublesum=0.0;for(inti=0;i<n;i+)sum+=si->area();returnsum;)要求:(1)從Shape類派生圓類(Circle)、正方形類(Squar,圓類新增數據成員半徑(radius),正方形類新增數據成員邊長(a),圓類和正方形類都有構造函數,修改、顯示數據成員值的函數,求面積函

17、數.(2)寫出main()函數,計算半徑為5.5的圓和邊長為9.9的正方形的面積和(必須通過調用total函數計算).?面向對象程序設計C+?期末測試試卷(A)標準答案班級:姓名:學號:分數:題號一二三四總分得分、單項選擇題(每題2分,共40分)1-5.CDBCC6-10.AADDB11-15.ABBBC16-20.DCBCC二、填空題(前14個空,每空1分,后3個空,每空2分,共20分)1.抽象實例2.this指針3. ED、FA、B、C、DED、F4. virtual5.靜態多態性動態多態性6.抽象類7.friendvoidfun(A&a)8. 繼承組合或模板9. 在對象被系統釋放

18、之前做一些內存清理工作10. A(constA&)11.Aoperator+(int)三、閱讀程序(13分)1、a=89,b=56,c=122、ABC3、A:A()called.B:B()called.A:-A()called.4、CallB'sfunctionf()CallB'sfunctiong()CallC'sfunctiong()四、編程題(共27分)1、(10分)Complex二Complex()real=0;imag=0;Complex二Complex(doubler)real=r;Complex:Complex(doubler,doublei)re

19、al=r;imag=i;Complexoperator+(Complex&c1,Complex&c2)Complexc;c.real=c1.real+c2.real;c.imag=c1.imag+c2.imag;returnc;ostream&operator<<(ostream&output,Complex&c)output<<"("<<c.real<<"+"<<c.imag<<"i)"<<endl;returnoutput;istream&operator>>(istream&input,Complex&c)cout<<"inputrealandimaginarypartofcomplexnumber:"input>>c.real>>c.imag;returninput;2、(

溫馨提示

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

評論

0/150

提交評論