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

下載本文檔

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

文檔簡介

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

2、性6 函數(shù)重載的目的是 .實現(xiàn)共享使用方便 , 提高可讀性c.提高速度d.減少空間 .從程序片斷: char n me ="c+;course(n m ) ;可判斷函數(shù)course 的調(diào)用采用的是 .傳值調(diào)用 帶缺省參數(shù)值的函數(shù)調(diào)用c 引用調(diào)用 傳址調(diào)用8. 用來說明類中公有成員的關(guān)鍵字是a. pubi b.pr vat . pr tectedd. fri n .如果一個類的成員函數(shù)rin ( )不修改類的數(shù)據(jù)成員值,則應(yīng)將其聲明為a. vo d p in ()c n ;b. c nst void prnt( ); onst);c. voi onst p i t ( ) ; . v

3、idprin ( 1 .下列關(guān)于構(gòu)造函數(shù)的論述中, 不正確的是 a 構(gòu)造函數(shù)的函數(shù)名與類名相同b 構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)c 構(gòu)造函數(shù)的返回類型缺省為int型d 構(gòu)造函數(shù)可以重載11. 在程序代碼 :a: :a (int , i t *b) this->x = ; is >y b ; 中,t is的類型 是 a. ntb.i t*c.a12. 內(nèi)存泄漏是指 內(nèi)存中的數(shù)據(jù)出現(xiàn)丟失b.試圖釋放一個已經(jīng)釋放了的動態(tài)分配的堆內(nèi)存 .函數(shù)中局部變量所占的棧內(nèi)存沒有及時回收 .動態(tài)分配的堆內(nèi)存在程序退出后始終被占用1 .從程序片斷: st de t zha g an(" 張三 &qu

4、ot;, m ,2 );zhan . d("20 31 ");可判斷 i 是一個 _ _a. 私有成員數(shù)據(jù)私有成員函數(shù)c.公有成員數(shù)據(jù)d.公有成員函數(shù) 4.友元函數(shù) _ _a.可以被聲明為c nsb.沒有 his指針 .可以用類名或?qū)ο竺麃碚{(diào)用d只能用對象名來調(diào)用1 .若一個類的成員函數(shù)前用s at c 關(guān)鍵字修飾,則該成員函數(shù)_ a.可以被聲明為c nstb.沒有 thi指針c. 可以訪問該類的所有成員 .只能用對象名來調(diào)用c+是用 _實現(xiàn)接口重用的a. 內(nèi)聯(lián)函數(shù)b 虛函數(shù) .重載函數(shù)d.模板函數(shù)17. 公有繼承的派生類對象可以訪問其基類的 a. 公有成員b.公有成員及受

5、保護(hù)成員c 受保護(hù)成員d 私有成員 .設(shè)置虛基類的目的是 _a. 簡化程序 .使程序按動態(tài)聯(lián)編方式運(yùn)行 .提高程序運(yùn)行效率d.消除二義性 9.下列關(guān)于純虛函數(shù)和抽象類的描述中, 不正確的是 .純虛函數(shù)是一個沒有具體實現(xiàn)的虛函數(shù)b. 抽象類是包括純虛函數(shù)的類c. 抽象類只能作為基類, 其純虛函數(shù)的實現(xiàn)在派生類中給出d. 可以定義一個抽象類的對象20. 關(guān)于運(yùn)算符重載的不正確的描述是 _a. 運(yùn)算符重載函數(shù)是友元函數(shù)b.體現(xiàn)了程序設(shè)計的多態(tài)性c.增加新的運(yùn)算符d.使運(yùn)算符能對對象操作二、下面的程序是關(guān)于cbook類的一個定義 , 試改正程序中的錯誤。(共 分)#inc ude iostr am h

6、>#inclu e a h > inl ude <s ri g> class cbook r vate:char *pbo ; ublic: _bo k=new ch rstrle (p_ al)+ c ook(co t a *p_val) p_ k= ewchrst e (p_val); s rcpy (p_bo k, p_val); void print() const cout << _b o<< ndl; cbo k()dl te p ook;voi m i ( ) har o k tit 60; c ok p_book oj;cou &

7、lt;<“ en r b oktitle:” ; cin >> p; boo boo (p);p b ok obj = &a oo ; p_bo _ bj->pri t( ) ;三、根據(jù)如下所示程序,回答下列問題( 共 1分) ncl de o trea .h class cjour ap bl c: ourn ()cout<<“ jou ldefa l con truct” < en l; virtu void bscribe() ;void rea( ) cout <<“ re d paper ”< n l ; cjurn

8、al() co t <<“ o r al de ultds r o” < ndl;classcompu e es gn: ubl cjournalp i : coput r es gn () out < “ co put d si ndefa lt constru or ” <<e dl; tualvoid b c ibe() cout< “ su c bingcomp tere ign ” <<e dl ; void read() cut <<“ readi gcom u erdes g” < endl; comp te

9、 design( ) c t< “ mpu erdes gndefaultde t ctor ” < e dl ; ;v id main()cco ute esi n ou nal1; c urnal *p jo rnal;jou na 1 s b ibe( ) ; our a 1.read () ; /p_j u na =& ou nal1; ournal- subs ribe(); p ournal->read( ) ; . 當(dāng)程序運(yùn)行到處時,寫出程序運(yùn)行的輸出結(jié)果( 分)2. 當(dāng)程序結(jié)束時,程序會在第問的基礎(chǔ)上增加哪些輸出。(4 分)若在主函數(shù)中定義一個對象cj

10、 u n l jurnal;程序編譯時會否出錯?為什么?( 3 分)四、編程題 ( 共 40 分)1. 定義一個商品類cgoods,其中包含商品號 ( ng no) 、商品名 (cha pname)、商品價格 ( oub e i e)三個數(shù)據(jù)成員,以及相應(yīng)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、打印數(shù)據(jù)成員的成員函數(shù)。(10 分)# nclude <iostram>#in ue tring.h> usng namespa td ; cla ccoursepri ate :?l?ong o;?c?harp_n me;fl a cre it; publ c:?cc rse(long

11、no_ l, har p_val,floatredit_ al );?ccourse(constc se &r_cou e);?ccours ()delete p_name;?v?oid prnt( )cons;;ose:corse(l n no_val,chr p al,fl creditval)?no=no_al;?p?nam =newchars rlen (p_val)+1;?s?trcp (p_na e,p_val );? ?re it=c edit val;? ourse: urse(con cours &r_c urs )? ?no=r cour .no;?p?na

