大學(xué)C++期末考試試卷

上傳人:20****08 文檔編號:59598164 上傳時(shí)間:2022-03-03 格式:DOC 頁數(shù):14 大?。?9.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
大學(xué)C++期末考試試卷_第1頁
第1頁 / 共14頁
大學(xué)C++期末考試試卷_第2頁
第2頁 / 共14頁
大學(xué)C++期末考試試卷_第3頁
第3頁 / 共14頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大學(xué)C++期末考試試卷》由會員分享,可在線閱讀,更多相關(guān)《大學(xué)C++期末考試試卷(14頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 一、單項(xiàng)選擇題(每題2分,共40分)1-5. BDABC 6-10. BDAAC 11-15. CADBB 16-20. CADDA B 1. ______不是屬于面向?qū)ο蟪绦蛟O(shè)計(jì)的特性 A. 抽象性 B. 數(shù)據(jù)相關(guān)性 C. 多態(tài)性 D. 繼承性 D 2. 將對某一類數(shù)據(jù)的處理算法應(yīng)用到另一類數(shù)據(jù)的處理中,要用到C++的______ A. 類 B. 虛函數(shù) C. 運(yùn)算符重載

2、 D. 模板 A 3. C++與C語言最根本的不同之處在于_______ A. 使用了類 B. 能夠?qū)崿F(xiàn)變量自動初始化 C. 支持軟件重用 D. 支持接口重用 B 4. 動態(tài)內(nèi)存分配的主要目的是_______ A. 使程序按動態(tài)聯(lián)編方式運(yùn)行 B. 正確合理的使用內(nèi)存 C. 提高程序的運(yùn)行速度 D. 提高程序的可維護(hù)性 C 5. 在C++函數(shù)的形參前加const關(guān)鍵字,是為了提高函數(shù)的_______ A. 數(shù)據(jù)封裝性

3、B. 可理解性 C. 可維護(hù)性 D. 可重用性 B 6. 函數(shù)重載的目的是________ A. 實(shí)現(xiàn)共享 B. 使用方便,提高可讀性 C. 提高速度 D. 減少空間 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)用 A 8. 用來說明類中公有成員的關(guān)鍵字是________

4、 A. public B. private C. protected D. friend A 9. 如果一個(gè)類的成員函數(shù)print()不修改類的數(shù)據(jù)成員值,則應(yīng)將其聲明為 A. void print() const; B. const void print(); C. void const print(); D. void print(const); C 10. 下列關(guān)于構(gòu)造函數(shù)的論述中,不正確的是_

5、______ A. 構(gòu)造函數(shù)的函數(shù)名與類名相同 B. 構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù) C. 構(gòu)造函數(shù)的返回類型缺省為int型 D. 構(gòu)造函數(shù)可以重載 C 11. 在程序代碼:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的類型是______ A. int B. int * C. A D. A * A 12. 內(nèi)存泄漏是指_______ A. 內(nèi)存中的數(shù)

6、據(jù)出現(xiàn)丟失 B.試圖釋放一個(gè)已經(jīng)釋放了的動態(tài)分配的堆內(nèi)存 C. 函數(shù)中局部變量所占的棧內(nèi)存沒有及時(shí)回收 D. 動態(tài)分配的堆內(nèi)存在程序退出后始終被占用 D 13. 從程序片斷:student zhangsan("張三","M",22); zhangsan.id("");可判斷id是一個(gè)________ A. 私有成員數(shù)據(jù) B. 私有成員函數(shù) C. 公有成員數(shù)據(jù) D. 公有成員函數(shù) B 14. 友元函數(shù)_______ A. 可以被聲明為const

