C++模擬題5答案_第1頁(yè)
C++模擬題5答案_第2頁(yè)
C++模擬題5答案_第3頁(yè)
C++模擬題5答案_第4頁(yè)
C++模擬題5答案_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+程序設(shè)計(jì)模擬試卷(五)一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫(xiě)在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無(wú)分。1. 靜態(tài)成員函數(shù)沒(méi)有()A. 返回值B. this指針C. 指針參數(shù)D. 返回類(lèi)型答案:B解析:(P107)靜態(tài)成員函數(shù)是普通的函數(shù)前加入static,它具有函數(shù)的所有的特征:返回類(lèi)型、形參,所以使用(P107)靜態(tài)成員函數(shù),指針可以作為形參,也具有返回值。靜態(tài)成員是類(lèi)具有的屬性,不是對(duì)象的特征,而this表示的是隱藏的對(duì)象的指針,因此靜態(tài)成員函數(shù)沒(méi)有this 指針。靜態(tài)成員函數(shù)當(dāng)在類(lèi)外定義時(shí),要注意不能使

2、用static關(guān)鍵字作為前綴。由于靜態(tài)成員函數(shù)在類(lèi)中只有一個(gè)拷貝(副本),因此它訪問(wèn)對(duì)象的成員時(shí)要受到一些限制:靜態(tài)成員函數(shù)可以直接訪問(wèn)類(lèi)中說(shuō)明的靜態(tài)成員,但不能直接訪問(wèn)類(lèi)中說(shuō)明的非靜態(tài)成員;若要訪問(wèn)非靜態(tài)成員時(shí),必須通過(guò)參數(shù)傳遞的方式得到相應(yīng)的對(duì)象,再通過(guò)對(duì)象來(lái)訪問(wèn)。2. 在類(lèi)的定義中,用于為對(duì)象分配內(nèi)存空間,對(duì)類(lèi)的數(shù)據(jù)成員進(jìn)行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是()A. 友元函數(shù)B. 虛函數(shù)C. 構(gòu)造函數(shù)D. 析構(gòu)函數(shù)答案:C解析:(P75)定義構(gòu)造函數(shù)作用就是初始化對(duì)象,而析構(gòu)函數(shù)釋放對(duì)象空間。虛函數(shù)用于完成多態(tài)性,友元增加訪問(wèn)方便性。3. 所有在函數(shù)中定義的變量,都是()A. 全局變量

3、B. 局部變量C. 靜態(tài)變量D. 寄存器變量答案:B解析:(P136)變量存儲(chǔ)類(lèi)可分為兩類(lèi):全局變量和局部變量。(1)全局變量:在函數(shù)外部定義的變量稱為全局變量,其作用域?yàn)椋簭亩x變量的位置開(kāi)始到源程序結(jié)束。全局變量增加了函數(shù)之間數(shù)據(jù)聯(lián)系的渠道,全局變量作用域內(nèi)的函數(shù),均可使用、修改該全局變量的值,但是使用全局變量降低了程序的可理解性,軟件工程學(xué)提倡盡量避免使用全局變量。(2)局部變量:在函數(shù)內(nèi)部定義的變量稱為局部變量,其作用域?yàn)椋簭亩x變量的位置開(kāi)始到函數(shù)結(jié)束。局部變量包含自動(dòng)變量(auto)靜態(tài)變量(static)以及函數(shù)參數(shù)。auto變量意味著變量的存儲(chǔ)空間的分配與釋放是自動(dòng)進(jìn)行的。說(shuō)明

4、符auto可以省略。函數(shù)中的局部變量存放在棧空間。在函數(shù)開(kāi)始運(yùn)行時(shí),局部變量被分配內(nèi)存單元,函數(shù)結(jié)束時(shí),局部變量釋放內(nèi)存單元。因此,任兩個(gè)函數(shù)中的局部變量可以同名,因其占有不同的內(nèi)存單元而不影響使用。這有利于實(shí)現(xiàn)軟件開(kāi)發(fā)的模塊化。static變量是定義在函數(shù)體內(nèi)的變量,存放在靜態(tài)存儲(chǔ)區(qū),不用??臻g存儲(chǔ),其值并不隨存儲(chǔ)空間的釋放而消失。4. 假定AB為一個(gè)類(lèi),則執(zhí)行“AB a(2), b3,*p4;”語(yǔ)句時(shí)調(diào)用該類(lèi)構(gòu)造函數(shù)的次數(shù)為()A. 3B. 4C. 5D. 9答案:B解析:(P79)a(2)調(diào)用1次帶參數(shù)的構(gòu)造函數(shù),b3調(diào)用3次無(wú)參數(shù)的構(gòu)造函數(shù),指針沒(méi)有給它分配空間,沒(méi)有調(diào)用構(gòu)造函數(shù)。所以

