面向?qū)ο蟪绦蛟O(shè)計(jì)教程c語(yǔ)言描述第二版馬石安_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程c語(yǔ)言描述第二版馬石安_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程c語(yǔ)言描述第二版馬石安_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)教程c語(yǔ)言描述第二版馬石安_第4頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)教程-c+ 語(yǔ)言描述 -第二版第 1 章習(xí)題答案名詞解釋抽象:抽象 (Abstract) 就是忽略事物中與當(dāng)前目標(biāo)無關(guān)的非本質(zhì)特征,而強(qiáng)調(diào)與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,并把具有共性的事物劃為一類。面向?qū)ο蠓椒ㄖ械某橄螅侵笇?duì)具體問題 (對(duì)象 )進(jìn)行概括,抽出一類對(duì)象的公共性質(zhì)并加以描述的過程。封裝:面向?qū)ο蠓椒ㄖ械姆庋b就是把將抽象出來的對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。消息:消息是面向?qū)ο蟪绦蛟O(shè)計(jì)用來描述對(duì)象之間通信的機(jī)制。一個(gè)消息就是一個(gè)對(duì)象要求另一個(gè)對(duì)象實(shí)施某種操作的一個(gè)請(qǐng)求。填空題(1)面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法面向?qū)ο蟪?/p>

2、序設(shè)計(jì)方法(2)順序選擇循環(huán)(3)程序 =數(shù)據(jù)結(jié)構(gòu) +算法程序 =對(duì)象 +消息(4)過程類(5)抽象性封裝性繼承性多態(tài)性選擇題(1) B(2) C(3) D(4) C(5) D(6) A(7) A(8)BC(9)AD判斷題(1) t(2) f(3) f(4)f(5) t(6) f(7) f(8) t簡(jiǎn)答題(1)結(jié)構(gòu)化程序設(shè)計(jì)方法著眼于系統(tǒng)要實(shí)現(xiàn)的功能,從系統(tǒng)的輸入和輸出出發(fā),分析系統(tǒng)要做哪些事情,進(jìn)而考慮如何做這些事情,自頂向下地對(duì)系統(tǒng)的功能進(jìn)行分解,來建立系統(tǒng)的功能結(jié)構(gòu)和相應(yīng)的程序模塊結(jié)構(gòu), 有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。隨著程序規(guī)模與

3、復(fù)雜性的增長(zhǎng),這種面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法存在明顯的不足之處。首先是數(shù)據(jù)安全性問題,由于數(shù)據(jù)被每個(gè)模塊所共用,因此是不安全的,一旦出錯(cuò),很難查明原因。其次是可維護(hù)性及可重用性差,它把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體,一旦數(shù)據(jù)結(jié)構(gòu)需要改變時(shí), 常常要涉及整個(gè)程序,修改工作量極大并容易產(chǎn)生新的錯(cuò)誤。每一種相對(duì)于老問題的新方法都要帶來額外的開銷。另外,圖形用戶界面的應(yīng)用程序,很難用過程來描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。(2)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,將程序設(shè)計(jì)為一組相互協(xié)作的對(duì)象(Object )而不是一組相互協(xié)作的函數(shù)。在程序中,屬性用數(shù)據(jù)表示,用來描述對(duì)象靜態(tài)特征;行為用程序代碼實(shí)現(xiàn),用

4、來描述對(duì)象動(dòng)態(tài)特征。可見,在面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,對(duì)象是數(shù)據(jù)結(jié)構(gòu)和算法的封裝體。對(duì)象之間存在各種聯(lián)系,它們之間通過消息進(jìn)行通信。程序可表示為:程序 = 對(duì)象 +消息在面向?qū)ο蟪绦蛟O(shè)計(jì)中,它著重于類的設(shè)計(jì)。類正是面向?qū)ο笳Z(yǔ)言的基本程序模塊,通過類的設(shè)計(jì),來完成實(shí)體的建模任務(wù)。類通過一個(gè)簡(jiǎn)單的外部接口,與外界發(fā)生關(guān)系。一個(gè)類中的操作不會(huì)處理到另一個(gè)類中的數(shù)據(jù),這樣程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。程序的執(zhí)行取決于事件發(fā)生的順序,由順序產(chǎn)生的消息來驅(qū)動(dòng)程序的執(zhí)行。不必預(yù)先并且面向?qū)ο蟪绦蛟O(shè)計(jì)方法提供了軟件重用、更符合客觀世界的實(shí)際。確定消息產(chǎn)生的順序,解決大問題和復(fù)雜問題的有效途徑

