面向?qū)ο蟪绦蛟O(shè)計(jì)(C)實(shí)驗(yàn)_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C)實(shí)驗(yàn)_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C)實(shí)驗(yàn)_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C)實(shí)驗(yàn)_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C)實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)(C+)實(shí)驗(yàn)軟件工程08實(shí)驗(yàn)一 C+程序設(shè)計(jì)基礎(chǔ)練習(xí)1實(shí)驗(yàn)?zāi)康?1)學(xué)習(xí)編寫簡單的C+程序并掌握C+程序的基本格式與規(guī)范。(2)理解C+程序結(jié)構(gòu)的特點(diǎn)。(3)學(xué)習(xí)C+程序基本的輸入輸出操作。(4)學(xué)習(xí)數(shù)據(jù)類型常量和變量以及修飾符的使用。(5)學(xué)習(xí)基本的函數(shù)定義與調(diào)用方法。(6)學(xué)習(xí)作用域運(yùn)算符的功能與基本使用方法。(7)學(xué)習(xí)內(nèi)存的動態(tài)分配與釋放方法。(8)學(xué)習(xí)引用的概念,掌握引用的基本使用方法。2實(shí)驗(yàn)基本要求 (1)輸入并運(yùn)行所給的參考程序1,并將程序中的注釋部分也輸入計(jì)算機(jī),體會和理解程序的基本格式規(guī)范。(2)編制一個(gè)完整的包含輸入和輸出的簡單C+程序,如參考程序2和參考程序

2、3。掌握輸入輸出及其格式控制的基本使用方法。(3)輸入并調(diào)試參考程序4和參考程序5,體會和理解內(nèi)置函數(shù)與函數(shù)重載的概念與基本使用方法。 (4)輸入并調(diào)試參考程序6和參考程序7。體會和理解作用域運(yùn)算符的概念與基本使用方法。 (5)輸入并調(diào)試參考程序8和參考程序9,體會和理解內(nèi)存動態(tài)分配的概念與new、delete運(yùn)算符的基本使用方法。3實(shí)驗(yàn)基本步驟 (1)建立一個(gè)控制臺應(yīng)用程序項(xiàng)目baseform1,向其中添加個(gè)源程序文件sumcpp。按照所給的程序代碼輸入到計(jì)算機(jī)中,檢查和調(diào)試程序,在確認(rèn)沒有發(fā)現(xiàn)錯誤之后,選擇【Build】【Build sum.exe】編譯源程序,再選擇【Build】【Exe

3、cute sum.exe】運(yùn)行程序并觀察輸出結(jié)果。若有問題,則需要重新檢查程序。說明:在C+程序中如果使用了系統(tǒng)提供的些功能(如cin和cout),就必須在程序的首部首先聲明相關(guān)的包含這些功能的頭文件(如iostream.h),否則,系統(tǒng)無法找到實(shí)現(xiàn)這些功能的代碼。在C+語言中個(gè)頭文件就是一個(gè)類庫,類與類的預(yù)定義對象就包含在其中。所以,在使用這些類庫中所包含的預(yù)定義對象時(shí),必須在程序首部加以聲明。/參考程序1/sum.cpp#include <iostream.h>int add(int a ,int b);int main() int x,y,sum; cout<<&

4、quot;Enter two numbers:"<<'n' cin>>x; cin>>y; sum=add(x,y); cout<<"The sum is:"<<sum<<'n' return 0;int add(int a,int b) int c; c=a+b; return c; 運(yùn)行結(jié)果:(2)按照參考程序l的輸入與調(diào)試方法,輸入、檢查、調(diào)試和運(yùn)行參考程序2和參考程序3,掌握輸入輸出及其格式控制的基本使用方法。/參考程序2#include <ios

5、tream.h>int main() char name20; cout<<”Hello,your name:”; cin>>name; cout<<name;return 0;運(yùn)行結(jié)果:/參考程序3#include <iostream.h>int main() int x=25; cout<<hex<<x<< <<dec<<x<< <<oct<<x<<n;運(yùn)行結(jié)果:(3)按照參考程序1的輸入與調(diào)試方法,輸入、檢查、調(diào)試和運(yùn)行參考程序

