




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計C+期末考試試卷(A)班級:姓名:學號:分數:題號一二三四總分得分試卷說明:本套試題共四個大題,全部題目都答在答題紙上,寫在其他地方均無效。(答題紙在本套試卷的第10頁上)一、選擇題(每小題2分,共40分)1、C+是(C)。A.面向對象的程序設計語言B.面向過程的程序設計語言C.既支持面向對象的程序設計又支持面向過程的程序設計的混合型語言D.非結構化的程序設計語言2、面向對象程序設計思想的主要特征中不包括(D)。A.封裝性B.多態性C.繼承性D.功能分解,逐步求精3、若定義:stringstr;當語句cin>>str;執行時,從鍵盤輸入:MicrosoftVisua
2、lStudio6.0!所得的2果是str=(B)。A.MicrosoftVisualStudio6.0!B.MicrosoftC.MicrosoftVisualD.MicrosoftVisualStudio6.04、考慮下面的函數原型聲明:voidtestDefaulParam(inta,intb=7,charz='*');下面函數調用中,不合法的是(C)。A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(5,'#');D.testDefaulParam(0,0,'*');
3、5、下列語句中,將函數intsum(intx,inty)正確重載的是(C)。A. float sum(int x, int y);C. float sum(float x, float y);B. int sum(int a, int b);D. double sum(int y, int x);6、下列表示引用的方法中,(A)是正確的。已知:inta=1000;A.int&x=a;B.char&y;C.int&z=1000;D.float&t=&a;7、在一個函數中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用(A)。A.內聯函數B
4、.重載函數C.遞歸調用D.嵌套調用8、下列有關C+類的說法中,不正確的是(D)。A. 類是一種用戶自定義的數據類型B. 只有類中的成員函數或類的友元函數才能存取類中的私有成員C. 在類中,如果不做特別說明,所有成員的訪問權限均為私有的D. 在類中,如果不做特別說明,所有成員的訪問權限均為公用的9、已知X類,則當程序執行到語句:Xarray3;時,調用了(D)次構造函數。A.0B.1C.2D.310、下面說法中,正確的是(B)A. 一個類只能定義一個構造函數,但可以定義多個析構函數B. 一個類只能定義一個析構函數,但可以定義多個構造函數C. 構造函數與析構函數同名,只要名字前加了一個求反符號()
5、D. 構造函數可以指定返回類型,而析構函數不能指定任何返回類型,即使是void類型也不可以11、已知:print()函數是一個類的常成員函數,它無返回值,下列表示中,(A)是正確的。A.voidprint()const;B.constvoidprint();C.voidconstprint();D.voidprint(const);12、下面描述中,表達錯誤的是(B)A. 公用繼承時基類中的public成員在派生類中仍是public的B. 公用繼承時基類中的private成員在派生類中仍是private的C.公用繼承時基類中的protected成員在派生類中仍是protected的D.私有繼承
6、時基類中的public成員在派生類中是private的13、設置虛基類的目的是(B)。A.簡化程序B.消除二義性C.提高運行效率D.減少目標代碼14、下面(B)的敘述不符合賦值兼容規則。A. 派生類的對象可以賦值給基類的對象B. 基類的對象可以賦值給派生類的對象C. 派生類的對象可以初始化基類的對象D. 派生類的對象的地址可以賦值給指向基類的指針15、關于虛函數的描述中,(C)是正確的。A.虛函數是一個static類型的成員函數B. 虛函數是一個非成員函數C. 基類中說明了虛函數后,派生類中與其對應的函數可不必說明為虛函數D. 派生類的虛函數與基類的虛函數具有不同的參數個數和類型16、下面關于
7、友元的描述中,錯誤的是(D)。A. 友元函數可以訪問該類的私有數據成員B. 一個類的友元類中的成員函數都是這個類的友元函數C. 友元可以提高程序的運行效率D. 類與類之間的友元關系可以繼承17、下列關于靜態數據成員的說法,不正確的是(C)。A. 類中定義的公用靜態數據成員,可以通過類的對象來訪問B. 類中定義的所有靜態數據成員,都必須在類外初始化C. 靜態數據成員不是所有對象所共用的D. 普通的成員函數可以直接訪問類中的靜態數據成員18、如果表達式+i*k中的“+”和“*”都是重載的友元運算符,若采用運算符函數調用格式,則表達式還可以表示為(B)。A. operator*(i.operator
8、+(),k)C. i.operator+().operator*(k)B. operator*(operator+(i),k)D. k.operator*(operator+(i)19、下面對模板的聲明,正確的是(C)。A.template<T>B.template<classT1,T2>C.template<classT1,classT2>D.template<classT1;classT2>20、下列的各類函數中,(C)不是類的成員函數A.構造函數B.析構函數C.友元函數D.復制構造函數二、填空題(前14個空,每空1分,后3個空,每空2分,共
9、20分)1、類和對象的關系可表述為:類是對象的抽象、而對象則是類的B。2、靜態成員函數沒有隱含的this指針、所以,在C+程序中,靜態成員函數主要用來訪問靜態數據成員,而不訪問非靜態成員。3、在圖1中,A,B,C,D,E,F均是類,其中屬于單繼承的派生類有_E,屬于多繼承的派生類有D、F、類F的某類有A、B、C、D、E,類A的派生類有D、F。圖1類的繼承層次圖4、如果只想保留公共基類的一個復制,就必須使用關鍵字virtual把這個公共基類聲明為虛基類。5、從實現的角度來講,多態性可以劃分為兩類:靜態多態性和動態多態性。6、如果一個類包含一個或多個純虛函數,則該類稱為抽象類。7、若要把voidf
10、un()定義為類A的友元函數,則應在類A的定義中加入語句一friendvoidfun(A&a)。8、列出C+中的兩種代碼復用方式:繼承和組合或模板9、析構函數的作用是在對象被系統釋放之前做一些內存清理工作10、假定A是一個類名,則該類的拷貝構造函數的原型說明語句為:A(constA&)11、后置自增運算符“+”重載為類的成員函數(設類名為A)的形式為:Aoperator+(int)三、閱讀下面4個程序,寫出程序運行時輸出的結果。(共13分)1、#include<iostream>usingnamespacestd;voidfun(int&a,int&
11、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<<",b="<<b<<",c="<<c<<endl;return0;解1、a=89,b=56,c=122
12、、 #include<iostream>usingnamespacestd;classApublic:A()cout<<"A"classBpublic:B()cout<<"B"classC:publicApublic:C()cout<<"C"private:Bb;intmain()Cobj;return0;解2、ABC3、#include<iostream>usingnamespacestd;classApublic:A()cout<<"A:A()cal
13、led.n"virtualA()cout<<"A:A()called.n"classB:publicApublic:B(inti)cout<<"B:B()called.n"buf=newchari;virtualB()deletebuf;cout<<"B:B()called.n"private:char*buf;intmain()A*a=newB(15);deletea;return0;解3、A:A()called.B:B()called.A:A()called.B:B()called.4
14、、#include<iostream>usingnamespacestd;classApublic:voidf()cout<<"CallA'sfunctionf()"<<endl;classBpublic:voidf()cout<<"CallB'sfunctionf()"<<endl;voidg()cout<<"CallB'sfunctiong()"<<endl;classC:publicA,publicBpublic:void
15、g()cout<<"CallC'sfunctiong()"<<endl;intmain()Ccc;cc.B:f();cc.B:g();cc.g();return0;解4、CallB'sfunctionf()CallB'sfunctiong()CallC'sfunctiong()四、編程題(27分)1、(10分)已知復數類Complex的聲明如下:classComplexpublic:Complex();/無參構造函數Complex(double);/轉換構造函數Complex(double,double);/有兩個形參
16、的構造函數friendComplexoperator+(Complex&,Complex&);/對“+”運算符進行重載friendostream&operator<<(ostream&,Complex&);/對“<<”運算符進行重載friendistream&operator>>(istream&,Complex&);/對“>>”運算符進行重載private:doublereal,imag;要求:(1)寫出該類的所有構造函數的類外定義代碼。(2)寫出對運算符“+”、“<<
17、”、“>>”進行重載的運算符重載函數的定義。2、(17分)下列Shap啖是一個表示形狀的抽象類,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
18、),圓類和正方形類都有構造函數,修改、顯示數據成員值的函數,求面積函數。(2)寫出main()函數,計算半徑為5.5的圓和邊長為9.9的正方形的面積和(必須通過調用total函數計算)。四、編程題(共27分)1、 (10分)Complex:Complex()real=0;imag=0;Complex:Complex(doubler)real=r;Complex:Complex(doubler,doublei)real=r;imag=i;Complexoperator+(Complex&c1,Complex&c2)Complexc;c.real=c1.real+c2.real;c
19、.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<<"input
20、realandimaginarypartofcomplexnumber:"input>>c.real>>c.imag;returninput;2、 (17分)classCircle:publicShapepublic:Circle(doubler)radius=r;voidset()cout<<"Pleaseinputthevalueofthecircle:"<<endl;cin>>radius;voidshow()cout<<"theradiusofthecircle="
21、<<radius<<endl;doublearea()return3.14159*radius*radius;private:doubleradius;classSquare:publicShapepublic:Square(doublea)this->a=a;voidset()cout<<"Pleaseinputthevalueofa:"<<endl;cin>>a;voidshow()cout<<"a="<<a<<endl;doublearea()re
22、turna*a;private:doublea;intmain()CircleC(5.5);C.show();SquareS(9.9);S.show();Shape*s=&C,&S;cout<<"total="<<total(s,2)<<endl;return0;)1、ThankyouverymuchfortakingmewithyouonthatsplendidoutingtoLondon.ItwasthefirsttimethatIhadseentheToweroranyoftheotherfamoussights.IfI'dgonealone,Icouldn'thaveseennearlyasmuch,becauseIwouldn'thaveknownmywayabout.Theweatherwassplendidonthatday,which
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度戰略合作伙伴股東合同模板
- 租賃合同原告代理詞
- 實木門采購合同
- 墓地遷移合同范本
- 上海勞動合同標準文本
- Brand KPIs for ready-made-food Bens Original in Germany-外文版培訓課件(2025.2)
- 繼發性癲癇患者護理
- 帕金森病患者護理查房
- 鉑金飾品典當抵押借款合同書
- 人教版小學二年級上冊數學 第7單元 認識時間 教案
- 考編醫療面試題及答案
- 2025春夏童裝童鞋行業趨勢白皮書
- 天鵝藝術漆施工方案
- 腦卒中患者口腔健康素養的研究進展
- 算力中心的投資與成本分析
- DB37-T 1639.18-2021 山東省重點工業產品用水定額 第18部分:金屬礦采選業重點工業產品
- 污水廠安全培訓
- 青貯飼料購銷合同的注意事項
- 小學STEM教育中的創新實驗室建設
- 《縣域腫瘤防治中心評估標準》
- 人教版六年級上冊英語 Recycle 1 一般將來時復習課教案
評論
0/150
提交評論