5、,具有抽象性、封裝性、繼承性和多態(tài)性等特點(diǎn)。(3)結(jié)構(gòu)化程序設(shè)計(jì)方法中,把數(shù)據(jù)結(jié)構(gòu)和算法分離為相互獨(dú)立的實(shí)體。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)和算法是封裝在一起,結(jié)合成一個(gè)獨(dú)立的單位,即對(duì)象,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。對(duì)象的私有屬性只能由這個(gè)對(duì)象的行為來讀取和修改,與外部的聯(lián)系通過公有行為充當(dāng)外部接口。第 2 章習(xí)題答案名詞解釋引用:所謂引用,就是給對(duì)象起一個(gè)別名,使用該別名可以存取該對(duì)象。換句話說,是使新對(duì)象和原對(duì)象共用一個(gè)地址。內(nèi)聯(lián)函數(shù):內(nèi)聯(lián)函數(shù)是使用inline 關(guān)鍵字聲明一個(gè)函數(shù)。重載函數(shù):重載函數(shù)通常用來對(duì)具有相似行為而數(shù)據(jù)類型不同的操作提供個(gè)通用的名稱。填空題(1)函數(shù)類(2) /

6、*/(3) iostream(4) cin>>(5) cout<<(6)地址值類型值(7)&對(duì)象(8) 聲明(9) 值傳遞引用傳遞(10) inline(11) newdelete(12)x= 10,y=10x= 100 , y=100選擇題(1) A(2)C(3) C(4) A(5) D(6) D(7) D(8)BC(9) A(10) D判斷題(1) t(2) f(3) f(4)t(5) t(6) t(7) t(8) t簡(jiǎn)答題(1) 名字空間用來防止命名的沖突。(2) 除了獨(dú)立引用外,在 C+ 程序中,引用的主要用途是用作函數(shù)參數(shù)和函數(shù)的返回值。(3) 在值傳

7、遞機(jī)制中,作為實(shí)參的表達(dá)式的值被復(fù)制到由對(duì)應(yīng)的形參名所標(biāo)識(shí)的一個(gè)對(duì)象中,作為形參的初始值。函數(shù)體對(duì)形參的訪問、修改都是在這個(gè)標(biāo)識(shí)對(duì)象上操作,與實(shí)參無關(guān),即數(shù)據(jù)的傳遞是單向的。使用引用作函數(shù)的形參時(shí), 調(diào)用函數(shù)的實(shí)參要用變量名。 實(shí)參傳遞給形參, 相當(dāng)于在被調(diào)用函數(shù)中使用了實(shí)參的別名。于是,在被調(diào)用函數(shù)中對(duì)形參的操作,實(shí)質(zhì)是對(duì)實(shí)參的直接操作,即數(shù)據(jù)的傳遞是雙向的。(4) 內(nèi)聯(lián)函數(shù)是使用 inline 關(guān)鍵字聲明一個(gè)函數(shù)。在程序編譯時(shí),編譯系統(tǒng)將程序中出現(xiàn)內(nèi)聯(lián)函數(shù)調(diào)用的地方用函數(shù)體進(jìn)行替換,進(jìn)而減少了時(shí)間開銷。使用內(nèi)聯(lián)函數(shù)應(yīng)注意:遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)。 cout<<please

8、input 2 floats to x,y:<<endl;否則 15 條語(yǔ)句的小函數(shù), switch 譯系統(tǒng)將該函數(shù)視為普通函數(shù)。和 while 等復(fù)雜的結(jié)構(gòu)且只有內(nèi)聯(lián)函數(shù)一般適合于不含有內(nèi)聯(lián)函數(shù)只能先定義后使用,否則編譯系統(tǒng)也將該函數(shù)視為普編通函數(shù)。對(duì)內(nèi)聯(lián)函數(shù)也不能進(jìn)行異常接口聲明。(5) 不必一致。所有的參數(shù)是根據(jù)位置和類型而不是名字來區(qū)分的。(6) 編譯系統(tǒng)將根據(jù)函數(shù)參數(shù)的類型和個(gè)數(shù)來判斷使用哪一個(gè)函數(shù)。序分析題(寫出程序的輸出結(jié)果,并分析結(jié)果)程序的輸出結(jié)果:num=60程ref=100程序設(shè)計(jì)題 /xiti2_1.cpp#include <iostream>#

