第四講構(gòu)造函數(shù)和靜態(tài)成員_第1頁
第四講構(gòu)造函數(shù)和靜態(tài)成員_第2頁
第四講構(gòu)造函數(shù)和靜態(tài)成員_第3頁
第四講構(gòu)造函數(shù)和靜態(tài)成員_第4頁
第四講構(gòu)造函數(shù)和靜態(tài)成員_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第四講第四講電子信息學(xué)院課程組武漢大學(xué)面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)本講要解決的問題1. 為什么要用構(gòu)造函數(shù) ? 2. 構(gòu)造函數(shù)與析構(gòu)函數(shù)3. 靜態(tài)成員 靜態(tài)成員變量和靜態(tài)成員函數(shù)4. this指針5. 綜合例子知識回顧類是現(xiàn)實(shí)世界或思維世界中的實(shí)體在計(jì)算機(jī)中的反映,它將數(shù)據(jù)以及這些數(shù)據(jù)上的操作封裝在一起。對象是具有類類型的變量。 類是對象的抽象,而對象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對象是具體的,占用存儲空間 。3為什么要用構(gòu)造函數(shù)1struct STUchar m_name12;float m_score3;float m_ave;STU employee1= LiMing,

2、 score0, score1,score2 ; class CSTUprivate:char m_name12;float m_score3;float m_ave;public:void setname(char name);void setscores(float score);float calave();void show(); CSTU s(name,score); CSTU s(“l(fā)iming”,98,97,90);/ 游戲角色類CPlayerprivate:char *m_strName; / 人物名稱int m_nLevel ; / 人物等級 int m_nCurExp ;/

3、 當(dāng)前經(jīng)驗(yàn)值int m_nCurHP;/ 當(dāng)前HPint m_nAtk;/ 物理攻擊力int m_nInt;/ 法術(shù)攻擊力int m_nDef;/ 防御力public:void Attack(CPlayer &sufferer);/ 攻擊;剛創(chuàng)建的人物對象肯定都是0級,那如何實(shí)現(xiàn)?5成員函數(shù)數(shù)據(jù)成員6/ 游戲角色類CPlayerprivate:char *m_strName; / 人物名稱int m_nLevel=0 ; / 人物等級 int m_nCurExp ;/ 當(dāng)前經(jīng)驗(yàn)值int m_nCurHP;/ 當(dāng)前HPint m_nAtk;/ 物理攻擊力int m_nInt;/ 法術(shù)攻擊

4、力int m_nDef;/ 防御力public:void Attack(CPlayer &sufferer);/ 攻擊;這樣定義行不行?類的定義并不會被分配內(nèi)存空間,所以也無法對其賦值或初始化6構(gòu)造函數(shù)與析構(gòu)函數(shù)2使用構(gòu)造函數(shù)特殊的成員函數(shù)作用: 為對象分配內(nèi)存空間、對象初始化。構(gòu)造函數(shù)缺省構(gòu)造函數(shù)自定義構(gòu)造函數(shù)特點(diǎn):特點(diǎn): 1. 1. 構(gòu)造函數(shù)名與類名相同構(gòu)造函數(shù)名與類名相同 2. 2. 無返回值,不可用無返回值,不可用voidvoid修飾修飾 3. 3. 可重載定義可重載定義 4. 4. 聲明對象時,編譯系統(tǒng)自動調(diào)用聲明對象時,編譯系統(tǒng)自動調(diào)用89/ 游戲角色類CPlayerpri