6、4和參考程序5。理解內(nèi)置函數(shù)與函數(shù)重載的概念與基本使用方法。/參考程序4#include <iostream.h>inline int doub(int x)return x*2;int main() for(int i=1;i<3;i+) cout<<i<<”doubled is ”<<doub(i)<<endl; cout<<”1+2 doubled is ”<<doub(1+2)<<endl;運(yùn)行結(jié)果:/參考程序5#include <iostream.h>int mul(in

7、t x,int y)return x*y;int mul(int x,int y,int z)return x*y*z;void main()int a=3,b=4,c=5;cout<<a<<*<<b<<=<<mul(a,b)<<endl;cout<<a<<*<<b<<*<<c<<=<<mul(a,b,c)<<endl;(4)按照參考程序1的輸入與調(diào)試方法,輸入、檢查、調(diào)試和運(yùn)行參考程序6和參考程序7,并觀察輸出結(jié)果,體會和理解

8、作用域運(yùn)算符的概念與基本使用方法。/參考程序6#include <iostream.h>int avar=10;main() int avar; avar=25; cout<<”avar is ”<<avar<<endl; return 0;運(yùn)行結(jié)果:/參考程序7#include <iostream.h>int avar;main()int avar;avar=25; /局部變量avar:avar=10; /全局變量avar cout<<”local avar=”<<avar<<endl;cout&

9、lt;<”global avar=”<<:avar<<endl;return 0;運(yùn)行結(jié)果:(5)按照參考程序1的輸入與調(diào)試方法,輸入、檢查、調(diào)試和運(yùn)行參考程序8和參考程序9,并觀察輸出結(jié)果,體會和理解內(nèi)存動態(tài)分配的概念與new、delete運(yùn)算符的基本使用方法。/參考程序8#include <iostream.h>main()int *p; /聲明一個(gè)整型指針變量p p=new int; /動態(tài)分配一個(gè)int型存儲區(qū),并將首地址賦給p*p=10;cout<<*p;delete p; /撤銷指針,釋放p指向的存儲空間return 0;運(yùn)行結(jié)

10、果:/參考程序9#include <iostream.h>main() int *p; p=new int; if(!p) cout<<”allocation failuren”; return 1;*p=20;cout<<*p;delete p;return 0;運(yùn)行結(jié)果:4. 實(shí)驗(yàn)結(jié)論:實(shí)驗(yàn)二  類和對象1實(shí)驗(yàn)?zāi)康模?1) 掌握Visual C+6.0基本操作(2) 了解C+程序運(yùn)行環(huán)境;(3) 掌握簡單的C+程序的開發(fā)過程(編輯、編譯、連接和運(yùn)行)。(4) 掌握類及其成員的定義方法;(5) 掌

11、握對象的創(chuàng)建方法;2實(shí)驗(yàn)內(nèi)容:2.1按要求分析程序指出程序運(yùn)行的結(jié)果:1)分析下面的程序,并給出程序運(yùn)行的結(jié)果:#include<iostream.h>class changechar c1,c2;public:   void set(char a)c2=(c1=a)-32);   void print()   cout<<c1<<" can be upwritten as "<<c2<<endl;void main()cha

12、nge a,b;a.set('a');b.set('b');a.print();b.print();運(yùn)行結(jié)果:程序分析:2)分析下面的程序,并給出輸出結(jié)果:#include<iostream.h>class pairchar c1,c2;public:   void set(char b)   c1=1+(c2=b);   unsigned where_am_I()   return(unsigned)this); 

13、60; void print()   cout<<c1<<"+"<<c2<<"t"void main()pair a,b,c;a.set('A');b.set('B');c.set('C');a.print();cout<<"is at "<<a.where_am_I()<<'n'b.print();cout<<"is at &