5、共調(diào)用構(gòu)造函數(shù)的次數(shù)為4。5. 如果表達(dá)式+a中的“+”是作為成員函數(shù)重載的運(yùn)算符,若采用運(yùn)算符函數(shù)調(diào)用格式,則可表示為()A. a.operator+(1)B. operator+(a)C. operator+(a,1)D. a.operator+()答案:D解析:(P186)運(yùn)算符的重載,前綴先讓變量變化。調(diào)用a,等價(jià)為a.operator+(),注意無(wú)參的形式。后綴的話a+,等價(jià)于a.operator(0),帶形參,形參名可省。6. 已知f1和f2是同一類(lèi)的兩個(gè)成員函數(shù),但f1不能直接調(diào)用f2,這說(shuō)明()A. f1和f2都是靜態(tài)函數(shù)B. f1不是靜態(tài)函數(shù),f2是靜態(tài)函數(shù)C. f1是靜態(tài)函

6、數(shù),f2不是靜態(tài)函數(shù)D. f1和f2都不是靜態(tài)函數(shù)答案:C解析:(P107)普通成員函數(shù)可以調(diào)用靜態(tài)函數(shù),相反靜態(tài)函數(shù)不能調(diào)用普通成員函數(shù),這與普通函數(shù)與常成員函數(shù)相同。因此選擇C項(xiàng)。7. 一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為 ()A. 內(nèi)聯(lián)函數(shù)B. 重載函數(shù)C. 遞歸函數(shù)D. 嵌套函數(shù)答案:A解析:(P59)內(nèi)聯(lián)函數(shù)特征代碼少,頻繁調(diào)用,執(zhí)行效率高。重載函數(shù)解決統(tǒng)一接口的問(wèn)題;遞歸是子程序調(diào)用,程序調(diào)用要耗費(fèi)很多空間和時(shí)間,循環(huán)/迭代都比遞歸有效率得多,遞歸只是從形式上,邏輯比較簡(jiǎn)潔。嵌套函數(shù)即反復(fù)調(diào)用,速度較慢。所以選擇A項(xiàng)。8. 解決定義二義性問(wèn)題的方法有()A. 只能

7、使用作用域分辨運(yùn)算符B. 使用作用域分辨運(yùn)算符或成員名限定C. 使用作用域分辨運(yùn)算符或虛基類(lèi)D. 使用成員名限定或賦值兼容規(guī)則答案:B解析:(P139)解決二義性問(wèn)題主要要兩種方法:(1)賦值兼容規(guī)則;(2)虛基類(lèi)。9. 在main函數(shù)中可以用p.a的形式訪問(wèn)派生類(lèi)對(duì)象p的基類(lèi)成員a,其中a是()A. 私有繼承的公有成員B. 公有繼承的私有成員C. 公有繼承的保護(hù)成員D. 公有繼承的公有成員答案:D解析:(P132)公有成員可以在類(lèi)外訪問(wèn),保護(hù)類(lèi)型成員可以在派生類(lèi)中訪問(wèn),但不能在類(lèi)外訪問(wèn),在main函數(shù)中訪問(wèn),說(shuō)明a是公有成員。只有公有繼承時(shí)a才能是公有的,所以D項(xiàng)正確。10. 在C+中不返回

8、任何類(lèi)型的函數(shù)應(yīng)該說(shuō)明為()A. intB. charC. voidD. double答案:C解析:無(wú)形參或無(wú)返回值都可以用void來(lái)聲明,int char double分別是整型、字符型和實(shí)型。11. 若Sample類(lèi)中的一個(gè)成員函數(shù)說(shuō)明如下:void set(Sample& a),則Sample& a的含義是()A. 指向類(lèi)Sample的名為a的指針B. a是類(lèi)Sample的對(duì)象引用,用來(lái)作函數(shù)Set()的形參C. 將a的地址賦給變量SetD. 變量Sample與a按位與的結(jié)果作為函數(shù)Set的參數(shù)答案:B解析:(P53)成員函數(shù)使用對(duì)象的引用作為形參。該函數(shù)的功能是將已知對(duì)