5、vate:char *m_strName; / 人物名稱int m_nLevel ; / 人物等級 int m_nCurExp ;/ 當(dāng)前經(jīng)驗(yàn)值int m_nCurHP;/ 當(dāng)前HPint m_nAtk;/ 物理攻擊力int m_nInt;/ 法術(shù)攻擊力int m_nDef;/ 防御力public:void Attack(CPlayer &sufferer);/ 攻擊CPlayer() m_nLevel = 0; ;自定義的構(gòu)造函數(shù)9CPlayer : CPlayer() m_nLevel = 0; 也可以在類的外部定義:構(gòu)造函數(shù)可以帶參數(shù):CPlayer:CPlayer(char *

6、_name)m_strName = _name;m_nLevel = 0;m_nCurExp = 0;m_nCurHP = 100;10CPlayer : CPlayer() 無自定義的構(gòu)造函數(shù)時,編譯系統(tǒng)自動生成默認(rèn)的構(gòu)造函數(shù)一個類可以定義多個不同的構(gòu)造函數(shù),通過函數(shù)參數(shù)不同來區(qū)別不同的構(gòu)造函數(shù)CPlayer:CPlayer(char *_name) CPlayer:CPlayer(char *_name, int value) 11小 結(jié)CPlayer:CPlayer(char *_name)m_strName = _name;m_nLevel = 0;m_nCurExp = 0;m_nC

7、urHP = 100;構(gòu)造函數(shù)沒有返回類型構(gòu)造函數(shù)可以通過外部傳遞參數(shù)來初始化自己的屬性構(gòu)造函數(shù)與類同名等級在這里被初始化為012利用構(gòu)造函數(shù)創(chuàng)建對象1.直接創(chuàng)建類名 對象名 (實(shí)參表);Void main()CPlayer malePlayer(“Cindy”);CPlayer femalePlayer(“Seline”);DoSomeFunction();13利用構(gòu)造函數(shù)創(chuàng)建對象2.利用指針類名 *指針對象名 = new 類名(實(shí)參表);Void main()CPlayer *malePlayer =new CPlayer(“Cindy”);CPlayer *femalePlayer=ne

8、w Cplayer(“Seline”);DoSomeFunction();14為什么類定義時不能賦值,而構(gòu)造函數(shù)里可以賦值?程序在創(chuàng)建對象的時候進(jìn)入構(gòu)造函數(shù),這個時候?qū)ο蟮膬?nèi)存空間已經(jīng)分配,所以可以進(jìn)行賦值void main()CPlayer malePlayer(“Cindy”);CPlayer femalePlayer(“Seline”);CPlayer:CPlayer(char *_name)m_strName = _name;m_nLevel = 0;15構(gòu)造函數(shù)的例子class A Public: A()cout“構(gòu)造A”; ; class BPublic: A a; B() cou

9、t“構(gòu)造B”; ; void main() B b;運(yùn)行結(jié)果:構(gòu)造A構(gòu)造B16構(gòu)造函數(shù)的例子#include class A private: int m_x; int m_y; public: A() cout“不帶參數(shù)構(gòu)造Aendl; A(int x,int y) m_x=x; m_y=y; cout帶參數(shù)構(gòu)造Aendl; ;void main() A a1; A a2(2,5);運(yùn)行結(jié)果:不帶參數(shù)構(gòu)造A帶參數(shù)構(gòu)造A1718問題1#include class A private: int m_x; int m_y;public: A(int x,int y) m_x=x; m_y=y; c

10、out帶參數(shù)構(gòu)造Aendl; ;void main() A a1; A a2(2,5);程序編譯錯誤!程序編譯錯誤!原因:有了自定義的構(gòu)造函數(shù)之后,編譯器原因:有了自定義的構(gòu)造函數(shù)之后,編譯器就不再生成默認(rèn)構(gòu)造函數(shù)了。就不再生成默認(rèn)構(gòu)造函數(shù)了。18問題2 class A Public: int *m_ip; A(); A:A() m_ip=new int;void main() A a;這樣做這樣做有沒有問題有沒有問題19析構(gòu)函數(shù)特殊的成員函數(shù)作用: 撤銷對象,返回內(nèi)存空間。特點(diǎn): 1. 函數(shù)名與類名相同,加前綴 2. 無返回值,無參數(shù)不可用void修飾 3. 無重載 4. 撤銷對象時,系統(tǒng)自

