C++期末考試試卷及答案_第1頁
C++期末考試試卷及答案_第2頁
C++期末考試試卷及答案_第3頁
C++期末考試試卷及答案_第4頁
C++期末考試試卷及答案_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C + 期 末 考 試 試 卷 及 答 案 1一、單項(xiàng)選擇題(每題2分,共40分)1 .不是屬于面向?qū)ο蟪绦蛟O(shè)計(jì)的特性A. 抽象性 B.數(shù)據(jù)相關(guān)性C.多態(tài)性 D. 繼承性2 .將對某一類數(shù)據(jù)的處理算法應(yīng)用到另一類數(shù)據(jù)的處理中,要用到C+勺A. 類 B. 虛函數(shù)C.運(yùn)算符重載D. 模板3 . C+與C語言最根本的不同之處在于 A.使用了類B.能夠?qū)崿F(xiàn)變量自動(dòng)初始化C.支持軟件重用D. 支持接口重用4 .動(dòng)態(tài)內(nèi)存分配的主要目的是 A.使程序按動(dòng)態(tài)聯(lián)編方式運(yùn)行B.正確合理的使用內(nèi)存C.提升程序的運(yùn)行速度D.提升程序的可維護(hù)性5 .在C+福數(shù)的形參前加const關(guān)鍵字,是為了提升函數(shù)的 A.數(shù)據(jù)封裝性

2、B.可理解性C.可維護(hù)性D. 可重用性6 .函數(shù)重載的目的是A.實(shí)現(xiàn)共享B. 使用方便,提升可讀性C. 提升速度 D. 減少空間7 .從程序片斷:char name = "C+; course(name);可判斷函數(shù) course的調(diào)用采用的是A.傳值調(diào)用B.帶缺省參數(shù)值的函數(shù)調(diào)用C.引用調(diào)用 D. 傳址 調(diào)用8 .用來說明類中公有成員的關(guān)鍵字是 A. public B. privateC. protected D. friend9 .如果一個(gè)類的成員函數(shù)print()不修改類的數(shù)據(jù)成員值,那么應(yīng)將其聲明為A. void print() const;B. const void pri

3、nt();C. void const print();D. void print(const);10 .以下關(guān)于構(gòu)造函數(shù)的論述中,不正確的選項(xiàng)是A.構(gòu)造函數(shù)的函數(shù)名與類名相同B.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)C.構(gòu)造函數(shù)的返回類型缺省為int型 D.構(gòu)造函數(shù)可以重載中,this的類型11 .在程序代碼:A:A(int a, int *b) this->x = a; this->y = b; A. int B. int *C. AD. A *試圖釋放一個(gè)已經(jīng)釋放了的動(dòng)態(tài)分D.動(dòng)態(tài)分配的堆內(nèi)存在程序退出后C.公有成員數(shù)據(jù)D. 公有沒有this指針只能用對象名來調(diào)用那么該成員函數(shù)沒有this指

