華工C++II試卷及答案_第1頁
華工C++II試卷及答案_第2頁
華工C++II試卷及答案_第3頁
華工C++II試卷及答案_第4頁
華工C++II試卷及答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

精品文檔姓名 學(xué)號 學(xué)院 專業(yè) 座位號 ( 密 封 線 內(nèi) 不 答 題 )密封線線_ _ 誠信應(yīng)考,考試作弊將帶來嚴(yán)重后果! 華南理工大學(xué)期末考試高級語言程序設(shè)計(2)試卷A注意事項:1. 考前請將密封線內(nèi)各項信息填寫清楚; 2. 所有答案寫在答題紙上,答在其它地方無效; 3. 試卷可做草稿紙,試卷必須與答題紙同時提交;4考試形式:閉卷; 5. 本試卷共五大題,滿分100分,考試時間120分鐘。一.單項選擇題(每題2分,共20分).1在C+中,有關(guān)類和對象正確說法是( A )。.精品文檔A對象是類的一個實例 B對象是類的存儲空間C一個類只能有一個對象 D類是程序包,對象是存儲空間2在類定義中,稱為接口的成員是( C )。A. 所有類成員B. private或protected的類成員C. public的類成員D. public或private的類成員3. 一個類的友員函數(shù)能夠通過( D )訪問該類的所有成員。A靜態(tài)數(shù)據(jù) B析構(gòu)造函數(shù) Cthis指針 D類對象參數(shù)4. 下面描述錯誤的是( B )。A自定義構(gòu)造函數(shù)應(yīng)該是公有成員函數(shù) B構(gòu)造函數(shù)可以是虛函數(shù)C構(gòu)造函數(shù)在建立對象時自動調(diào)用執(zhí)行 D構(gòu)造函數(shù)可以重載5. 在類的繼承關(guān)系中,基類的( B )成員在派生類中可見。A. 所有B. public和protectedC. 只有publicD. 只有protected6設(shè)B類是A類的派生類,有說明語句 A a, *ap; B b, *bp; 則以下正確語句是( C )。A. a=b;B. b=a;C. ap=&b;D. bp=&a;7C+中,以下( D )語法形式不屬于運行時的多態(tài)。A. 根據(jù)if語句的求值決定程序流程 B. 根據(jù)基類指針指向?qū)ο笳{(diào)用成員函數(shù)C. 根據(jù)switch語句的求值決定程序流程 D. 根據(jù)參數(shù)個數(shù)、類型調(diào)用重載函數(shù)8. 假設(shè)對A類定義一個重載“+”號運算符的成員函數(shù),以便實現(xiàn)兩個A類對象的加法,并返回相加結(jié)果,則該成員函數(shù)的函數(shù)原型為( B )。AA operator +( const A &A1, const A &A2 ); BA A: operator +( const A &A2 );CA:operator +( A &A2 ); DA A:operator +( );9. 一個類模板定義了靜態(tài)數(shù)據(jù)成員,則( A )。A每一個實例化的模板類都有一個自己的靜態(tài)數(shù)據(jù)成員。B每一個實例化的對象都有一個自己的靜態(tài)數(shù)據(jù)成員。C它的類型必須是類模板定義的抽象類型。D所有模板類的對象公享一個靜態(tài)數(shù)據(jù)成員。10讀一個C+數(shù)據(jù)文件,要創(chuàng)建一個( A )流對象。AifstreamBofstreamCcin Dcout二簡答題(每小題4分,共20分)1有右圖所示類格。類X中有數(shù)據(jù)成員int a。根據(jù)以下函數(shù)注釋的編譯信息,分析int X:a的訪問特性,class Y對class X和class Z對class Y的繼承性質(zhì)。class Xclass Yclass Z void Y:funY() coutaendl; /正確void Z:funX() coutaendl; /錯誤void main() X x; Y y; Z z; coutx.aendl;/正確 couty.aendl;/錯誤 coutz.aendl;/錯誤int X:a是class X的public數(shù)據(jù)成員,class Y為protected繼承class X,class Z為private繼承class Y。2有人定義一個教師類派生一個學(xué)生類。他認(rèn)為“姓名”和“性別”是教師、學(xué)生共有的屬性,聲明為public,“職稱”和“工資”是教師特有的,聲明為private。在學(xué)生類中定義特有的屬性“班級”和“成績”。所以有class teacher public:char name20; char sex; private:char title20; double salary;class student : public teacher private: char grade20 ; int score;你認(rèn)為這樣定義合適嗎?請做出你認(rèn)為合理的類結(jié)構(gòu)定義。class person public:char name20; char sex;class teacher : public person private:char title20; double salary;class student : public person private: char grade20 ; int score;3有類定義class Test int a,b; public:Test ( int m, int n ) a=m; b=n; void Set( int m, int n ) a=m; b=n; /;有人認(rèn)為“Test和Set函數(shù)的功能一樣,只要定義其中一個就夠了”。這種說法正確嗎?為什么?帶參數(shù)的構(gòu)造函數(shù)用于建立對象數(shù)據(jù)初始化,成員函數(shù)用于程序運行時修改數(shù)據(jù)成員的值。4若有聲明template class Tclass /*/ ;建立一個Tclass對象用以下語句Tclass Tobj;有錯誤嗎?若出錯,請分析原因,并寫出一個正確的說明語句。沒有實例化類屬參數(shù)。Tclass Tobj;5C+的文本文件可以用binary方式打開嗎?若有以下語句fstream of(d:testfile, ios:out|ios:binary);double PI=3.1415;請寫出把PI的值寫入文件d:testfile末尾的語句。可以。of.seekp(0,ios:end);of.write(char*)&PI, sizeof(double);三.閱讀下列程序,寫出執(zhí)行結(jié)果(每題6分,共24分) 1.#include /運算符重載enum BoolConst False=0 , True=1 ;/定義枚舉類型class Boolean public:Boolean(BoolConst x = False) logic = x; void print() const logic? cout TRUE : cout FALSE ; friend Boolean operator +(const Boolean & obj1, const Boolean & obj2);friend Boolean operator *(const Boolean & obj1, const Boolean & obj2); protected: BoolConst logic;Boolean operator+ ( const Boolean & obj1, const Boolean & obj2 ) return (obj1.logic|obj2.logic)?Boolean(True):Boolean(False); Boolean operator* ( const Boolean & obj1, const Boolean & obj2 ) return (obj1.logic & obj2.logic) ? Boolean(True) : Boolean(False); void main() Boolean a(False), b(True), c, d ; c = a * b; d = a + b; a.print(); b.print(); c.print(); d.print(); coutendl; FALSE TRUE FALSE TRUE 2.#include /模板,靜態(tài)數(shù)據(jù)成員template class List public: List(T x=0) data = x; void append(List *node ) node-next=this; next=NULL; total+; List *getnext() return next; T getdata() return data; static int total; private: T data; List *next;template int List:total=0;void main() int i, n=5; List headnode; List *p, *last; last = &headnode; for( i=1; i=n; i+ ) p = new List(i*2); p-append( last ); last = p; p = headnode.getnext(); while( p ) cout getdata() getnext(); coutendl; couttotal=List:totalendl;24 6 8 10Total=53.#include /類成員#includeclass Point public: Point(int x1=0, int y1=0) x = x1; y = y1; coutPoint構(gòu)造函數(shù)n; int GetX() return x; int GetY() return y; private: int x;int y;class Distance public: Distance(Point xp1, Point xp2); double GetDis() return dist; private: Point p1; Point p2; double dist;Distance:Distance(Point xp1, Point xp2): p1(xp1), p2(xp2) coutDistance構(gòu)造函數(shù)n; double x = double(p1.GetX() - p2.GetX(); double y = double(p1.GetY() - p2.GetY(); dist = sqrt(x * x + y * y);void main() Point myp1(0,0), myp2(0,20); Distance mydist(myp1,myp2); coutThe distance is mydist.GetDis()endl;Point構(gòu)造函數(shù)Point構(gòu)造函數(shù) Distance構(gòu)造函數(shù) The distance is 204. 寫出data.txt中的結(jié)果和屏幕顯示的結(jié)果。#include void main() int a=10; double x=50.5; char str10, fname20 = d:data.txt; fstream iofile(fname,ios:out); if(!iofile) return; iofileData:ta+10 xstrax; coutstring=strna=a, x= xendl;? Data.txt Data:20 50.5輸出string= Data:a=20, x=50.5四. 根據(jù)程序輸出填空。(每空2分,共24分)1./成員和友員#includeclass Time public: Time(int h, int m) hours=h; minutes=m; _(1)_ Time12();void _(2)_ Time24(Time time);friend void private: int hours, minutes;_(3)_ Time12()void Time:if(hours12) couthours-12:minutesPMn ; else couthours:minutesAMn ;void Time24(Time time) cout _(4)_ ; time.hours:time.minutesn void main()Time T1(20,30), T2(10,45); T1.Time12(); Time24(T1); T2.Time12(); Time24(T2);程序輸出:8:30PM20:3010:45AM10:452. /虛繼承#includeclass A public: A(const char *s)coutst; A();class B: (5) A virtual public public: B(const char *s1, const char *s2):A(s1)couts2t;class C: (6) virtual public A public: C(const char *s1, const char *s2):A(s1) couts2t;class D:public B, public C public: D(const char *s1,const char *s2,const char *s3,const char *s4) : (7) A(s1),B(s1,s2),C(s1,s3) couts4t;void main() D *ptr=new D(class A,class B,class C,class D); delete ptr;程序輸出:class Aclass Bclass Cclass D3. #include /繼承#includeclass studentID public:studentID _(8)_/(int d=0)構(gòu)造函數(shù)的默認(rèn)參數(shù) value=d; coutvaluet; ; protected: int value; ;class student : public studentID public: student _(9)_ (char *pname=no name,int ssID=0):studentID(ssID) strncpy(name, pname, sizeof(name); namesizeof(name)-1=0; coutnamen; ; protected: char name20;void main() student s1(Ranry,9818) , s2(Jenny), s3; 程序輸出:9818Ranry0Jenny0 no name4. /多態(tài)#include class p_class int num ; public : void set_num( int val ) num=val; void show_num( ) ;void p_class : show_num( ) coutnum t;void main() p_class ob3, *p ; for( int i=0; ishow_num( ); p=ob (11) ; p-show_num( ); p=ob+2 (12) ; p-show_num( ); p=ob+1程序輸出:15 45 30五、完成程序。(第1小題4分,第2小題8分,共12分)1根據(jù)程序輸出,以最小形式補充A類和B類的成員函數(shù)。#include class A public : /A類的成員函數(shù)virtual A()coutA_object destroyed.n;class B : publ

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論