9、include <cmath>using namespace std;int main()float x,y;cin>>x>>y;float z=pow(x,y);cout<<pow(<<x<<,<<y<<)=<<z<<endl;return 0;第 3 章習(xí)題答案填空題(1)公有保護(hù)私有privatepubic(2)作用域MyC1ass(3)樣板實(shí)例(4) 11(5) 1(6) delete(7)數(shù)據(jù)區(qū)代碼區(qū)棧區(qū)堆區(qū)(8)封裝性靜態(tài)成員(9) 任意訪問權(quán)限許可的(10) 友

10、元函數(shù)友元類(11) 效率(12) friend A ;選擇題(1) B(2)BC(3) C(4)C(5) BDB(6) C(7) B(8) B(9)AC(10) D(11) C(12) C(13) B(14) B(15) B(16) D(17) C(18) CD(19) D(20) A(21) A(22) D(23) C簡(jiǎn)答題(1)類實(shí)際上由一個(gè)類定義的類型稱為類類型,程序員可以使用這個(gè)新類型在程序中聲明新的變量,具有類類型的變量稱為對(duì)象。創(chuàng)建對(duì)象時(shí),類被用作樣板,對(duì)象稱為類的實(shí)例。(2)定義類一般形式為:class 類名 public :<公有數(shù)據(jù)和函數(shù)>protected :

11、<保護(hù)數(shù)據(jù)和函數(shù)>private :<私有數(shù)據(jù)和函數(shù)>訪問權(quán)限共有三種:分別是公有(public )、保護(hù)( protected )和私有( private )的。(3)指創(chuàng)建類的對(duì)象。(4)this 指針是 C+ 為成員函數(shù)提供的一個(gè)隱含對(duì)象指針,它不能被顯式聲明。量,局部于某個(gè)對(duì)象。 不同的對(duì)象調(diào)用同一個(gè)成員函數(shù)時(shí), 編譯器根據(jù)thisthis 指針是一個(gè)局部指針來確定應(yīng)該引用哪一個(gè)對(duì)象的數(shù)據(jù)成員。(5)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的作用是用一個(gè)已經(jīng)存在的對(duì)象去初始化另一個(gè)對(duì)象時(shí)。為了保證所引用的對(duì)象不被修改,通常把引用參數(shù)聲明為在以下 3 種情況下,拷貝構(gòu)

12、造函數(shù)都會(huì)被自動(dòng)調(diào)用:const 參數(shù)。 當(dāng)用類的一個(gè)對(duì)象去初始化該類的另一個(gè)對(duì)象時(shí)。 當(dāng)函數(shù)的形參是類的對(duì)象,進(jìn)行形參和實(shí)參結(jié)合時(shí)。 當(dāng)函數(shù)的返回值是類的對(duì)象,函數(shù)執(zhí)行完成返回調(diào)用者時(shí)。程序分析題(1)Init defaInit defaInit 15(2)Exit maindst 5(3)Default constructor of PartConstructor of Part ,3Default constructor of PartConstructor of WholeDestructor of WholeDestructor of Part , 03, Destructor of

13、 Part Destructor of Part , 0(4)30程序設(shè)計(jì)題(1)/xiti3_1.cpp#include < iostream >using namespace std;class Circlepublic:Circle(float r) radius = r; Circle( ) float area() return 3.14 * radius * radius; private:float radius;int main( )float r;cout<<“請(qǐng)輸入圓的半徑: ” ;cin >> r;Circlep(r);cout <

14、;< “半徑為” << r << “的圓的面積為: ” << p. area () << endl; return 0;(2)/xiti3_2.cpp#include <iostream>using namespace std;classBookpublic:Book(int w);static int sumnum;static int getsum()return sumnum;private:int num;Book:Book(int w)num=w;sumnum-=w;int Book:sumnum=120;int ma