4、針只能用對象名來調(diào)用重載函數(shù)D. 模板函12 .內(nèi)存泄漏是指 A. 內(nèi)存中的數(shù)據(jù)出現(xiàn)喪失B.配的堆內(nèi)存C.函數(shù)中局部變量所占的棧內(nèi)存沒有及時(shí)回收 始終被占用A. 私有成員數(shù)據(jù) B. 私有成員函數(shù)成員函數(shù)14 . 友元函數(shù)A.可以被聲明為constB.C.可以用類名或?qū)ο竺麃碚{(diào)用D.15 .假設(shè)一個(gè)類的成員函數(shù)前用static 關(guān)鍵字修飾,A.可以被聲明為constB.C.可以訪問該類的所有成員D.16 . C+是用 實(shí)現(xiàn)接口重用的A.內(nèi)聯(lián)函數(shù)B. 虛函數(shù)C.數(shù)17 .公有繼承的派生類對象可以訪問其基類的 A.公有成員B.公有成員及受保護(hù)成員C.受保護(hù)成員D. 私有成員18 .設(shè)置虛基類的目的是

5、A.簡化程序B.使程序按動(dòng)態(tài)聯(lián)編方式運(yùn)行C.提升程序運(yùn)行效率D.消除二義性19 .以下關(guān)于純虛函數(shù)和抽象類的描述中,不正確的選項(xiàng)是 A.純虛函數(shù)是一個(gè)沒有具體實(shí)現(xiàn)的虛函數(shù)B.抽象類是包括純虛函數(shù)的類C.抽象類只能作為基類,其純虛函數(shù)的實(shí)現(xiàn)在派生類中給出D.可以定義一個(gè)抽象類的對象20.關(guān)于運(yùn)算符重載的不正確的描述是 A.運(yùn)算符重載函數(shù)是友元函數(shù)B.表達(dá)了程序設(shè)計(jì)的多態(tài)性C.增加新的運(yùn)算符D.使運(yùn)算符能對對象操作二、下面的程序是關(guān)于 CBook類的一個(gè)定義,試改正程序中的錯(cuò)誤.(共10分)#include <iostream.h>#include <math.h> #in

6、lcude <string> class CBookprivate:char *p_book;public:p_book=new charstrlen(p_val)+1CBook(const char *p_val) p_book = new charstrlen(p_val); strcpy(p_book, p_val); void print() const cout << p_book << endl; CBook() delete p_book; ;一void main()char book_title60;CBook *p_book_obj;cou

7、t <<"Enter book title:" ;cin >> p;CBook abook(p);p_book_obj = &abook; p_book_obj->print();)三、根據(jù)如下所示程序,答復(fù)以下問題(共 10分)#include <iostream.h> class CJournal public:CJournal () cout <<" Journal default constructor << endl; virtual void subscribe() = 0;vo

8、id read () cout <<" Read paper << endl; CJournal () cout <<" Journal default destructor << endl; ;class CComputerDesign : public CJournal public:CComputerDesign () cout << “?Computer Design »default constructor << endl; virtual void subscribe () cou

9、t << aSubscribing «Computer Design? << endl; void read () cout << a Reading «Computer Design »<< endl; CComputerDesign() cout << " «Computer Design» default destructor << endl; ;void main() CComputerDesign journal1;CJournal *p_journal

10、;journal1.subscribe();journal1.read();/p_journal = &journal1;p_journal->subscribe();p_journal->read();1 .當(dāng)程序運(yùn)行到處時(shí),寫出程序運(yùn)行的輸出結(jié)果(3分)2 .當(dāng)程序結(jié)束時(shí),程序會在第1問的根底上增加哪些輸出.(4分)3 .假設(shè)在主函數(shù)中定義一個(gè)對象CJournal journal;程序編譯時(shí)會否出錯(cuò)?為什么? (3分)四、編程題(共40分)1 .定義一個(gè)商品類 CGoods其中包含商品號(long no)、商品名(char *p_name)、商品價(jià)格 (double p

11、rice)三個(gè)數(shù)據(jù)成員,以及相應(yīng)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、打印數(shù)據(jù)成員的 成員函數(shù).(10分)#include <iostream>#include <string.h>using namespace std;class CCourse ( private:long no;char *p_name;float credit;public:CCourse(long no_val,char p_val,float credit_val);CCourse(const CCourse &r_course); -CCourse()delete p_name; v

12、oid print() const;CCourse:CCourse(long no_val,char p_val,float credit_val) no=no_val;p_name=new charstrlen(p_val)+1; strcpy(p_name,p_val);credit=credit_val; CCourse:CCourse(const CCourse &r_course) no=r_course.no;p_name=new charstrlen(r_course.p_name)+1; strcpy(p_name,r_course.p_name);credit=r_c