14、quot;<<b.where_am_I()<<'n'c.print();cout<<"is at "<<c.where_am_I()<<'n'運(yùn)行結(jié)果:程序分析:2.2編寫并調(diào)試程序:1)下面是一個(gè)類的測試程序,給定主函數(shù),請寫出類的定義,構(gòu)成一個(gè)完整的程序,使執(zhí)行程序后輸出結(jié)果為:88-32=56給定的主函數(shù)為:void main()   Tst t;   t.init(88,32);   t

15、.print();2)編程分析由主函數(shù)可知,要創(chuàng)建的類名為Tst,一個(gè)類對象為t,類中含有兩個(gè)公有成員函數(shù)init()和print(),利用函數(shù)init()對兩個(gè)私有成員數(shù)據(jù)賦值,即為減數(shù)與被減數(shù)的數(shù)值,為了程序的實(shí)現(xiàn)需要定義第三個(gè)成員數(shù)據(jù)作為減法之差。3)源程序#include<iostream.h>class Tst;void main()   Tst t;   t.init(88,32);   t.print();4)運(yùn)行結(jié)果88-32=565)調(diào)試情況分析  

16、60;3.實(shí)驗(yàn)結(jié)論:實(shí)驗(yàn)三   類的應(yīng)用1. 實(shí)驗(yàn)?zāi)康模?)  掌握類及成員的定義方法;2)  掌握對象的創(chuàng)建方法;3)  掌握對象數(shù)組、對象指針及*this指針的使用。2.實(shí)驗(yàn)內(nèi)容:2.1 分析下面的程序,指出錯誤的地方原來的程序如下:Class CSample int a=2.5;Public:Int b;Void Print()cout<<a+b<<n;Void Set(int x,int y)A=x;Y=b;Void main()CSample Sam1,Sam2

17、;Sam1.Set(2,3);Sam2.Set(5,6);Sam1.Print();Sam2.Print();Cout<<sam1.a+sam2.a<<endl;Cout<<sam1.b+sam2.b<<endl;修改后的程序如下:#include<iostream.h>class csample    int main()           csample sam1,sam2;

18、60;      sam1.Set(2,3);       sam2.Set(5,6);       sam1.Print();       sam2.Print();       cout<<sam1.a+sam2.a<<endl;&

19、#160;      cout<<sam1.b+sam2.b<<endl;       return 0;    程序運(yùn)行的結(jié)果:a+b=5a+b=11792.2編寫并調(diào)試程序:1)按下面要求編程  定義一個(gè)描述學(xué)生基本情況的類,數(shù)據(jù)成員包括姓名、學(xué)號、英語、數(shù)學(xué)、計(jì)算機(jī)成績。成員函數(shù)包括設(shè)置姓名、學(xué)號和三門課程的成績、輸出數(shù)據(jù)、以及求平均值。  設(shè)計(jì)主函數(shù),在主

20、函數(shù)里調(diào)用設(shè)置“姓名、學(xué)號和三門課程的成績”的成員函數(shù)設(shè)置各數(shù)據(jù)調(diào)用輸出數(shù)據(jù)成員函數(shù),實(shí)現(xiàn)各數(shù)據(jù)的輸出;調(diào)用求平均值的成員函數(shù),求三門課的平均成績,并輸出顯示。程序如下:#include<iostream.h>class   student                    void   main()  

21、;          運(yùn)行結(jié)果:  2)按下面要求編程定義一個(gè)滿足下列要求的類CDate;a.    有三個(gè)成員數(shù)據(jù):年、月、日;b.    有設(shè)置日期的成員函數(shù);c.    有用格式“月日年”輸出日期的成員函數(shù);d.    有對當(dāng)前日期加一天的成員。設(shè)計(jì)主函數(shù),在主函數(shù)里創(chuàng)建對象;調(diào)用設(shè)置日期的成員函數(shù),設(shè)置當(dāng)天的日期;調(diào)用輸