9、象的所有數(shù)據(jù)成員的值拷貝給相應(yīng)對(duì)象的所有數(shù)據(jù)成員,不會(huì)建立臨時(shí)對(duì)象,這里是對(duì)象的引用所以選擇B。12. 要實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編必須()A. 通過(guò)成員名限定來(lái)調(diào)用虛函數(shù)B. 通過(guò)對(duì)象名來(lái)調(diào)用虛函數(shù)C. 通過(guò)派生類(lèi)對(duì)象來(lái)調(diào)用虛函數(shù)D. 通過(guò)對(duì)象指針或引用來(lái)調(diào)用虛函數(shù)答案:D解析:(P170)通過(guò)基類(lèi)指針或基類(lèi)引用來(lái)調(diào)用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性,靜態(tài)多態(tài)性通過(guò)重載來(lái)實(shí)現(xiàn)的。所以選擇D項(xiàng)。13. 在派生類(lèi)中定義虛函數(shù)時(shí),可以與基類(lèi)中相應(yīng)的虛函數(shù)不同的是()A. 參數(shù)類(lèi)型B. 參數(shù)個(gè)數(shù)C. 函數(shù)名稱D. 函數(shù)體答案:D解析:(P170)虛函數(shù)在基類(lèi)和派生類(lèi),具有相同的返回類(lèi)型、形參類(lèi)型和形參個(gè)數(shù),而函數(shù)體可以根據(jù)不

10、同的派生類(lèi)或基類(lèi)實(shí)現(xiàn)不同的操作,即不同函數(shù)體。14. 實(shí)現(xiàn)兩個(gè)相同類(lèi)型數(shù)加法的函數(shù)模板的聲明是()A. add(T x,T y)B. T add(x,y)C. T add(T x,y)D. T add(T x,T y)答案:D解析:(P63)實(shí)現(xiàn)兩個(gè)相同類(lèi)型數(shù)加法結(jié)果應(yīng)該和操作數(shù)具有相同類(lèi)型。進(jìn)行加法運(yùn)算后結(jié)果也是和參數(shù)具有相同類(lèi)型,需要返回值。A無(wú)返回值時(shí)要用void,B形參無(wú)類(lèi)型,C形參y沒(méi)有類(lèi)型,所以選擇D項(xiàng)。15. 下列不是描述類(lèi)的成員函數(shù)的是()A. 構(gòu)造函數(shù)B. 析構(gòu)函數(shù)C. 友元函數(shù)D. 拷貝構(gòu)造函數(shù)答案:C解析:(P109)友元函數(shù)雖然不是成員函數(shù)但是可以訪問(wèn)類(lèi)所有成員。構(gòu)造函

11、數(shù)、析構(gòu)函數(shù)和拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù))都是類(lèi)的特殊函數(shù)用于對(duì)象的創(chuàng)建和撤銷(xiāo),所以選擇C項(xiàng)。16. 繼承機(jī)制的作用是()A. 信息隱藏B. 數(shù)據(jù)封裝C. 定義新類(lèi)D. 數(shù)據(jù)抽象答案:C解析:(P40)面向?qū)ο笤O(shè)計(jì)中的類(lèi)的特點(diǎn):抽象、封裝、繼承和多態(tài)等,繼承用于對(duì)類(lèi)的擴(kuò)展,所以選擇C項(xiàng)。17. 已知:p是一個(gè)指向類(lèi)A數(shù)據(jù)成員m的指針,A1是類(lèi)A的一個(gè)對(duì)象。如果要給m賦值為5,正確的是()A. A1.p=5;B. A1->p=5;C. A1.*p=5;D. *A1.p=5;答案:C解析:(P118)A中p是指針即地址,錯(cuò)誤;B選項(xiàng)中A1不是指針不能使用指向運(yùn)算符->,錯(cuò)誤;“*”比“