13、ourse.credit; void CCourse:print() const cout<<"Course number"<<no<<endl;cout<<"Course name"<<p_name<<endl; cout<<"Course credit"<<credit<<endl; 2 .為CGood段增加一個(gè)商品總數(shù)(int count)數(shù)據(jù)成員,并增加一個(gè)成員函數(shù) getCount()獲取 count的值,編寫一個(gè)友元

14、函數(shù)getName()獲取商品名稱p_name做如上修改后,重新實(shí)現(xiàn)CGoods 類(與第1問相同的不用再重復(fù)).(10分)3 .為CGood段定義小于運(yùn)算符('<')和不小于運(yùn)算符('>=')兩個(gè)運(yùn)算符重載函數(shù).CGoods 類對象大小的比擬是根據(jù)其商品價(jià)格(price)的值的大小來實(shí)現(xiàn)的.(與第2問相同的不用再重復(fù))(10分)4 .以CGood恭為基類,派生出服裝類 CClothes和食品類CFood兩個(gè)派生類,并在這兩個(gè)類中 分別增加一個(gè)表示品牌的指針數(shù)據(jù)成員(char *p_brand)和表示用途的成員函數(shù)(void usedFor()可分別

15、輸出一條表示服裝和食品用途的信息).寫出CClothes類和CFood類的完整定義(包括構(gòu)造、析構(gòu)和usedFor()成員函數(shù)的實(shí)現(xiàn)).(10分)五、附加題(共30分.注意:保證基此題成績能到達(dá)75分以上,再嘗試做附加題!) 1.在基此題第四題的根底上,在CGoods增力總商品數(shù)(long total_goods)和商品總價(jià)格(double total_price)兩個(gè)數(shù)據(jù)成員,以及相應(yīng)的獲取這兩個(gè)數(shù)據(jù)成員值的成員函數(shù)getTotalGoods()和getTotalPrice().(注意說明數(shù)據(jù)成員和成員函數(shù)的存儲類型,以便能夠用類名來調(diào)用 getTotalGoods()和getTotalPr

16、ice() 這兩個(gè)函數(shù)).為了能夠采用動(dòng)態(tài)聯(lián)編的方式調(diào)用派生類的 usedFor()成員函數(shù),應(yīng)該在 CGood恭及其派生類 CClothes和CFood類中作何改動(dòng)? (15分) 2.編寫一個(gè)實(shí)現(xiàn)兩個(gè)數(shù)交換的函數(shù)模板swap,然后使用該函數(shù)模板再編寫一個(gè)對具有n個(gè)數(shù)組元素(通用類型)的數(shù)組采用冒泡排序算法進(jìn)行排序的函數(shù)模板.(15分)試卷參考答案一、單項(xiàng)選擇題1-5. BDABC 6-10. BDAAC11-15. CADBB 16-20. CADDA(每題答對2分,不答0分,答錯(cuò)0分)#include <math.h> 改為 #include <string.h>p

17、_book = new charstrlen(p_val) 改為 p_book = new charstrlen(p_val)+1CBook abook;改為 CBook abook(p);p_book_obj = abook 改為 p_book_obj = &abook;p_book_obj.print() 改為 p_book_obj->print();(該對得2分,未改或改錯(cuò)得0分,正確之處該成錯(cuò)誤倒扣1分)三、1. Journal default constructor<<Computer Design>> default constructorSu

18、bscribing <<Computer Design>>Reading <<Computer Design>>(全部答對得3分,答錯(cuò)或漏答一條輸出扣1分)2. Subscribing <<Computer Design>>Reading paper<<Computer Design>> default destructorJournal default destructor(全部答對得4分,答錯(cuò)或漏答一條輸出扣1分)3.會出錯(cuò),由于CJournal中包含有純虛函數(shù),故 CJournal是抽象類,不