12、 e= w ar str n(r curs . _name)+1;?strcpy(p m,r_ o r e.p_ e);credit=r_ u se.cr dit;vi ccouse:prin() con ?cout <"couse number" <no<<enl;? ot<<" o s n " < name<endl;?cout <courecre t" <cr i << ndl ;?2. 為 cgo類增加一個商品總數(shù)(it cou t )數(shù)據(jù)成員,并增加一個成員函數(shù)

13、getc nt()獲取 count 的值, 編寫一個友元函數(shù)getname() 獲取商品名稱 _name。做如上修改后 , 重新實現(xiàn) cgoods類(與第 1 問相同的不用再重復(fù) ) 。(10 分).為 oods 類定義小于運(yùn)算符 ( <) 和不小于運(yùn)算符 ( =) 兩個運(yùn)算符重載函數(shù)。cg ds 類對象大小的比較是根據(jù)其商品價格( r c) 的值的大小來實現(xiàn)的。( 與第 2 問相同的不用再重復(fù) )(10分)4. 以 cgoods類為基類 , 派生出服裝類 cclot es 和食品類 cood 兩個派生類,并在這兩個類中分別增加一個表示品牌的指針數(shù)據(jù)成員 ( r * _ra ) 和表示用

14、途的成員函數(shù) (void usedfo( ) 可分別輸出一條表示服裝和食品用途的信息) 。寫出cclothe 類和 food 類的完整定義 ( 包括構(gòu)造、析構(gòu)和 sedf r() 成員函數(shù)的實現(xiàn) ) 。(10 分)五、附加題 ( 共 30 分。注意 : 確保基本題成績能達(dá)到75 分以上,再嘗試做附加題!)1. 在基本題第四題的基礎(chǔ)上, 在 cgoods類增加總商品數(shù) (long ta _gods) 和商品總價格 (d bl total_ ric) 兩個數(shù)據(jù)成員 , 以及相應(yīng)的獲取這兩個數(shù)據(jù)成員值的 成員函數(shù) getto a oo ( )和 ge talprce() 。( 注意說明數(shù)據(jù)成員和成員

15、函數(shù)的存儲類型 , 以便能夠用類名來調(diào)用gett talg ods() 和 ge t talprce( )這兩個函數(shù))。為了能夠采用動態(tài)聯(lián)編的方式調(diào)用派生類的uef () 成員函數(shù) , 應(yīng)該在 g o s 類及其派生類 cc th s 和 cfood類中作何改動 ? (15分)2. 編寫一個實現(xiàn)兩個數(shù)交換的函數(shù)模板swap,然后使用該函數(shù)模板再編寫一個對具有n個數(shù)組元素(通用類型)的數(shù)組采用冒泡排序算法進(jìn)行排序的函數(shù)模板。( 分)試卷參考答案一、單項選擇題 - bdabc610.b aa 1 15. ca bb1 -2 cadda( 每小題答對2 分,不答分 , 答錯 0 分)二、#i c u

16、de ma . > 改為 #include<s rin hp_boo = new ch s e( p_v ) 改為 p_ ook = new c ars rlen(p_val) +1 c o abook ;改為 cbok boo (p);p_book_ b ok 改為 _book_obj ab ok;p_ o k_o j.print()改為 p_ oo _obj >p in ( );( 該對得分 , 未改或改錯得0 分, 正確之處該成錯誤倒扣1 分)三、 . jornal defa l c ns ru o<<comp terdesi n>> defau