12、.”級(jí)別要高,所以D選項(xiàng)*A1.p=5相當(dāng)于(*A1).p=5;錯(cuò)誤。另外涉及到指向成員函數(shù)時(shí)注意以下幾點(diǎn):指向成員函數(shù)的指針必須于其賦值的函數(shù)類(lèi)型匹配的三個(gè)方面:(1)參數(shù)類(lèi)型和個(gè)數(shù);(2)返回類(lèi)型;(3)它所屬的類(lèi)類(lèi)型。成員函數(shù)指針的聲明:指向short型的Screen類(lèi)的成員的指針定義如下: short Screen:* ps_Screen;ps_Screen可以用_height的地址初始化如下:short Screen:*ps_Screen=&Screen:_height;類(lèi)成員的指針必須總是通過(guò)特定的對(duì)象或指向改類(lèi)型的對(duì)象的指針來(lái)訪問(wèn)。是通過(guò)使用兩個(gè)指向成員操作符的指針(針對(duì)

13、類(lèi)對(duì)象和引用的.*,以及針對(duì)指向類(lèi)對(duì)象的指針的->*)。18. 如果采用動(dòng)態(tài)多態(tài)性,要調(diào)用虛函數(shù)的是()A. 基類(lèi)對(duì)象指針B. 對(duì)象名C. 基類(lèi)對(duì)象D. 派生類(lèi)名答案:A解析:(P171)基類(lèi)指針或者基類(lèi)的引用調(diào)用虛函數(shù)都會(huì)產(chǎn)生動(dòng)態(tài)多態(tài)性19. 若有以下定義,則說(shuō)法錯(cuò)誤的是()int a=100,*p=&a;A. 聲明變量p,其中*表示p是一個(gè)指針變量B. 變量p經(jīng)初始化,獲得變量a的地址C. 變量p只可以指向一個(gè)整型變量D. 變量p的值為100答案:D解析:指針變量如同其他變量一樣,在使用之前必須先聲明。聲明指針變量的格式為:<類(lèi)型名>*<變量名>其中,

14、<類(lèi)型名>是指針變量所指向?qū)ο蟮念?lèi)型,它可以是C+語(yǔ)言預(yù)定義的類(lèi)型,也可以是用戶自定義類(lèi)型。<變量名>是用戶自定義的標(biāo)識(shí)符。符號(hào)*表示<變量>是指針變量。而不是普通變量。 *表示指針,p是變量,p指向一個(gè)整型的變量,值為a的地址值,*p=100。20. C+語(yǔ)言建立類(lèi)族是通過(guò)()A. 類(lèi)的嵌套B. 類(lèi)的繼承C. 虛函數(shù)D. 抽象類(lèi)答案:B解析:(P174)類(lèi)族即同一個(gè)類(lèi)派生出來(lái)的類(lèi),各個(gè)類(lèi)是兄弟或父子關(guān)系。二、填空題(本大題共20小題,每小題1分,共20分)請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無(wú)分。1. 假設(shè)int a=1,b=2;則表達(dá)式(+a/b

15、)*b-的值為_(kāi)。答案:2解析前綴或表示先使變量值變化,再使用,這和后綴恰恰相反。但是編譯cout<<(+a/b)*b-時(shí),先+a/b值為1,后1*b-,先取b2,結(jié)果為2,再讓b1。2. 復(fù)制構(gòu)造函數(shù)使用_作為形式參數(shù)。答案:(P80)對(duì)象的引用解析復(fù)制構(gòu)造函數(shù)使用對(duì)象的引用來(lái)初始化一個(gè)新對(duì)象,避免臨時(shí)產(chǎn)生對(duì)象。3. 通過(guò)C+語(yǔ)言中的_機(jī)制,可以從現(xiàn)存類(lèi)中構(gòu)建其子類(lèi)。答案:(P127)繼承解析繼承概念,從現(xiàn)有的類(lèi)生成新類(lèi),原有的類(lèi)稱為父類(lèi)或基類(lèi),新類(lèi)又稱子類(lèi)或派生類(lèi)或衍生類(lèi),它是對(duì)基類(lèi)的擴(kuò)充。4. 靜態(tài)成員函數(shù)、友元函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是_。答案:(P10

16、9)友元函數(shù)解析友元函數(shù)不是類(lèi)成員,但可以訪問(wèn)類(lèi)成員。類(lèi)的封裝性保證了數(shù)據(jù)的安全,但引入友元,雖然訪問(wèn)類(lèi)是方便了,但確實(shí)破壞類(lèi)訪問(wèn)的安全性。5. 在下面的類(lèi)定義中,私有成員有_。class Locationint X,Y;protected:int zeroX,zerxY;int SetZero(intzeroX, intzeroY);private:int length,height;public:void init(int initX,int initY);int GetX();int GetY();答案:(P69)X,Y,length,height6. 在C+程序設(shè)計(jì)中,建立繼承關(guān)系倒掛