19、能定義抽象類 對象.(答對編譯會出錯(cuò)得1分,答對原因得2分.)四、1 . #include <iostream>#include <string.h>using namespace std;class CCourseprivate:long no;char *p_name;float credit;public:CCourse(long no_val, char *p_val, float credit_val);CCourse(const CCourse &r_course);CCourse() delete p_name; void print() cons

20、t;CCourse:CCourse(long no_val, char *p_val, float credit_val)no = no_val;p_name = new charstrlen(p_val)+1;strcpy(p_name, p_val);credit = credit_val;CCourse:CCourse(const CCourse &r_course)no = r_course.no;p_name = new charstrlenr_course.p_name+1;strcpyp_name, r_course.p_name;credit = r_course.cr

21、edit;void CCourse:print constcout << "Course number: " << no << endl;cout << "Course name: " << p_name << endl;cout << "Course credit: " << credit << endl;數(shù)據(jù)成員定義正確得2分,局部正確得1分,不正確得0分每個(gè)成員函數(shù)定義正確得2分,每個(gè)成員函數(shù)有小錯(cuò)誤扣1分,完全不正確不得

22、分2 .在class CCourse定義中增加一條:private:static int total_course;答對得1分,未加static 得0分在類外部增加一條:int CCourse:total_course = 0;答對得1分,答錯(cuò)或漏答得0分在CCourse類的構(gòu)造函數(shù)中增加一條:total_course+;答對得1分在CCourse類的拷貝構(gòu)造函數(shù)中增加一條:total_course+;答對得1分在CCourse類的析構(gòu)函數(shù)中增加一條:total_course-;答對得1分在class CCourse定義中增加一條:public:static getTotalCourse re

23、turn total_course; 答對得2分,未加static 得1分在class CCourse定義中增加一條:friend char *getCourseNameconst CCourse &r_course;答對得1分,未加friend得0分在類外部定義:char *getCourseNameconst CCourse &r_coursereturn r_course.p_name;答對得2分3 .在class CCourse定義中增加一條:public:bool operator const CCourse &r_course;答對得2分在類外部定義:boo

24、l CCourse:operator const CCourse &r_courseif (credit < r_course.credit)return true;elsereturn false;)(答對得3分)在class CCourse 定義中增加一條:public:bool operator >=(const CCourse &r_course);(答對得2分)在類外部定義:bool CCourse:operator >=(const CCourse &r_course)(if (credit >= r_course.credit)re

25、turn true;elsereturn false;)4.(答對得3分)class CHLP : public CCourse(private:char *p_openby;public:CHLP(long no_val, char *p_val, float credit_val, char *p_open)CCourse(no_val, p_val, credit_val)p_openby = new charstrlen(p_open)+1;strcpy(p_openby, p_open);CHLP() delete p_openby; void studyFor() cout <

26、;< "Study for structured programming" << endl; ;(答對得5分,其中構(gòu)造函數(shù)3分,析構(gòu)函數(shù)1分,studyFor()函數(shù)1分)class COOP : public CCourseprivate:char *p_openby;public:COOP(long no_val, char *p_val, float credit_val, char *p_open)CCourse(no_val, p_val, credit_val)p_openby = new charstrlen(p_open)+1;strcpy

27、(p_openby, p_open);COOP() delete p_openby; voidstudyFor() cout << "Study for object oriented programming" << endl; );(答對得5分,其中構(gòu)造函數(shù)3分,析構(gòu)函數(shù)1分,studyFor()函數(shù)1分)五、1. 在class CCourse定義中增加一條:public:virtual void studyFor() cout << "study for degreen" (答對得2分)增加:#include &l

28、t;stdlib.h>主函數(shù)可定義為:void main()char choice, instructor10;float credit;long id;CCourse *p_course;cout << "Select course:n"cout << "1. for High Level Language Programmingn"cout << "2. for Object Oriented Programmingn"cin >> choice;cout << "Enter course number: "cin >> id;cout << "Enter

溫馨提示

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

評論

0/150

提交評論