11、動調(diào)用2021/ 游戲角色類CPlayerprivate:char *m_strName; / 人物名稱int m_nLevel ; / 人物等級 int m_nCurExp ;/ 當(dāng)前經(jīng)驗(yàn)值int m_nCurHP;/ 當(dāng)前HPint m_nAtk;/ 物理攻擊力int m_nInt;/ 法術(shù)攻擊力int m_nDef;/ 防御力public:void Attack(CPlayer &sufferer);/ 攻擊CPlayer() count“constructing”endl; CPlayer();析構(gòu)函數(shù)Cplayer: Cplayer() cout“destructing”en

12、dl;21CPlayer: CPlayer() cout“destructing”endl;?22執(zhí)行結(jié)果:Void main() CPlayer malePlayer(); CPlayer femalePlayer();constructing / malePlayerconstructing / femalePlayerdestructing / ?destructing / ?22析構(gòu)函數(shù)的重要性CSomeClass:CSomeClass()m_pData = NULL;m_pData = new char1024 * 1024;CSomeClass:CSomeClass()delete

13、 m_pData;new 與 delete 必須成對使用!在構(gòu)造函數(shù)中動態(tài)分配的內(nèi)存空間可以放在析構(gòu)函數(shù)中銷毀23注意:deleted之前必須保證被delete的內(nèi)容是存在的!24析構(gòu)函數(shù)的例子#include using namespace std;class Point public: Point(int xx=0,int yy=0); /構(gòu)造函數(shù) Point(); /析構(gòu)函數(shù) private: int X,Y;24Point:Point(int xx,int yy) X=xx; Y=yy; coutThe constructor be called: X,Yendl; Point:Poi

14、nt() coutThe destructor be called: X,Yendl; void main(void) Point p1(20,30); / 自動調(diào)用構(gòu)造函數(shù) Point p2(10,200); / 自動調(diào)用構(gòu)造函數(shù)/ 退出main()主函數(shù)時自動調(diào)用析構(gòu)函數(shù)執(zhí)行結(jié)果?25執(zhí)行結(jié)果:The constructor be called:20,30The constructor be called:10,200The destructor be called: 10,200The destructor be called: 20,30析構(gòu)函數(shù)以調(diào)用構(gòu)造函數(shù)相反的順序被調(diào)用26創(chuàng)建對

15、象的過程:系統(tǒng)根據(jù)類定義的成員變量為對象分配內(nèi)存空間自動調(diào)用對象的構(gòu)造函數(shù),申請對象成員需要的資源撤消對象的過程:系統(tǒng)先自動調(diào)用對象的析構(gòu)函數(shù),釋放對象成員所占資源釋放對象所占內(nèi)存空間棧:后進(jìn)先出表27拷貝構(gòu)造函數(shù)可以用一個對象構(gòu)造另一個對象,或者用一個對象值初始化新構(gòu)造的對象。例如:Student s1(“Jenny”);Student s2=s1;/用s1的值去初始化s2對象作為函數(shù)參數(shù)傳遞時,也涉及到對象的拷貝。例如:void fn(Student fs)/.void main Student ms; fn(ms);28為什么要用拷貝構(gòu)造函數(shù)class XYZ public: XYZ()

16、 XYZ(int n)name=new charn; XYZ()delete name; protected: char * name; ;void main() XYZ s(20); XYZ t; t =s;s對象t對象資源對象不像基本數(shù)據(jù)類型那么簡單,有些對象申請了資源,如果僅僅只是二進(jìn)制內(nèi)存空間上的s拷貝,t也會擁有這個資源,從而導(dǎo)致資源歸屬權(quán)不清,引起資源管理混亂。29拷貝構(gòu)造函數(shù)的使用拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類的對象引用。class 類名 public : 類名(形參);/構(gòu)造函數(shù) 類名(類名 &對象名);/拷貝構(gòu)造函數(shù) .;類名: 類名(類名 &

17、對象名)/拷貝構(gòu)造函數(shù)的實(shí)現(xiàn) 函數(shù)體 30拷貝構(gòu)造函數(shù)的例子class Point public: Point(int xx=0,int yy=0) X=xx; Y=yy; Point(Point& p); int GetX() return X; int GetY() return Y; private: int X,Y;Point:Point (Point& p) X=p.X; Y=p.Y; cout拷貝構(gòu)造函數(shù)被調(diào)用endl;31 當(dāng)用類的一個對象去初始化該類的另一個當(dāng)用類的一個對象去初始化該類的另一個對象時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實(shí)現(xiàn)拷對象時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實(shí)現(xiàn)