22、出日期的成員函數(shù)輸出當(dāng)天日期;調(diào)用對當(dāng)前日期加一天的成員函數(shù),然后再調(diào)用輸出日期的成員函數(shù),輸出第二天的日期。 程序如下:#include <iostream.h>class CDatevoid main()    運(yùn)行結(jié)果:3.有一個(gè)類說明如下:Class funint I,j;Public:Int s,k;Void SetData(int,int,int,int);Void print();要求:a.    完成函數(shù)SetData(int,int,int,int)的定義,該函數(shù)用于設(shè)置各成員數(shù)據(jù);完

23、成函數(shù)void print()的定義;該函數(shù)用于輸出各成員數(shù)據(jù);b.    設(shè)計(jì)主函數(shù),在主函數(shù)里定義兩個(gè)對象:Fun s1,s2;c.    在主函數(shù)里調(diào)用SetData()成員函數(shù),設(shè)置各個(gè)對象的數(shù)據(jù),調(diào)用print()成員函數(shù)輸出數(shù)據(jù)成員函數(shù),實(shí)現(xiàn)各對象的數(shù)據(jù)的輸出。程序如下:#include <iostream.h>class funint i,j;public:    int s,k;    void SetDat

24、a(int,int,int,int);    void print();void fun:SetData(int a,int b,int c,int d)    void fun:print()    int main()    fun s1,s2;    s1.SetData(1,2,3,4);    s2.SetData(5,6,7,8); &

25、#160;  s1.print();    s2.print();    return 0;運(yùn)行結(jié)果:3.實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)四 成員函數(shù)的重載1、實(shí)驗(yàn)?zāi)康募耙螅?)掌握普通函數(shù)重載的方法2)掌握成員函數(shù)重載的方法2、實(shí)驗(yàn)內(nèi)容:2.1分析下面程序,指出程序運(yùn)行的結(jié)果#include<iostream.h>class ListClassint *List;unsigned nMax;unsigned nElem;public:void Init(int n=10)  &

26、#160;                                  List=new int n;nMax=n;nElem=0;    int Elem(int);int &Elem(unsigned

27、n)return Listn;unsigned Elem(void)return nElem;unsigned Max(void)return nMax;void Print(void);int GetElem(int i)if (i>=0)&&(i<=nElem)return Listi;else return 0;void Destroy(void) delete nMaxList;int ListClass:Elem(int elem)        if(nElem<nMa

28、x)ListnElem+=elem;return nElem;Else                            int *list;              

29、60;              list=new int nMax+1;for(int i=0;i<nElem;i+) listi=Listi;delete nMaxList;nMax+;List=list;ListnElem+=elem;return nElem;void ListClass:Print(void)           &

30、#160;    /輸出數(shù)組內(nèi)容for(int i=0;i<nElem;i+) cout<<Listi<<'t'cout<<'n'void main(void)ListClass list,list1;list.Init(10);list1.Init(20);for(int i=0;i<10;i+)                

31、;               list1.Elem(i);cout<<"線性表list的元素的個(gè)數(shù)為:"<<list.Elem()<<'n'cout<<"線性表list長度為:"<<list.Max()<<'n'cout<<"線性表list1的元素的個(gè)數(shù)為:"<&l

32、t;list1.Elem()<<'n'cout<<"線性表list1的長度為:"<<list1.Max()<<'n'    list1.Print();list1.Elem(3u)=100;cout<<"現(xiàn)在線性表list1中的第三個(gè)值為:"<<list1.Elem(3u)<<'n'list1.Elem(20);list1.Elem(200);cout<<"現(xiàn)在線

33、性表list1中的最后一個(gè)元素為:"<<list1.GetElem(list1.Elem()-1)<<'n'list.Destroy();list1.Destroy();運(yùn)行結(jié)果:2.2按下面的要求編寫并調(diào)試程序:1)使用函數(shù)重載的方法定義兩個(gè)重名函數(shù),分別求出整型數(shù)的兩點(diǎn)間距離和實(shí)型數(shù)的兩點(diǎn)間距離。程序如下:運(yùn)行結(jié)果:2)定義一個(gè)Cpoint類,用成員函數(shù)的重載實(shí)現(xiàn)上題的功能。并編寫主函數(shù)測試。程序如下:實(shí)驗(yàn)結(jié)果:3)使用重載的方法編寫一個(gè)求整數(shù)、和雙精度數(shù)的平方數(shù)的類。并用一個(gè)主函數(shù)進(jìn)行測試。程序如下:#include<iostrea