17、 t constru t subs r bing < com u er de ign>>readng <comput design> ( 全部答對得分,答錯或漏答一條輸出扣1 分) . s bscribing <comp er des g >> adi gpaper<<c m uterdesign>> fault des ruc or j rna ef t d s ru tor( 全部答對得4 分, 答錯或漏答一條輸出扣分)3. 會出錯 , 因為 c u nal 中包含有純虛函數(shù), 故 cjourn l 是抽象類,不能定義

18、抽象類對象。( 答對編譯會出錯得1 分,答對原因得2 分。)?四、1.#in lud < ost m> in lude <tring.h us g namesp ce std; clss c orse rivate:lo g no ; char*p_ me; fl atcredit;ublic:ccourse(l ng o_va , har *p_va, fl t redi _va ); c ou se(c nst cc urse & _ ours ); ccous () d l e p_n e; id prin( ) const; cours :ccourse( o

19、ng o_val, char *_val, f o t c dit_val)no o_val;p n me = w char trlen(p va )+1 ; strcp(p_n me, _al);c edit= cr dit val;ccou se::ccour e( co st c ou e r_co se) o _cou s .n ;p_name = new ha strlen( r_c u se p_ ame) +1; strcp(p nam, _course. am ) ;credit = r course.crdit;void c urse:pr () nstcout <&l

20、t; "course numbe : "<< o< en ; cout<< course name: " <<_n me << endl ; out< "co rse cred: << cre it < end ;(數(shù)據(jù)成員定義正確得2 分,部分正確得1 分, 不正確得分每個成員函數(shù)定義正確得2 分,每個成員函數(shù)有小錯誤扣分,完全不正確不得分)在 clas c ou e 定義中增加一條: priva:st ti int ota c u e; (答對得分,未加static得 0

21、分)在類外部增加一條: ntcou se:t tal c u se = 0; (答對得分,答錯或漏答得0 分)在 cou e 類的構(gòu)造函數(shù)中增加一條: total_course+;(答對得 1 分)在 c ou se 類的拷貝構(gòu)造函數(shù)中增加一條: otal c rs +; (答對得 1 分)在 c ou se 類的析構(gòu)函數(shù)中增加一條:t al_co rse- ; ( 答對得分)在 cl ssc s定義中增加一條: pub ic: tatic ettota c urs ( ) turn t t l_course; ( 答對得 2 分, 未加 st tic得分 )在 class ccou s定義中

22、增加一條: ie d cha *getcours ame(const c ourse&r_cou se) ;(答對得 1 分,未加fri得分)在類外部定義:ch g tc ursena e( const ccourse &r_c rse)r t rn c urse.p_nam ;(答對得 2 分)3.在 ca s ccour e 定義中增加一條:pu i : ol op ator (con t c o se r_ ourse );(答對得 2 分)在類外部定義:boo c ours :o erator <( c st our e &r co se)i (cred

23、t < _co rse.crdit) urn tru ;(答對得 3 分)e seretur fals;在 lass c u s定義中增加一條: pu c:bol operator>=( onst cc urse &r cous) ; ( 答對得 2 分)在類外部定義 :boolccourse: p tor >=(co st cco rse&r_course) (c edit> r_ o rse. d t) return t ue;lser urn als ;(答對得 3 分)4clas chlp : pu lic ccourseprivate:c ar

24、 _ope by; blic:chlp(lon no vl,char p_val, float cr t_va , char p_open) : c ourse(n _v, p v , cr dit va )p_o en y = new ch st len ( p open) 1 ;tr py(p_op nb , p_o en) ;chlp() eletep_openb ;v id st dyfor()cout " tud f r tr cturedp ogr m in " < en l;( 答對得分,其中構(gòu)造函數(shù)分,析構(gòu)函數(shù)分,studyfo( ) 函數(shù) 1 分)

25、class coo : pblic ccour epri a e:char *p_ nby; i :co p(lo g o_ al , c r *p_ al, loat cr di _val, har _open) : ccour e(no_ , p_val, redit_v l)p openby = new har s rl n(p o en)+1 ;srcpy( _open y, open); oop() del t p o e by; v i s udyfor() c ut < "study fo bject ori nt d pr gramming<< e

26、dl; ;(答對得分 , 其中構(gòu)造函數(shù)3 分, 析構(gòu)函數(shù)1 分, udyfor()函數(shù) 1 分)五、1.在 cl course 定義中增加一條: publ c:irt al o d st d fo( ) c ut<<"stu y for d g e n" (答對得 2 分)增加 :#in lude <stdlib h>主函數(shù)可定義為:v id main()ch r ch ce, i str ctor10; loat c edit;long d;ccurs _co rse;cout << sel ct ur e:n";cout< "1.fo i evel langu g ogra mingn ;cout " f ro j corientedpr gr " ci > cho ce;cout<

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論