17、的樹(shù)應(yīng)使用_繼承。答案:(P138)單解析一個(gè)基類(lèi)可以派生多個(gè)子類(lèi),一個(gè)子類(lèi)可以再派生出多個(gè)子類(lèi),這樣就形成了一個(gè)倒立的樹(shù)。7. C+支持的兩種多態(tài)性分別是_多態(tài)性和運(yùn)行多態(tài)性。答案:(P165)靜態(tài)或編譯解析多態(tài)性包括靜態(tài)(編譯時(shí))的和動(dòng)態(tài)(運(yùn)行時(shí))的動(dòng)態(tài)性。8. C+中語(yǔ)句const char * const p=“hello”;所定義的指針p和它所指的內(nèi)容都不能被_。答案:(P12)修改解析使用const修改的內(nèi)容不能修改,這里同時(shí)修飾地址和值,表示地址和值都不變。9. 在C+中,定義虛函數(shù)的關(guān)鍵字是_。答案:(P170)virtual解析在普通函數(shù)前面用virtual修飾的函數(shù),就稱為

18、虛函數(shù)。10. 采用私有派生方式,基類(lèi)的public成員在私有派生類(lèi)中是_成員。答案:(P132)私有11. 對(duì)賦值運(yùn)算符進(jìn)行重載時(shí),應(yīng)聲明為_(kāi)函數(shù)。答案:(P183)類(lèi)成員解析運(yùn)算符重載的方法有友元或者成員函數(shù)兩種途徑,但是賦值運(yùn)算符只能使用成員函數(shù)的方法來(lái)實(shí)現(xiàn)。12. 在C+中有兩種參數(shù)傳遞方式即值傳遞和_傳遞。答案:(P51)引用解析函數(shù)參數(shù)傳遞有傳值和傳引用兩種。13. 預(yù)處理命令以_符號(hào)開(kāi)頭。答案:(P183)operater解析文件包含、預(yù)處理和編譯都是以開(kāi)頭。14. 在構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù)時(shí)采用_。答案:(P167)靜態(tài)聯(lián)編解析在析構(gòu)或構(gòu)造函數(shù)調(diào)用虛函數(shù)發(fā)生靜態(tài)多態(tài)性。

19、15. C+是通過(guò)引用運(yùn)算符_來(lái)定義一個(gè)引用的。答案:(P10)&解析引用是C不具有使用方法,它表示變量的別名,在函數(shù)中使用很頻繁,因?yàn)檎{(diào)用形式同傳值調(diào)用,但修改形參實(shí)參也會(huì)相應(yīng)改變的特征。16. 如果要把類(lèi)B的成員函數(shù)void fun()說(shuō)明為類(lèi)A的友元函數(shù),則應(yīng)在類(lèi)中加入語(yǔ)句_。答案:(P111)friend void B:fun();解析聲明成員函數(shù)作為另外一個(gè)類(lèi)的友元函數(shù)時(shí),使用類(lèi)作用域運(yùn)算符:。17. 如果要把PI聲明為值為3.14159類(lèi)型為雙精度實(shí)數(shù)的符號(hào)常量,該聲明語(yǔ)句是_。答案:(P6)const double PI(3.14159);或者const double P

20、I3.14159;解析使用const聲明符號(hào)常量,常量和常量值可以用括號(hào)也可以賦值號(hào)。18. 在C四個(gè)流對(duì)象中,_用于標(biāo)準(zhǔn)屏幕輸出。答案:(P194)cout解析cin、cout、cerr和clog中cin用于輸入,cout用于輸出,cerr、clog錯(cuò)誤處理。19. 執(zhí)行下列代碼int a=32;double c=32;cout.setf(ios:hex);cout<<"hex:a="<<a<<",c="<<c<<endl;cout.unsetf(ios:hex);程序的輸出結(jié)果為_(kāi)。答案:(

21、P193)hex:a=20,c=32解析用十六進(jìn)制只能輸出整型數(shù)據(jù),而不能將其它類(lèi)型數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制的數(shù)據(jù)輸出。所以double類(lèi)型不變?nèi)匀皇?2(double類(lèi)型)。20. 已知有20個(gè)元素int類(lèi)型向量V1,若用V1初始化為V2向量,語(yǔ)句是_。答案:(P151)ector <int>V2(V1);解析采用向量初始化另一個(gè)向量的形式:vector <type> name1(name);三、改錯(cuò)題(本大題共5小題,每小題4分,共20分)1. #include <iostream.h>class A private:int x;public:A(int i)