34、m.h>class Squar;void main()Squar c;cout<<"2的平方是: "<<c.squ(2)<<endl;cout<<"1.1的平方是: "<<c.squ(1.1)<<endl;cout<<"1000的平方是: "<<c.squ(1000)<<endl;運(yùn)行結(jié)果:3實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)五     構(gòu)造函數(shù)與析構(gòu)函數(shù)1、實(shí)驗(yàn)?zāi)康模?)掌握構(gòu)造函數(shù)和析構(gòu)函

35、數(shù)定義方法;2)掌握構(gòu)造函數(shù)的重載、具有默認(rèn)值的構(gòu)造函數(shù)的使用方法;3)加深對構(gòu)造函數(shù)的特殊用途的理解。2、實(shí)驗(yàn)內(nèi)容:21 分析程序指出程序運(yùn)行的結(jié)果:1)分析下面程序中的對象傳遞,寫出輸出結(jié)果。#include<iostream.h>Using std:cout;Using std:endl;class Cylinderpublic:   Cylinder()   Cylinder(double r,double h);   void setcylinder(double r,double

36、h);   double getradius()return radius;   double getheight()return height;   double volume();   double surface_area();private:   double radius;   double height;const double PI=3.1415926;Cylinder:Cylinder(double

37、r,double h)   radius=r;   height=h;void Cylinder:setcylinder(double r,double h)   radius=r;   height=h;double Cylinder:volume()   double vol;   vol=PI*radius*radius*height;   return vol;double Cy

38、linder:surface_area()   double area;   area=2*PI*radius*height+2*PI*radius*radius;   return area;void main()   Cylinder cylinder1(7.0,12.0),cylinder2;   cylinder2.setcylinder(12.3,18.7);   cout<<"the

39、 radius of cylinder1 is:t"<<cylinder1.getradius()<<endl;   cout<<"the height of cylinder1 is:t"<<cylinder1.getheight()<<endl;   cout<<"the volume of cylinder1 is:t"<<cylinder1.volume()<<endl; 

40、  cout<<"the surfacearea of cylinder1 is:t"<<cylinder1.surface_area()<<endl;   cout<<"the radius of cylinder2 is:t"<<cylinder2.getradius()<<endl;   cout<<"the height of cylinder2 is:t"<

41、<cylinder2.getheight()<<endl;   cout<<"the volume of cylinder2 is:t"<<cylinder2.volume()<<endl;   cout<<"the surfacearea of cylinder2 is:t"<<cylinder2.surface_area()<<endl;運(yùn)行結(jié)果:2) 分析下面的程序,指出程序的錯誤。#include&

42、lt;iostream.h>#include<stdlib.h>class Sample   int i;public:int j;   Sample(int x)         i=x;/cout<<"i="<<i<<endl;      Sample()    

43、0;      exit(1);       cout<<"撤消"<<endl;   void main()  Sample a1(10),a2(20);exit(1);    cout<<"撤消"<<endl;3)將下面的程序補(bǔ)充完整#include<iostream.h>class testpr

44、ivate:   int num;   double f1;public:   test();   test(    );   getint()return num;   double getfloat()return f1;test:test()   cout<<"默認(rèn)初始化"<<endl;  

45、; cout<<"調(diào)用構(gòu)造函數(shù)1"<<endl;      num  =0;      f1 =0.0;test: test( )   cout<<"初始化"<<endl;   cout<<"調(diào)用構(gòu)造函數(shù)2"<<endl;     