15、in()Book b1(20);Book b2(70);cout<<Book:getsum()<<endl;return 0;第 4 章習(xí)題答案填空題(1) 基派生(2)單繼承多繼承(3) 私有繼承方式(4) 公有保護(hù)(5) 多繼承(6) 支配規(guī)則(7) 解決二義性(8) 使用作用域運(yùn)算符引進(jìn)虛基類選擇題(1) B(2)CD(3)ABC(4)C(5) A(6) C(7) B(8) D(9)A D(10) A判斷題(1) f(2) t(3) f(4) t(5)f(6) f簡(jiǎn)答題(1)面向?qū)ο蠹夹g(shù)中,類是數(shù)據(jù)和操作的集合,它們之間有3 種主要關(guān)系:Has-A , Uses-

16、A 和 Is-A 。Has-A 表示類的包含關(guān)系,用以描述一個(gè)類由多個(gè)“部件類”構(gòu)成。在面向?qū)ο蠹夹g(shù)中,實(shí)現(xiàn)has-A 關(guān)系用類成員表示。Uses-A 表示一個(gè)類部分地使用另一個(gè)類。在面向?qū)ο蠹夹g(shù)中,這種關(guān)系通過類之間成員函數(shù)的相互聯(lián)系或?qū)ο髤?shù)傳遞實(shí)現(xiàn)。另外,通過定義友員也能實(shí)現(xiàn)這種關(guān)系。Is-A 表示一種分類方式,描述類的抽象和層次關(guān)系。繼承可以表達(dá)is-A 關(guān)系。(2)所謂賦值兼容規(guī)則是指在公有繼承情況下,一個(gè)派生類的對(duì)象可以作為基類的對(duì)象來使用的地方。具體來說,就是下面3 種情況:1) 派生類的對(duì)象可以賦給基類的對(duì)象。2) 派生類的對(duì)象可以初始化基類的引用。3) 派生類的對(duì)象的地址可以

17、賦給指向基類的指針。(3)當(dāng)類的繼承方式為公有繼承時(shí),在派生類中, 基類的公有成員和保護(hù)成員被繼承后分別作為派生類的公有成員和保護(hù)成員,這樣使得派生類的成員函數(shù)可以直接訪問它們,而派生類成員函數(shù)無法直接訪問基類的私有成員。在類外部,派生類的對(duì)象可以訪問繼承下來的基類公有成員。基類的公有成員和保護(hù)成員作為派生類的私有在派生類中,當(dāng)類的繼承方式為私有繼承時(shí),成員,派生類的成員函數(shù)可以直接訪問它們,而派生類的成員函數(shù)無法直接訪問基類的私有成員。在類外部,派生類的對(duì)象無法訪問基類的所有成員。當(dāng)類的繼承方式為保護(hù)繼承時(shí),在派生類中, 基類的公有成員和保護(hù)成員作為派生類的保護(hù)成員,派生類的成員函數(shù)可以直接

18、訪問它們,而派生類的成員函數(shù)無法直接訪問基類的私有成員。在類外部,派生類的對(duì)象無法訪問基類的所有成員。(4)首先基類構(gòu)造函數(shù)被調(diào)用,子對(duì)象所在類構(gòu)造函數(shù)次之,最后執(zhí)行派生類構(gòu)造函數(shù)。(5)若派生類有構(gòu)造函數(shù)而基類沒有,當(dāng)創(chuàng)建派生類的對(duì)象時(shí),派生類的相應(yīng)構(gòu)造函數(shù)被自動(dòng)調(diào)用。若派生類沒有構(gòu)造函數(shù)而基類有,則基類必須擁有缺省構(gòu)造函數(shù)。只有這樣, 當(dāng)創(chuàng)建派生類的對(duì)象時(shí),才能自動(dòng)執(zhí)行基類的默認(rèn)構(gòu)造函數(shù)。若派生類有構(gòu)造函數(shù),且基類有缺省構(gòu)造函數(shù),則創(chuàng)建派生類的對(duì)象時(shí),基類的缺省構(gòu)造函數(shù)會(huì)自動(dòng)執(zhí)行,除非當(dāng)前被調(diào)用的派生類構(gòu)造函數(shù)在其初始化段中顯式地調(diào)用了基類的有參構(gòu)造函數(shù)。若派生類和基類都有構(gòu)造函數(shù),但基類