22、x=i;A()x=0;friend int min(A&,A&);int min(A & a,A &b) return (a.x>b.x)?a.x:b.x;void main() A a(3),b(5);cout<<a.min(a,b)<<endl;答案:cout<<a.min(a,b)<<endl;友元函數(shù)不是類(lèi)成員,所以對(duì)象a不能使用a.min(a,b)這種方法。min就是一個(gè)普通的友元函數(shù)。修改cout<<min(a,b)<<endl;2. #include <iostre

23、am.h>class shapepublic:virtual int area()return 0;class rectangle:public shapepublic:int a, b;void setLength (int x, int y) a=x;b=y;int area() return a*b;void main()rectangle r;r.setLength(3,5);shape s1,*s2=&r;cout <<r.area() <<endl;s2=s1;cout <<s2.area()<<endl;答案:shap

24、e s1,*s2=r;指針使用錯(cuò)誤。s是指針使用它指向?qū)ο蟮某蓡T有兩種方法,有下面兩行可知,使用的是引用。修改改為shape &s=r;3. 下面的類(lèi)定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見(jiàn)。#include <iostream.h>template <class T>class Aprivate:T x,y,s;public:A(T a,T b)x=a,y=b;s=x+y;void show()cout<<"x+y="<<s<<endl;void main() A <int>a

25、dd(10,100);add.show();答案: 修改A <int>add(10,100);解析A add(10,100);類(lèi)模板的使用,參數(shù)實(shí)例化后生成模板類(lèi)。用類(lèi)模板定義對(duì)象時(shí)要指定參數(shù)類(lèi)型。4. 生成具有n個(gè)元素的動(dòng)態(tài)數(shù)組。#include <iostream.h>void main()int n;cin>>n;int an;a0=2;cout<<a0<<endl;答案:int an;生成具有n個(gè)元素的動(dòng)態(tài)數(shù)組,要使用new,所以int an;錯(cuò)誤。修改int *a=new intn;5. #include <iostr

26、eam.h>class Aint i;public:virtual void fun()=0;A(int a)i=a;class B:public Aint j;public:void fun()cout<<"B:fun()n" B(int m,int n=0):A(m),j(n);void main()A *pa;B b(7);pa=&b;答案:B(int m,int n=0):A(m),j(n)因?yàn)榛?lèi)是抽象類(lèi),不能被實(shí)例化,所以在派生類(lèi)中不能調(diào)用初始化基類(lèi)對(duì)象。所以B(int m,int n=0):A(m),j(n)錯(cuò)誤,刪去A(m)。修改B

27、(int m,int n=0):j(n)四、完成程序題(本大題共5小題,每小題4分,共20分)1. 在下面程序橫線處填上適當(dāng)字句,以使該程序執(zhí)行結(jié)果為:50 4 34 21 100 7.1 8.1 9.1 10.1 11.1#include <iostream.h>template <class T>void f (_)_;for (int i=0;i<n/2;i+)t=ai, ai=an-1-i, an-1-i=t;void main ()int a5=10,21,34,4,50;double d6=11.1,10.1,9.1,8.1,7.1;f(a,5);f(

28、d,6);for (int i=0;i<5;i+)cout <<ai<< ""cout <<endl;for (i=0;i<6;i+)cout << di << ""cout << endl;答案:T a,int n,T t=0;解析不同的數(shù)據(jù)類(lèi)型的調(diào)用,使用了模板。f函數(shù)增加t變量,因?yàn)閷?shí)參類(lèi)型不同,所以t的類(lèi)型應(yīng)該是T類(lèi)型的。2. 完成下面類(lèi)中成員函數(shù)的定義。#include <iostream.h>#include <iomanip.h>cl