7、 B. 沒有this指針 C. 可以用類名或?qū)ο竺麃碚{(diào)用 D. 只能用對象名來調(diào)用 B 15. 若一個(gè)類的成員函數(shù)前用static關(guān)鍵字修飾,則該成員函數(shù)________ A. 可以被聲明為const B. 沒有this指針 C. 可以訪問該類的所有成員 D. 只能用對象名來調(diào)用 C 16. C++是用_______實(shí)現(xiàn)接口重用的 A. 內(nèi)聯(lián)函數(shù) B. 虛函數(shù) C. 重載函數(shù) D. 模

8、板函數(shù) A 17. 公有繼承的派生類對象可以訪問其基類的________ A. 公有成員 B. 公有成員及受保護(hù)成員 C. 受保護(hù)成員 D. 私有成員 D 18. 設(shè)置虛基類的目的是________ A. 簡化程序 B. 使程序按動態(tài)聯(lián)編方式運(yùn)行 C. 提高程序運(yùn)行效率 D. 消除二義性 D 19. 下列關(guān)于純虛函數(shù)和抽象類的描述中,不正確的是________ A. 純虛函數(shù)是一個(gè)沒有具體實(shí)現(xiàn)的虛函數(shù) B. 抽象類是包括純虛函數(shù)的類 C. 抽象類只能作為基類,其純虛函數(shù)的實(shí)現(xiàn)在派生類中給

9、出 D. 可以定義一個(gè)抽象類的對象 A 20. 關(guān)于運(yùn)算符重載的不正確的描述是________ A. 運(yùn)算符重載函數(shù)是友元函數(shù) B. 體現(xiàn)了程序設(shè)計(jì)的多態(tài)性 C. 增加新的運(yùn)算符 D. 使運(yùn)算符能對對象操作 二、下面的程序是關(guān)于CBook類的一個(gè)定義,試改正程序中的錯(cuò)誤。(共10分) #include #include #inlcude class CBook { private: char *

10、p_book; public: p_book=new char[strlen(p_val)+1] CBook(const char *p_val) { p_book = new char[strlen(p_val)]; strcpy(p_book, p_val); } void print() const { cout << p_book << endl; } ~CBook() { delete [] p_book; } }; void main() { char book_title[60]; CBook *p_book_obj; cout << “Enter

11、 book title: ”; cin >> p; CBook abook(p); p_book_obj = &abook; p_book_obj->print(); } 三、根據(jù)如下所示程序,回答下列問題(共10分) #include class CJournal { public: CJournal() { cout << “Journal default constructor” << endl; } virtual void subscribe() = 0; void read() { cout << “R

12、ead paper” << endl; } ~CJournal() { cout << “Journal default destructor” << endl; } }; class CComputerDesign : public CJournal { public: CComputerDesign () {cout << “《Computer Design》default constructor” << endl; } virtual void subscribe() { cout << “Subscribing 《Computer Design》” << endl; }

13、 void read() {cout << “Reading 《Computer Design》” << endl; } ~CComputerDesign() { cout << “《Computer Design》default destructor” << endl; } }; void main() { CComputerDesign journal1; CJournal *p_journal; journal1.subscribe(); journal1.read(); // ① p_journal = &journal1; p_journal->subscri

14、be(); p_journal->read(); } 1.當(dāng)程序運(yùn)行到①處時(shí),寫出程序運(yùn)行的輸出結(jié)果 (3分) 2. 當(dāng)程序結(jié)束時(shí),程序會在第1問的基礎(chǔ)上增加哪些輸出。 (4分) 3. 若在主函數(shù)中定義一個(gè)對象CJournal journal;程序編譯時(shí)會否出錯(cuò)?為什么?(3分) 四、編程題(共40分) 1. 定義一個(gè)商品類CGoods,其中包含商品號(long no)、商品名(char *p_name)、商品價(jià)格(double price)三個(gè)數(shù)據(jù)成員,以及相應(yīng)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、打印數(shù)據(jù)成員的成員函數(shù)。(10分) #inc

15、lude #include 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;} void print() const; }; CCourse