18、拷貝賦值。貝賦值。int main() Point A(1,2); Point B(A); /拷貝構(gòu)造函數(shù)被調(diào)用拷貝構(gòu)造函數(shù)被調(diào)用 coutB.GetX()endl;32 若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實(shí)若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實(shí)參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。例如:數(shù)。例如:void fun1(Point p) coutp.GetX()endl; int main() Point A(1,2); fun1(A); /調(diào)用拷貝構(gòu)造函數(shù)調(diào)用拷貝構(gòu)造函數(shù)33 當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)

19、。例如:動調(diào)用拷貝構(gòu)造函數(shù)。例如:Point fun2() Point A(1,2); return A; /調(diào)用拷貝構(gòu)造函數(shù)調(diào)用拷貝構(gòu)造函數(shù)int main() Point B; B=fun2(); 34引 例:#include void fun() static int a=5; a+; couta= a endl;void main () for ( int i =0 ; i 2; i + ) fun();/ 靜態(tài)變量a是局部變量,但具有全局的生存期執(zhí)行結(jié)果:a=6;a=7;35靜態(tài)成員336靜態(tài)成員l靜態(tài)成員分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。l靜態(tài)數(shù)據(jù)成員類似于一般的static靜態(tài)變量

20、,它具有全局性。靜態(tài)數(shù)據(jù)成員屬于整個類,為類的所有對象共享。l無論類的對象有多少,類的靜態(tài)數(shù)據(jù)成員只有一份,存儲在同一個內(nèi)存空間。即使沒有創(chuàng)建類的一個對象,類的靜態(tài)數(shù)據(jù)成員也是存在的。l使用靜態(tài)數(shù)據(jù)成員保證了該數(shù)據(jù)成員值的唯一性。37靜態(tài)成員object1object2object3object4static類所創(chuàng)建的所有對象共享靜態(tài)成員的一個拷貝。類所創(chuàng)建的所有對象共享靜態(tài)成員的一個拷貝。靜態(tài)成員屬于類,不屬于類的對象靜態(tài)成員屬于類,不屬于類的對象38靜態(tài)數(shù)據(jù)成員靜態(tài)成員的聲明:放在類定義的內(nèi)部在聲明成員時以關(guān)鍵字static開頭,例如: public: static int m_nCoun

21、t;39靜態(tài)成員的初始化: int Person : m_nCount=0; 賦值必須放在類外的全局范圍內(nèi)進(jìn)行,不能在構(gòu)造函數(shù)中對其進(jìn)行賦初值必須同時指明數(shù)據(jù)類型和所屬的類靜態(tài)數(shù)據(jù)成員40靜態(tài)數(shù)據(jù)成員的訪問l公有靜態(tài)成員:三種方式(1)通過對象訪問,如: person1.m_nCount=100;(2)利用類名和作用域限定符(:)訪問,如:int Person:m_nCount=100; / 初始化(3)在成員函數(shù)中訪問,如:m_nCount+;l私有和保護(hù)靜態(tài)成員:只能在成員函數(shù)中訪問41靜態(tài)成員函數(shù)l成員函數(shù)也可以是靜態(tài)的,其聲明方式與靜態(tài)成員變量類似。 如: public: static

22、 int GetCount(); / 獲取靜態(tài)數(shù)據(jù)成員l靜態(tài)成員函數(shù)也與一個類相關(guān)聯(lián),而不只與一個特定的對象相關(guān)聯(lián)。l靜態(tài)成員函數(shù)一般是公有屬性,可以通過對象、類名和作用域限定符、在成員函數(shù)中三種方式調(diào)用靜態(tài)成員函數(shù)。-與公有屬性的靜態(tài)數(shù)據(jù)成員類似。42靜態(tài)成員變量的使用/ 游戲角色類CPlayerpublic:void Attack(CPlayer &sufferer);/ 攻擊private:static int m_nTotalPlayer;/ 總共的人物數(shù)private:char *m_strName;/ 人物名稱int m_nLevel;/ 人物等級 int m_nCurEx