29、ass Arrprotected:float *p;int n;/數(shù)組大?。ㄔ貍€(gè)數(shù))public:Arr(int sz=10) n=sz;p=new floatn;Arr(void)_int Getn(void) constreturn n;float & operator(int i)_void Print();void Arr:Print()int i;for(i=0;i< this->Getn();i+)if (i%10=0)cout << endl;cout<<setw(6)<<pi;cout<<endl;void

30、main()Arr a(20);for (int i=0;i<a.Getn();i+)ai=i* 2;a.Print();答案:delete p;,return pi;解析在析構(gòu)函數(shù)中釋放對(duì)象空間。第二個(gè)是對(duì)運(yùn)算符的重載,函數(shù)返回類(lèi)型是實(shí)型,形參i,取得下標(biāo)為i的元素的值。3. 下面是一個(gè)輸入半徑,輸出其面積和周長(zhǎng)的C+程序,在下劃線處填上正確的語(yǔ)句。#include <iostream>_;_;void main()double rad;cout<<"rad="cin>>rad;double l=2.0*pi*rad;double

31、 s=pi*rad*rad;cout<<"n The long is:"<<l<<endl;cout<<"The area is:"<<s<<endl;答案:using namespace std,#define pi 3.14159解析進(jìn)行輸入或輸出要引入iostream, 所以u(píng)sing namespace std;從標(biāo)點(diǎn)看沒(méi)有分號(hào),所以使用宏定義,#define pi 3.14159。4. 在下劃線處填上缺少的部分。#include <iostream.h>clas

32、s Samppublic:void Setij(int a,int b)i=a,j=b;Samp()cout<<"Destroying."<<i<<endl;int GetMuti()return i*j;protected:int i;int j;int main()Samp *p;p=new Samp5;if(!p)cout<<"Allocation errorn"return 1;for(int j=0;j<5;j+)pj.Setij(j,j);for(int k=0;k<5;k+)cou

33、t<<"Muti"<<k<<" is:"<<pk._<<endl;_return 0;答案:GetMuti(),deletep;解析調(diào)用只有一個(gè)有返回值的成員函數(shù),釋放對(duì)象數(shù)組所占的空間。5. 請(qǐng)?jiān)谙旅娉绦虻臋M線處填上適當(dāng)內(nèi)容,以使程序完整,并使程序的輸出為:11,1013,12#include <iostream.h>class Aint a;public:A(int i=0)a=i;int Geta()return a;void show()cout<<a<&l

34、t;endl;class BA a;int b;public:B(int i,int j)_void show()cout<<a.Geta()<<","<<b<<endl;void main()B b2=B(10,11),B(12,13);for(int i=0;i<2;i+)_答案::a(j),b(i),bi.show();解析在構(gòu)造函數(shù)中對(duì)數(shù)據(jù)成員初始化,從結(jié)果先輸出a,后b,所以對(duì)aj,b=i;在循環(huán)中輸出成員,調(diào)用show成員。五、程序分析題(本大題共2小題,每小題5分,共10分)1. 給出下面程序輸出結(jié)果。#i

35、nclude <iostream.h>class Baseprivate:int Y;public:Base(int y=0) Y=y;cout<<"Base("<<y<<")n"Base() cout<<"Base()n"void print() cout <<Y<< ""class Derived:public Baseprivate:int Z;public:Derived (int y, int z):Base(y)Z=z;

36、cout<<"Derived("<<y<<","<<z<<")n"Derived() cout<<"Derived()n"void print()Base:print();cout<<Z<<endl;void main()Derived d(10,20);d.print();答案:Base(10)Derived(10,20)10 20Derived()Base()解析派生類(lèi)對(duì)象,先調(diào)用基類(lèi)構(gòu)造函數(shù)輸出Base(10),后調(diào)用派生類(lèi)構(gòu)造函數(shù)輸出Derived(10,20),后執(zhí)行d.print(),調(diào)用派生類(lèi)的print,再調(diào)用Base:print()輸出10,后返回輸出z的值20。后派生類(lèi)析構(gòu),再基類(lèi)析構(gòu)。2. 給出下面程序輸出結(jié)果。#include <iostream.h>class testint x;public:test(int i=0):x(i)virtual void fun1()cout << "test:x"&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論