46、60; void main()   test a;  test b(2,5.5);22 編寫并調(diào)試程序編寫一個(gè)實(shí)現(xiàn)兩個(gè)數(shù)相減的類的測試程序,請寫出類的定義,構(gòu)成一個(gè)完整的程序,要求調(diào)用類的構(gòu)造函數(shù)和析構(gòu)函數(shù)時(shí)均有明確的輸出信息。#include<iostream.h>Using std:cout;Using std:endl;class Cha   int a,b;public:   Cha(int,int);   void print();C

47、ha:Cha(int x,int y)  void Cha:print()   void main()   Cha t(88,32);   t.print();程序運(yùn)行結(jié)果:3.實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)六 對象成員1、實(shí)驗(yàn)?zāi)康募耙?)理解對象成員的概念2)掌握對象成員的初始化方法2、預(yù)習(xí)對象成員,對象成員的創(chuàng)建和使用,*this指針等相關(guān)知識。3、 實(shí)驗(yàn)內(nèi)容1 分析調(diào)試程序指出程序運(yùn)行的結(jié)果1)分析下面程序中對象傳遞,寫出輸出結(jié)果.#include<iostream.h>class

48、 Aint i;public:A(int x) i=x; int get() return i;int cube(A a)return a.get()*a.get();void main()A a1(10),a2(20);cout<<cube(a1)<<endl;cout<<cube(a2)<<endl;實(shí)驗(yàn)結(jié)果:2)分析對象成員的調(diào)用,寫出程序結(jié)果#include<iostream.h>#include<stdio.h>class Bprivate:int a,b;public:B()B(int i,int j);voi

49、d showb();class Aprivate:B c;public:A()A(int i,int j);void showa()a=i;b=j;A:A(int i,int j):c(i,j)void A:showa()c.showb();B:B(int i,int j)a=i;b=j;void B:showb()cout<<"a="<<","<<'t'<<"b="<<endl;void main()A a1(5,6);a1.showa();實(shí)驗(yàn)結(jié)果:2.編

50、寫程序編寫一類Cpoint表示一個(gè)點(diǎn)的信息,在次基礎(chǔ)上編寫一個(gè)表示三角形的類tria,頂點(diǎn)為其對象成員,編寫完整的程序輸出三角形面積.#include<iostream.h>#include<math.h>class Ctria;void main()Ctria a1;a1.SetData(3,4,5);cout<<"三角形面積="<a1.Area()<<endl;輸出結(jié)果:4、實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)七 成員函數(shù)和友員函數(shù)1. 實(shí)驗(yàn)?zāi)康?)掌握const對象,const成員函數(shù)和const成員數(shù)據(jù)的使用;2)掌握友員函數(shù)的定義和

51、使用。2實(shí)驗(yàn)內(nèi)容:21分析程序指出程序運(yùn)行的結(jié)果:#include<iostream.h>class Sample int n;public:Sample(int i) n=i;void setvalue(int i) n=i;voiddisplay() cout<<"n=z"<<n<<endl;void main()Sample s(5);s.setvalue(8);s.display();程序運(yùn)行結(jié)果:2.2編寫并調(diào)試程序1)編寫一個(gè)程序求直角坐標(biāo)中一個(gè)點(diǎn)到直線的距離。要求設(shè)計(jì)一個(gè)點(diǎn)類point,含有兩個(gè)公有成員數(shù)據(jù)x和y

52、,代表點(diǎn)的坐標(biāo)。另一個(gè)類為直線類line,它有三個(gè)私有成員數(shù)據(jù)a,d,c。分別代表直線方程ax+by+c=0的系數(shù)。在類line中設(shè)計(jì)一個(gè)友元函數(shù)distance計(jì)算一個(gè)點(diǎn)到直線的距離。點(diǎn)(x,y)到直線ax+by+c=0的距離distance的計(jì)算公式如下: distance=|ax+by+c|/sqrt(a*a+b*b)請根據(jù)下面給出的部分程序編寫直線類line及其成員函數(shù),以組成完整的程序。#include<iostream.h>#include<math.h>class pointpublic:float x,y;point(float i,float j)x=