23、p;/ 當(dāng)前經(jīng)驗(yàn)值int m_nCurHP;/ 當(dāng)前HPint m_nAtk;/ 物理攻擊力int m_nInt;/ 法術(shù)攻擊力int m_nDef;/ 防御力;用static關(guān)鍵字聲明這是一個靜態(tài)成員變量43所有Cplayer類的對象共用一份數(shù)據(jù)m_nTotalPlayer = 4;44/ 游戲角色類CPlayerprivate:static int m_nTotalPlayer;/ 總共的人物數(shù);int CPlayer:m_nTotalPlayer = 0;利用類名和作用域(:)對此變量進(jìn)行訪問賦值:45我們可以修改構(gòu)造和析構(gòu)函數(shù)來改變這個靜態(tài)成員變量的值CPlayer:CPlayer(c

24、har *_name)m_strName = _name;m_nLevel = 0;m_nCurExp = 0;m_nCurHP = 100;/ 攻擊力與防御力均為20以內(nèi)的隨機(jī)數(shù)m_nAtk = rand() % 20;m_nInt = rand() % 20;m_nDef = rand() % 20;m_nTotalPlayer+;CPlayer:CPlayer()cout “Byebye this lovely world :(” endl;m_nTotalPlayer-;46靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用#include #include class Personpublic: ch

25、ar m_strName20; long m_ID; static int m_nCount; / 靜態(tài)成員變量,表示已創(chuàng)建對象的數(shù)量public: Person(char*, long);/ 構(gòu)造函數(shù) static int GetCount();/ 靜態(tài)成員函數(shù);47Person:Person(char* * strName, long ID) strcpy(m_strName, strName); m_ID=ID; m_nCount+;/ 對象數(shù)目加對象數(shù)目加1int Person:GetCount() return m_nCount; / 訪問靜態(tài)成員變量訪問靜態(tài)成員變量48int Pe

26、rson:m_nCount=0;/ 初始化靜態(tài)成員變量初始化靜態(tài)成員變量void main() Person e1(LiuJun,1101051); coutPerson:m_nCountn; cout e1.m_nCountn; coutPerson:GetCount() n; coute1.GetCount() n;通過對象訪問靜通過對象訪問靜態(tài)成員變量態(tài)成員變量通過類訪問靜態(tài)通過類訪問靜態(tài)成員變量成員變量通過類調(diào)用靜態(tài)通過類調(diào)用靜態(tài)成員函數(shù)成員函數(shù)通過對象調(diào)用靜通過對象調(diào)用靜態(tài)成員函數(shù)態(tài)成員函數(shù) Person e2(WangXiaogang,1101058); coutPerson:Ge

27、tCount()n; coute2.GetCount()n; coute1.GetCount()n;e1e1和和e2e2共享靜態(tài)成員共享靜態(tài)成員變量變量m_nCountm_nCount程序運(yùn)行結(jié)果為:程序運(yùn)行結(jié)果為: 111122250靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用(續(xù))class Personprivate: char m_strName20; long m_ID; static int m_nCount;public: Person(char*, long);/ 構(gòu)造函數(shù) static int GetCount();/ 靜態(tài)成員函數(shù) long GetID() return m_ID; ;

28、普通成員函數(shù)的普通成員函數(shù)的定義與實(shí)現(xiàn)定義與實(shí)現(xiàn)如果想用一個靜態(tài)函數(shù)返回m_ID的值,該怎么實(shí)現(xiàn)?直接加static可以嗎?51class Personprivate: char m_strName20; long m_ID; static int m_nCount;public: Person(char*, long);/ 構(gòu)造函數(shù) static int GetCount();/ 靜態(tài)成員函數(shù) static long GetID() return m_ID; ;直接在普通成員函直接在普通成員函數(shù)前加數(shù)前加staticstatic靜態(tài)成員函數(shù)屬于類,不屬于哪個具體的對象,那么這里的m_ID到底

29、是誰的呢?5253class Personprivate: char m_strName20; long m_ID; static int m_nCount;public: Person(char*, long);/ 構(gòu)造函數(shù) static int GetCount();/ 靜態(tài)成員函數(shù) static long GetID(Person x) return x.m_ID; ;靜態(tài)成員函數(shù)的靜態(tài)成員函數(shù)的定義與實(shí)現(xiàn)定義與實(shí)現(xiàn)53int Person:m_nCount=0;/ 初始化靜態(tài)成員變量初始化靜態(tài)成員變量void main() Person e1(LiuJun,1101051); cout

30、Person:GetID(e1)n; coute1.GetID(e1)n; Person e2(WangXiaogang,1101058); coutPerson:GetID(e2)n; coute2.GetID(e2) e1.GetID(e1)n; cout e2.GetID(e1) e1.GetID(e2)hour=hour; this- minute=minute; this- second=second;void CTimeClass:showTime()couthour:minute:secondendl;58this指針459this指針vthis指針是一個特殊的隱藏在對象中的指針

31、,每一個處于生存期的對象都有一個this指針,用于指向?qū)ο蟊旧?。v當(dāng)類的某個非靜態(tài)成員函數(shù)被調(diào)用時,系統(tǒng)通過this指針確定是哪一個對象的該成員函數(shù)被調(diào)用。實(shí)際上,this指針總是作為一個隱含參數(shù)傳遞給類的每一個成員函數(shù)。60this指針this作用域是在類內(nèi)部,當(dāng)在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員的時候,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù)。即使你沒有寫上this指針,編譯器在編譯的時候也是加上this的,它作為非靜態(tài)成員函數(shù)的隱含形參,對各成員的訪問均通過this進(jìn)行。 61this指針下面定義的成員函數(shù)并沒有聲明this參數(shù)void Time:showTime()