19、沒有缺省構(gòu)造函數(shù),則派生類的每一個(gè)構(gòu)造函數(shù)必須在其初始化列表中顯式地調(diào)用基類的某個(gè)構(gòu)造函數(shù)。只有這樣, 當(dāng)創(chuàng)建派生類的對(duì)象時(shí),基類的構(gòu)造函數(shù)才能獲得執(zhí)行機(jī)會(huì)。程序分析題(11,12)(26,29)15,16(26,29)程序設(shè)計(jì)題/xiti4_1.cpp#include<iostream.h>class Point/ 定義基類protected:int x,y;public:Point(int myx,int myy)x=myx;y=myy;void displayxy()cout<<The postion of point:;cout<<(<<

20、x<<,<<y<<)<<endl;class Rectangle:public Point/ 定義派生類,公有繼承方式private:int l,w;public:Rectangle(int myx,int myy,int myl,int myw):Point(myx,myy)l=myl;w=myw;void displaylw()cout<<The length and width of rectangle:;cout<<l<<,<<w<<endl;class Cube:public

21、Rectangle/定義派生類,公有繼承方式private:int h;public:Cube(int myx,int myy,int myl,int myw,int myh):Rectangle(myx,myy,myl,myw)h=myh;void displayh()cout<<The height of cube:<<h<<endl;void main()Cube v(20,40,3,5,6);cout<<The data of cube:<<endl;v.displayxy();v.displaylw();v.displayh

22、();/ 派生類對(duì)象/ 第四章例題: 4.16#include <iostream>using namespace std;class pointpublic:point(int myx,int myy)x=myx;y=myy;void displayxy()cout<< he position of center:;cout<<(<<x<<,<<)<<endl;protected:int x,y;class circle:public pointpublic:circle(int myx,int myy,in

23、t myr):point(myx,myy)r=myr;void displayr()cout<<he radius of circle:<<r<<endl;private:int r;class cylinder:public circlepublic:cylinder(int myx,int myy,int myr,int myh):circle(myx,nyy,myr)h=myh;void displayh()cout<<private:int h;int main()he height of cylinder:<<h<&l

24、t;endl;cylinder v(4,5,6,8);cout<<he data of cylinder:<<endl;v.displayxy();v.displayr();v.displayh();return 0;第 5 章習(xí)題答案填空題(1)靜態(tài)動(dòng)態(tài)(2) 編譯時(shí)的多態(tài)性,運(yùn)行時(shí)的多態(tài)性。(3) 靜態(tài)動(dòng)態(tài)(4) 覆蓋(5) 使用了不恰當(dāng)?shù)奶摵瘮?shù)(6) 靜態(tài)(7) 0(8) 抽象類選擇題(1) A(1) D(2)BD(3)B(4)AB(5) B(6) C(7)CD(8)B D判斷題(1) f(2) f(3) t(4) f(5) f(6) t簡(jiǎn)答題(1)多態(tài)性就是同一

25、符號(hào)或名字在不同情況下具有不同解釋的現(xiàn)象,即是指同一個(gè)函數(shù)的多種形態(tài)。支持兩種多態(tài)性,編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。這主要產(chǎn)生不同的動(dòng)作,一種是不同的對(duì)象在收到相同的消息時(shí),多態(tài)性有兩種表現(xiàn)形式:通過虛函數(shù)來實(shí)現(xiàn);另一種是同一對(duì)象收到相同的消息卻產(chǎn)生不同的函數(shù)調(diào)用,這主要通過函數(shù)重載來實(shí)現(xiàn)。(2)重載函數(shù)只要求函數(shù)有相同的函數(shù)名,并且重載函數(shù)是在相同作用域中定義的名字相同的不同函數(shù)。而虛函數(shù)不僅要求函數(shù)名相同,而且要求函數(shù)的簽名、返回類型也相同。也就是說函數(shù)原型必須完全相同,而且虛函數(shù)特性必定是體現(xiàn)在基類和派生類的類層次結(jié)構(gòu)中。重載函數(shù)可以是成員函數(shù)或友員函數(shù),而虛函數(shù)只能是非靜態(tài)成員函數(shù)。