53、i;y=j;void main()point p1(2,4);line l1(1,2,3);cout<<"distance="<<distance(p1,l1)<<endl;程序運(yùn)行結(jié)果:2)編寫一類Cpoint表示一個(gè)點(diǎn)的信息。在此基礎(chǔ)上編寫一個(gè)表示三角形的類tria,定點(diǎn)為其對象成員。編寫完整的程序輸出三角形的面積。要求用友元函數(shù)來實(shí)現(xiàn)三角形面積的輸出。程序如下:#include<iostream.h>#include<math.h>class Cpoint public:float a1,b1;Cpoint(

54、float i,float j)a1=i;b1=j;class triadouble L1,L2,L3,s;public: double area; Cpoint A,B,C;tria(float a,float b,float c,float d,float e,float f):A( a,b),B(c,d),C(e,f)L1=sqrt(A.a1-B.a1)*(A.a1-B.a1)+(A.b1-B.b1)*(A.b1-B.b1);L2=sqrt(A.a1-C.a1)*(A.a1-C.a1)+(A.b1-C.b1)*(A.b1-C.b1);L3=sqrt(B.a1-C.a1)*(B.a1-C.

55、a1)+(B.b1-C.b1)*(B.b1-C.b1);double are()s=(L1+L2+L3)/2);area=sqrt(s*(s-L1)*(s-L2)*(s-L3);return area;friend void print(tria D);void print(tria D)cout<<"三角形面積為: "<<D.area<<'n'void main() tria D(4.0,2.0,3.0,4.0,5.0,6.0);D.are(); print(D); 程序運(yùn)行結(jié)果:3實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)八 靜態(tài)成員1、實(shí)驗(yàn)?zāi)康?/p>

56、:1)掌握靜態(tài)成員數(shù)據(jù)的定義及使用;2)掌握靜態(tài)成員數(shù)據(jù)的定義及使用。2、實(shí)驗(yàn)內(nèi)容:21 分析下面的程序,指出程序運(yùn)行的結(jié)果。#include<iostream.h>class Sampleint a,b;static int c;public:Sample()a=b=0;c+;void show()cout<<"a="<<a<<','<<"b="<<b<<','<<"c="<<c<<

57、endl;int Sample:c=1;void main()Sample a1,a2;a1.show();a2.show();程序運(yùn)行結(jié)果如下:簡要分析:1、靜態(tài)成員是類的一個(gè)成員,在創(chuàng)建對象前就為它分配了內(nèi)存空間,并且它的數(shù)值是供所有對象共享的一種特殊的成員。2、靜態(tài)成員包括靜態(tài)成員數(shù)據(jù)和靜態(tài)成員函數(shù)。3、靜態(tài)成員函數(shù)必須要有確定的值,而且必須在類體內(nèi)聲明一次。由于在類定義中不能對成員數(shù)據(jù)據(jù)直接進(jìn)行初始化,因此必須在類體外再聲明一次并進(jìn)行初始化。在類體內(nèi)聲明時(shí),靜態(tài)成員數(shù)據(jù)和靜態(tài)成員函數(shù)前都必須加關(guān)鍵字static,而在類體外聲明時(shí)就不用再寫了。22編寫并調(diào)試程序。1)編寫一個(gè)名為scor

58、e的類,用于統(tǒng)計(jì)一個(gè)班的學(xué)生成績。其中使用一個(gè)靜態(tài)成員數(shù)據(jù)totals來存儲總分及一個(gè)靜態(tài)成員函數(shù)re_totals()返回該總分。并編寫相應(yīng)的測試程序。程序編寫如下:#include<iostream.h>class scoreint mark10;public: static int tals;static int num;static int re_tals()return tals;void set() int i;for(i=0;i<10;i+)cin>>marki;tals=tals+marki;num+;cout<<"The s

59、cores of the class are following: "<<endl; for(i=0;i<10;i+) cout<<marki<<' ' cout<<'n'int get_num(void)return num;int score:tals=0;int score:num=0;void main()score t;cout<<"Please input the scores of the class:"<<endl;t.set();cout