16、:CCourse(long no_val,char p_val,float credit_val) { no=no_val; p_name=new char[strlen(p_val)+1]; strcpy(p_name,p_val); credit=credit_val; } CCourse:CCourse(const CCourse &r_course) { no=r_course.no; p_name=new char[strlen(r_course.p_name)+1]; strcpy(p_name,r_cou

17、rse.p_name); credit=r_course.credit; } void CCourse:print() const { cout<<"Course number"<

18、nt的值,編寫一個(gè)友元函數(shù)getName()獲取商品名稱p_name。做如上修改后,重新實(shí)現(xiàn)CGoods類(與第1問相同的不用再重復(fù))。(10分) 3. 為CGoods類定義小于運(yùn)算符(‘<’)和不小于運(yùn)算符(‘>=’)兩個(gè)運(yùn)算符重載函數(shù)。CGoods類對象大小的比較是根據(jù)其商品價(jià)格(price)的值的大小來實(shí)現(xiàn)的。(與第2問相同的不用再重復(fù))(10分) 4. 以CGoods類為基類,派生出服裝類CClothes和食品類CFood兩個(gè)派生類,并在這兩個(gè)類中分別增加一個(gè)表示

19、品牌的指針數(shù)據(jù)成員(char *p_brand)和表示用途的成員函數(shù)(void usedFor()——可分別輸出一條表示服裝和食品用途的信息)。寫出CClothes類和CFood類的完整定義(包括構(gòu)造、析構(gòu)和usedFor()成員函數(shù)的實(shí)現(xiàn))。(10分) 五、附加題(共30分。注意:確?;绢}成績能達(dá)到75分以上,再嘗試做附加題!) 1. 在基本題第四題的基礎(chǔ)上,在CGoods類增加總商品數(shù)(long total_goods)和商品總價(jià)格(double total_price)兩個(gè)數(shù)據(jù)成員,以及相應(yīng)的獲取這兩個(gè)數(shù)據(jù)成員值的成員函數(shù)

20、getTotalGoods()和getTotalPrice()。(注意說明數(shù)據(jù)成員和成員函數(shù)的存儲類型,以便能夠用類名來調(diào)用getTotalGoods()和getTotalPrice()這兩個(gè)函數(shù))。為了能夠采用動態(tài)聯(lián)編的方式調(diào)用派生類的usedFor()成員函數(shù),應(yīng)該在CGoods類及其派生類CClothes和CFood類中作何改動? (15分) 2. 編寫一個(gè)實(shí)現(xiàn)兩個(gè)數(shù)交換的函數(shù)模板swap,然后使用該函數(shù)模板再編寫一個(gè)對具有n個(gè)數(shù)組元素(通用類型)的數(shù)組采用冒泡排序算法進(jìn)行排序的

21、函數(shù)模板。(15分) 一、單項(xiàng)選擇題 1-5. BDABC 6-10. BDAAC 11-15. CADBB 16-20. CADDA (每小題答對2分,不答0分,答錯(cuò)0分) 二、 #include 改為#include p_book = new char[strlen(p_val)]改為p_book = new char[strle

22、n(p_val)+1] CBook 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 <> default constructor Subscribing <> Reading <

23、mputer Design>> (全部答對得3分,答錯(cuò)或漏答一條輸出扣1分) 2. Subscribing <> Reading paper <> default destructor Journal default destructor (全部答對得4分,答錯(cuò)或漏答一條輸出扣1分) 3. 會出錯(cuò),因?yàn)镃Journal中包含有純虛函數(shù),故CJournal是抽象類,不能定義抽象類對象。 (答對編譯會出錯(cuò)得1分,答對原因得2分。) 四、 1.

24、 #include #include 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);

25、 ~CCourse() { delete p_name; } void print() const; }; CCourse::CCourse(long no_val, char *p_val, float credit_val) { no = no_val; p_name = new char[strlen(p_val)+1]; strcpy(p_name, p_val); credit = credit_val; } CCourse::CC