26、構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載。正好相反,構(gòu)造函數(shù)不能定義為虛函數(shù),析構(gòu)函數(shù)能定義為虛函數(shù)。重載函數(shù)的調(diào)用是以所傳遞參數(shù)序列的差別作為調(diào)用不同函數(shù)的依據(jù)而虛函數(shù)是根據(jù)對(duì)象的不同去調(diào)用不同類的虛函數(shù)。重載函數(shù)在編譯時(shí)表現(xiàn)出多態(tài)性,是靜態(tài)聯(lián)編;而虛函數(shù)則在運(yùn)行時(shí)表現(xiàn)出多態(tài)性是動(dòng)態(tài)聯(lián)編,動(dòng)態(tài)聯(lián)編是 C+ 的精髓。(3)包含有純虛函數(shù)的類稱為抽象類。抽象類用來描述一組子類的共同的操作接口,它用作基類, 而接口的完成實(shí)現(xiàn)由派生類提供。抽象類的派生類不一定要給出純虛函數(shù)的實(shí)現(xiàn)。如果沒有在派生類中給出純虛函數(shù)的實(shí)現(xiàn)中,則需仍將它說明為純虛函數(shù),否則編譯器將給出錯(cuò)誤信息。說明了純虛函數(shù)的派生類仍是抽象類。

27、(4)能聲明虛析構(gòu)函數(shù)。 如果一個(gè)類的析構(gòu)函數(shù)是虛函數(shù),那么,由它派生而來的所有子類的析構(gòu)函數(shù)也是虛函數(shù)。 delete 運(yùn)算符和析構(gòu)函數(shù)一起工作,當(dāng)使用delete 刪除一個(gè)對(duì)象時(shí), delete 隱含著對(duì)析構(gòu)函數(shù)的一次調(diào)用,如果析構(gòu)函數(shù)為虛函數(shù),則這個(gè)調(diào)用采用動(dòng)態(tài)聯(lián)編。這樣保證了基類類型的指針能夠調(diào)用適當(dāng)?shù)奈鰳?gòu)函數(shù)針對(duì)不同的對(duì)象進(jìn)行清理工作。程序設(shè)計(jì)題(2)/xt5_2.cpp/應(yīng)用實(shí)例#include <iostream>#include <string>using namespace std;class Shapepublic:Shape();void show

28、();virtual Shape()virtual float area()=0;virtual string shapename()=0;protected:string name;static int count;Shape:Shape()潣瑵 ?請(qǐng)輸入 ;count=count+1;void Shape:show()潣瑵 ?第 ?挼畯瑮 ?個(gè)圖形是 <<shapename();潣瑵 ?,面積為 <<area()<<endl;float total(Shape *s,int n)float sum=0;for(int i=0;i<n;i+)sum+

29、=si ->area();delete si;return sum;class Triangle:public Shapepublic:Triangle();Triangle()cout<<Triangle destructor is called<<endl;float area()return h*w*0.5;瑳楲杮猠慨?dāng)?shù)慮敭?湻浡 ?三角形 ;return name;protected:float h, w;Triangle:Triangle()float myw,float myh;潣瑵 ?三角形的底和高:;cin >>myw>>m

30、yh;w=myw;h=myh;class Rectangle:public Shapepublic:Rectangle();Rectangle()cout<<Rectangle destructor is called<<endl;float area()return l*w;瑳楲杮猠慨?dāng)?shù)慮敭?湻浡 ?矩形 ;return name;protected:float l, w;Rectangle:Rectangle()float myl,float myw;潣瑵 ?矩形的長(zhǎng)和寬:;cin >>myl>>myw;l=myl;w=myw;class C

31、ircle:public Shapeprotected:float radius;public:Circle();Circle()cout<<Circle destructor is called<<endl;float area()return radius*radius*3.14;瑳楲杮猠慨?dāng)?shù)慮敭?湻浡 ?圓 ;return name;Circle:Circle()float r;潣瑵 ?圓的半徑: ;cin >>r;radius=r;int Shape:count=0;int main()Shape *s4;s0=new Triangle();s0 -