32、 couthour:minute:secondendl;編譯器會把this指針作為成員函數(shù)的參數(shù):void Time:showTime(Time* this); couthour:minute: secondm_nCurExp += _exp;void CPlayer:Attack(CPlayer *this, CPlayer &sufferer)sufferer.Injured(this-m_nAtk);6566this指針的使用#include #include class Personpublic: / 可在外部直接訪問public屬性的數(shù)據(jù)成員 char m_strName20

33、; char m_ID18;public: Person(char* strName, char* ID) / 構(gòu)造函數(shù) strcpy(m_strName, strName); strcpy(m_ID, ID); void Show();66void Display(Person* pObj)/ 非成員函數(shù) coutName:m_strNameendlID:m_IDShow(); / 通過調(diào)用Show調(diào)用Display67this指針的使用2#include class CComplex private:double m_r,m_i;public:CComplex(double r=0,dou

34、ble i=0)m_r=r; m_i=i;void display()coutm_r+m_iiendl;68CComplex Add(double t)m_r+=t;return *this;void main()CComplex c1(20.3, 5);c1.display();c1.Add(45);c1.display();69關(guān)于this指針的一個經(jīng)典回答: 當(dāng)你進(jìn)入一個房子后, 你可以看見桌子、椅子、地板等, 但是房子你是看不到全貌了。 對于一個類的實(shí)例來說, 你可以看到它的成員函數(shù)、成員變量, 但是實(shí)例本身呢? this是一個指針,它時時刻刻指向你這個實(shí)例本身 70綜合例子571設(shè)計(jì)一個班級學(xué)生成績管理程序,通過輸入確定學(xué)生人數(shù)學(xué)生人數(shù)和課程數(shù)課程數(shù)。要求:計(jì)算每位學(xué)生的平均成績每位學(xué)生的平均成績,并在屏幕上輸出;計(jì)算全班同學(xué)所有課程全班同學(xué)所有課程的平均成績,并在屏幕上輸出。綜合應(yīng)用舉例72#include #include u

溫馨提示

  • 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

提交評論