26、ourse(const CCourse &r_course) { no = r_course.no; p_name = new char[strlen(r_course.p_name)+1]; strcpy(p_name, r_course.p_name); credit = r_course.credit; } void CCourse::print() const { cout << "Course number: " << no << endl;

27、 cout << "Course name: " << p_name << endl; cout << "Course credit: " << credit << endl; } (數(shù)據(jù)成員定義正確得2分,部分正確得1分,不正確得0分 每個(gè)成員函數(shù)定義正確得2分,每個(gè)成員函數(shù)有小錯(cuò)誤扣1分,完全不正確不得分) 2. 在class CCourse定義中增加一條: private: static int total_course; (答對得1分,未加static得0分)

28、 在類外部增加一條: 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分) 在cl

29、ass CCourse定義中增加一條: public: static getTotalCourse() { return total_course; } (答對得2分,未加static得1分) 在class CCourse定義中增加一條: friend char *getCourseName(const CCourse &r_course); (答對得1分,未加friend得0分) 在類外部定義: char *getCourseName(const CCo

30、urse &r_course) { return r_course.p_name; } (答對得2分) 3. 在class CCourse定義中增加一條: public: bool operator <(const CCourse &r_course); (答對得2分) 在類外部定義: bool CCourse::operator <(const CCourse &r_course) {

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

32、erator >=(const CCourse &r_course) { if (credit >= r_course.credit) return true; else return false; } (答對得3分) 4. class CHLP : public CCourse { private: char *p_openby; public:

33、 CHLP(long no_val, char *p_val, float credit_val, char *p_open) : CCourse(no_val, p_val, credit_val) { p_openby = new char[strlen(p_open)+1]; strcpy(p_openby, p_open); } ~CHLP() { delete p_openby; } void studyFor() { cout << "Study

34、for structured programming" << endl; } }; (答對得5分,其中構(gòu)造函數(shù)3分,析構(gòu)函數(shù)1分,studyFor()函數(shù)1分) class COOP : public CCourse { private: char *p_openby; public: COOP(long no_val, char *p_val, float credit_val, char *p_open) : CCourse(no_val, p_val, credit_val)

35、 { p_openby = new char[strlen(p_open)+1]; strcpy(p_openby, p_open); } ~COOP() { delete p_openby; } void studyFor() { cout << "Study for object oriented programming" << endl; } }; (答對得5分,其中構(gòu)造函數(shù)3分,析構(gòu)函數(shù)1分,studyFor()函數(shù)1分) 五、 1. 在cl

36、ass CCourse定義中增加一條: public: virtual void studyFor() { cout << "study for degree\n"; } (答對得2分) 增加: #include 主函數(shù)可定義為: void main() { char choice, instructor[10]; float credit; long id; CCourse *p_course;

37、 cout << "Select course:\n"; cout << "1. for High Level Language Programming\n"; cout << "2. for Object Oriented Programming\n"; cin >> choice; cout << "Enter course number: "; cin >> id; cout << "Enter credit: "; cin >> credit;

38、 cout << "Enter instructor name: "; cin >> instructor; switch (choice) { case '1': p_course = new CHLP(id, "高級語言程序設(shè)計(jì)", credit, instructor); break; case '2': p_course = new COOP(id, "面向?qū)ο蟪绦蛟O(shè)計(jì)", credit, ins

39、tructor); break; default: exit(0); } p_course->studyFor(); delete p_course; } (答對得13分) 2. #include using namespace std; template void swap(T &a, T &b) { T temp; temp = a; a = b; b = t

40、emp; } template void bubbleSort(T a[], int n) { int i, j; for (i=1; i < n; i++) for (j=0; j < n-i; j++) if (a[j] > a[j+1]) swap(a[j], a[j+1]); } template void print(T1 a[], int n) { for (int i=0; i < n; i++) cout << a[i] << " "; cout << endl; } void main() { int a[] = {2, 3, 1, 6, 43, 22}; double b[] = {2.3, 3.2, 1.6, -6.0, 4.3, 2.2}; print(a, 6); bubbleSort(a, 6); print(a, 6); print(b, 6); bubbleSort(b, 6); print(b, 6); (答對得15分) 專心---專注---專業(yè)

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!