32、>show();s1=new Rectangle();s1 ->show();s2=new Circle();s2 ->show();s3=new Circle();s3 ->show();float sum=total(s,4);潣瑵 ?上述圖形的面積和為:;cout<<sum<<endl;return 0;章習(xí)題答案6 第填空題(1) 函數(shù)(2) 非靜態(tài)成員函數(shù)友員函數(shù)(3) 少(4) 對(duì)象的引用(5) 整型(6) 多選擇題(1)B(2)C(3) A(4)C判斷題(1)t(2) f(3) t(4) f操作題(2) 提示:需要聲明如下形式帶默認(rèn)

33、值的構(gòu)造函數(shù):fraction(int x=0,int y=1);需要定義一個(gè)成員函數(shù)去優(yōu)化分?jǐn)?shù),如化簡(jiǎn)、不讓負(fù)號(hào)在分母處等。參考代碼如下:void fraction:optimization()int gcd,min,max;if(fenzi=0)/ 如分子為0,則分母為1 后,返回fenmu=1;return;gcd=(abs(fenzi)>abs(fenmu)?abs(fenmu):abs(fenzi);if(gcd=0)return;/以下用輾轉(zhuǎn)相除法求最大公約數(shù)if(abs(fenzi)>abs(fenmu)max=fenzi;min=fenmu;elsemin=fenz

34、i;max=fenmu;dogcd=max%min;max=min;min=gcd;while(gcd!=0);fenzi/=max;fenmu/=max;if(fenzi<0&&fenmu<0)fenzi= -fenzi;fenmu= -fenmu;elseif(fenzi<0&&fenmu>0)fenzi=fenzi;fenmu=fenmu;elseif(fenzi>0&&fenmu>0)fenzi=fenzi;fenmu=fenmu;if(fenzi>0&&fenmu<0)fe

35、nzi= -fenzi;fenmu= -fenmu;(3) 提示:分?jǐn)?shù)化簡(jiǎn)后再比較。/第六章例題: 6.3#include <iostream>using namespace std;class complexpublic:complex(double r=0.0,double i=0.0);complex operator +(complex c);complex operator -(complex c);void display();private:double real,imag;complex complex:(double )第 7 章習(xí)題答案名詞解釋題函數(shù)模板:一個(gè)帶

36、類屬參數(shù)的函數(shù)。類模板:一個(gè)帶類屬參數(shù)的類模板函數(shù):通過參數(shù)實(shí)例化可以再構(gòu)造出具體的函數(shù)。模板類:通過參數(shù)實(shí)例化可以再構(gòu)造出具體的類。填空題(1) 函數(shù)模板類模板(2) template(3) classtypename(4) 類屬參數(shù)類似(5) 沒有(6) 類模板(7) 順序容器關(guān)聯(lián)容器(8)輸入迭代器輸出迭代器前向迭代器雙向迭代器隨機(jī)訪問迭代器選擇題 (5) ABD(3) AB(4) C(1) A(2) A判斷題 (5) f(1) t(2) f(3) t(4) f程序設(shè)計(jì)題)( (1)xt7_1.cpp (2)( xt7_2.cpp ) 章習(xí)題答案8第填空題流(1)流類 標(biāo)準(zhǔn)輸入 (2)(

37、3)cincoutcerrclog(4) fstream.h(5)ios 類的成員函數(shù)使用控制符(6)順序文件隨機(jī)讀寫文件(7)輸入文件流輸出文件流輸入 /輸出文件流(8) 一個(gè)指定的文件(9) 0(10) readwrite選擇題(1)B(2) A(3) BCD(4)C(5) A(6) C(7) AB(8) ADBC(9)D(10) B(11)A(12) BC(13) C(14)C(15)BCD(16) C判斷題(1) f(2) t(3)t(4)f(5) t(6) f簡(jiǎn)答題(1)從流類庫(kù)的基本結(jié)構(gòu)可以看到,ios類是istream類和ostream 類的基類,從ios類公有派生istream和 ostream 兩個(gè)類,而iostream類通過多重繼承istream類和ostream 類而產(chǎn)生的。如果不將ios類作為其派生類的虛基類,可能會(huì)產(chǎn)生二義性。(2)在文本文件中,每個(gè)字節(jié)存放一個(gè)ASCII代碼表示一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論