60、<<"The number of the scores is: "<<t.get_num()<<endl;cout<<"The total score of the class is: "<<t.re_tals()<<endl;程序運(yùn)行結(jié)果:2)編寫一個(gè)名為foball的類,用于統(tǒng)計(jì)一個(gè)班的學(xué)生成績。其中使用一個(gè)靜態(tài)成員數(shù)據(jù)totals來存儲總分及一個(gè)靜態(tài)成員函數(shù)re_totals()返回該總分。并編寫相應(yīng)的測試程序。程序編寫如下:#include<iostream.h>

61、class foballint mark10;public:static int num;static int tals;static int re_tals()return tals;void set() int i;for(i=0;i<10;i+)cin>>marki;tals=tals+marki;num+;cout<<"The scores of the class are following: "<<endl; for(i=0;i<10;i+) cout<<marki<<' '

62、 cout<<'n'int get_num(void)return num;int foball: tals=0;int foball:num=0;void main()foball t;cout<<"Please input the scores of the class:"<<endl;t.set();cout<<"The number of the scores is: "<<t.get_num()<<endl;cout<<"The tot

63、al score of the class is: "<<t.re_tals()<<endl;程序運(yùn)行結(jié)果:3、實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)九 繼承1、實(shí)驗(yàn)?zāi)康?)掌握繼承的實(shí)現(xiàn)方法;2)繼承中常見問題的處理方法。2、實(shí)驗(yàn)內(nèi)容2.1分析下面的程序,指出程序運(yùn)行的結(jié)果1)分析下面的程序,指出程序運(yùn)行的結(jié)果:1#include<iostream.h>class CBasepublic:void fn1();void CBase:fn1()cout<<"調(diào)用基類類的函數(shù)fn1()n"class CDerived:public CBase

64、public:void fn1();void CDerived:fn1()cout<<"調(diào)用派生類的函數(shù)fn1()n"void main()CDerived d1;CBase *pb=&d1;CBase &pd=d1;d1.fn1();pb->fn1();pd.fn1();2運(yùn)行結(jié)果:3)分析下面的程序,指出程序運(yùn)行的結(jié)果:1#include<iostream.h>class CBase1int x;public:CBase1()x=0;cout<<"調(diào)用構(gòu)造函數(shù)CBase1()!n"CBase1

65、(int a)x=1;cout<<"調(diào)用構(gòu)造函數(shù)CBase1(int)!n"CBase1()cout<<"調(diào)用析構(gòu)函數(shù)CBase1()!n"class CBase2int y;public:CBase2()y=0;cout<<"調(diào)用構(gòu)造函數(shù)CBase2()!n"CBase2(int a)y=a;cout<<"調(diào)用構(gòu)造函數(shù)CBase2(int)!n"CBase2()cout<<"調(diào)用析構(gòu)函數(shù)CBase2()!n"class Aint x;

66、public:A()x=0;cout<<"調(diào)用構(gòu)造函數(shù)A()!n"A(int a)x=a;cout<<"調(diào)用構(gòu)造函數(shù)A(int)!n"A()cout<<"調(diào)用析構(gòu)函數(shù)A()!n"class CDerived:public CBase1,virtual public CBase2A a;public:CDerived()cout<<"調(diào)用構(gòu)造函數(shù)CDerived()!n"CDerived(int x,int y,int z):a(x),CBase1(y),CBase2(z)cout<<"調(diào)用構(gòu)造函數(shù)CDerived(int,int,int)!n"CDerived()cout<<"調(diào)用析構(gòu)函數(shù)CDerived()!n"void main()CDerived *x=new CDerived;CDerived y(2,3,4);delete x;cout<<"main()函數(shù)結(jié)束!n"實(shí)驗(yàn)結(jié)果:2.2編寫并調(diào)試程序:1)定義一個(gè)圖形類,其中有保護(hù)類型的成員數(shù)據(jù):高度和寬

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論