![《面向?qū)ο蟪绦蛟O(shè)計》(C++)實驗指導(dǎo)書_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/1/55caa118-2bd5-448d-8dcb-8e49796de389/55caa118-2bd5-448d-8dcb-8e49796de3891.gif)
![《面向?qū)ο蟪绦蛟O(shè)計》(C++)實驗指導(dǎo)書_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/1/55caa118-2bd5-448d-8dcb-8e49796de389/55caa118-2bd5-448d-8dcb-8e49796de3892.gif)
![《面向?qū)ο蟪绦蛟O(shè)計》(C++)實驗指導(dǎo)書_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/1/55caa118-2bd5-448d-8dcb-8e49796de389/55caa118-2bd5-448d-8dcb-8e49796de3893.gif)
![《面向?qū)ο蟪绦蛟O(shè)計》(C++)實驗指導(dǎo)書_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/1/55caa118-2bd5-448d-8dcb-8e49796de389/55caa118-2bd5-448d-8dcb-8e49796de3894.gif)
![《面向?qū)ο蟪绦蛟O(shè)計》(C++)實驗指導(dǎo)書_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/1/55caa118-2bd5-448d-8dcb-8e49796de389/55caa118-2bd5-448d-8dcb-8e49796de3895.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗 1 類和對象1.1實驗?zāi)康暮鸵?1) 理解類和對象的概念,掌握聲明類和定義對象的方法。(2) 掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的實現(xiàn)方法。(3) 初步掌握使用類和對象編制C+程序。(4) 掌握對象數(shù)組、對象指針和string類的使用方法。(5) 掌握使用對象、對象指針和對象引用作為函數(shù)參數(shù)的方法。(6) 掌握類對象作為成員的使用方法。(7) 掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用方法。(8) 理解友元的概念和掌握友元的使用方法。1.2實驗內(nèi)容和步驟1. 輸入下列程序/test4-1.cpp#includeusing namespace std;class Coordinate public: Co
2、ordinate(int x1,int y1) x=x1; y=y1;Coordinate(Coordinate &p);Coordinate() cout”Destructor is callededn”; int getx() return x; int gety() return y;private: int x,y;Coordinate:Coordinate(Coordinate &p) x=p.x; y=p.y; cout”copy-initialization Constructou is calledn”;int main() Coordinate p1(3,4); Coordi
3、nate p2(p1); Coordinate p3=p2; cout”p3=(“p3.getx()”,”p3.gety()”)n”; return(0);(1) 寫出程序的運行結(jié)果。(2) 將Coordinate類中帶有兩個參數(shù)的構(gòu)造函數(shù)進(jìn)行修改,在函數(shù)體內(nèi)增添下述語句:cout”Constructor is called.n”;寫出程序的運行結(jié)果,并解釋輸出結(jié)果。(3)按下列要求進(jìn)行調(diào)試: 在主函數(shù)體內(nèi),添加下列語句:Coordinate p4;Coordinata p5(2);調(diào)試程序時會出現(xiàn)什么錯誤?為什么?如何對已有的構(gòu)造函數(shù)進(jìn)行適當(dāng)修改?(4)經(jīng)過以上第(2)步和第(3)步的修改后
4、,結(jié)合運行結(jié)果分析:創(chuàng)建不同的對象時會調(diào)用不同的構(gòu)造函數(shù)。2.設(shè)計一個4*4魔方程序,讓魔方的各行值的和等于各列值的和,并且等于兩對角線值的和。例如一下魔方:31 3 5 259 21 19 1517 13 11 237 27 29 1各行、各列以及對角線值的和都是64.【提示】 求4*4魔方的一般步驟如下:(1)設(shè)置初始魔方的起始值和相鄰元素之間的差值。例如上述魔方的初始魔方的起始值(first)和相鄰元素之間的差值(step)分別為: first=1 step=2 (2)設(shè)置初始魔方元素的值。例如上述魔方的初始魔方為: 1 3 5 7 9 11 13 15 17 19 21 23 25 2
5、7 29 31(3)生成最終魔方。方法如下: 求最大元素值與最小元素值的和sum,該實例的sum是: 1+31=32 用32減去初始魔方所有對角線上元素的值,然后將結(jié)果放在原來的位置,這樣就可求得最終魔方。本例最終魔方如下: 31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1本題的魔方類magic的參考框架如下: class magic public: void getdata(); void setfirstmagic(); void generatemagic(); void printmagic();private: int m44; int step;
6、 int first; int sum;3.設(shè)計一個用來表示直角坐標(biāo)系的Location類,在主程序中創(chuàng)建類Location的兩個對象A和B,要求A的坐標(biāo)點在第3象限,B的坐標(biāo)在第2象限,分別采用成員函數(shù)和友元函數(shù)計算給定兩個坐標(biāo)點之間的距離,要求按如下格式輸出結(jié)果: A(x1,y1),B(x2,y2) Distance1=d1 Distance1=d2其中:x1、x2、y1、y2為指定的坐標(biāo)值,d1和d2為兩個坐標(biāo)點之間的距離。【提示】 類Location的參考框架如下: class Location public: Location(double,double); double Getx(
7、) double Gety() double distance(Location &); friend double distance (Location &,Location &); private: double x,y;【#include iostream.h#include math.h class Location private:int x,y;public:Location(int i, int j):x(i),y(j) int Getx( ) return x;int Gety( ) return y;double distance(Location b);friend dou
8、ble distance(Location &a, Location &b);double distance(Location &a, Location &b) /友元函數(shù) int dx=a.x-b.x; int dy=a.y-b.y; return sqrt(dx*dx+dy*dy); double Location:distance(Location b) /成員函數(shù) int dx=x-b.x; int dy=y-b.y; return sqrt(dx*dx+dy*dy); void main( ) Location A(-10,-20),B(-40,60);coutA(A.Getx( )
9、,A.Gety( ),B(B.Getx( ),B.Gety( )endl; double d=A.distance(B); /調(diào)用成員函數(shù) coutDistance1= dendl; coutDistance2= distance(A,B)endl; /調(diào)用友元函數(shù)】 4.聲明一個Student類,在該類中包括一個數(shù)據(jù)成員score(分?jǐn)?shù))、兩個靜態(tài)數(shù)據(jù)成員total_score(總分)和count(學(xué)生人數(shù));還包括一個成員函數(shù)account()用于設(shè)置分?jǐn)?shù)、累計學(xué)生成績之和、累計學(xué)生人數(shù),一個靜態(tài)成員函數(shù)sum()用于返回學(xué)生的成績之和,另一個靜態(tài)成員函數(shù)average()用于求全班成績的
10、平均值。在main函數(shù)中,輸入 某班同學(xué)的成績,并調(diào)用上述函數(shù)求出全班學(xué)生的成績之和和平均分。5.使用C+的string類,將5個字符串按逆轉(zhuǎn)后的順序顯示出來。例如,逆轉(zhuǎn)前的5個字符串是:Germany Japan America Britain France按逆轉(zhuǎn)后的順序輸出字符串是:France Britain America Japan Germany實驗2 派生類與繼承2.1實驗?zāi)康暮鸵?1) 掌握派生類的聲明方法和派生類構(gòu)造函數(shù)的定義方法。(2) 掌握不同繼承方式下,基類成員在派生類中的訪問屬性。(3) 掌握在繼承方式下,構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序與構(gòu)造規(guī)則。(4) 學(xué)習(xí)虛基類在
11、解決二義性問題中的作用。2.2實驗內(nèi)容與步驟1.輸入下列程序。/test4_1.cpp#includeusing namespace std;class Basepublic:void setx(int i)x=i;Int getx()return x;public:int x;class Derived:public Basepublic:void sety(int i)y=i;int gety()return y;void show()cout”Base:x=”xendl;public:inty;int main()Derived bb;bb,setx(16);bb.sety(25);bb
12、.show();cout”Base:x=”bb.xendl;cout”Derived:y=”bb.yendl;cout”Base:x=”bb.getx()endl;cout”Derived:y=”bb.gety()endl;return 0;(1) 寫出程序的運行結(jié)果。(2) 按以下要求,對程序進(jìn)行修改后再調(diào)試,指出調(diào)試中出錯的原因。將基類Base中數(shù)據(jù)成員x的訪問權(quán)限改為private時,會出現(xiàn)哪些錯誤?為什么?將基類Base中數(shù)據(jù)成員x的訪問權(quán)限改為protected時,會出現(xiàn)哪些錯誤?為什么?在源程序的基礎(chǔ)上,將派生類Derived的繼承方式改為private時,會出現(xiàn)哪些錯誤?為什么?
13、在源程序的基礎(chǔ)上,將派生類Derived的繼承方式改為protected時,會出現(xiàn)哪些錯誤?為什么?2.編寫一個學(xué)生和教師的數(shù)據(jù)輸入和顯示程序。學(xué)生數(shù)據(jù)有編號、姓名、性別、年齡、系別和成績,教師數(shù)據(jù)有編號、姓名、性別、年齡、職稱和部門。要求將編號、姓名、性別、年齡的輸入和顯示設(shè)計成一個類Person,并作為學(xué)生類Student和教師類Teacher的基類。供參考的類結(jié)構(gòu)如下:class Person.;class Student:public Person.;class Teacher:public Person.;3.按要求閱讀、編輯、編譯、調(diào)試和運行以下程序。(1) 閱讀、編輯、編譯、調(diào)試
14、和運行以下程序,并寫出程序的運行結(jié)果。 /test4_3_1.cpp#include#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray;void Input();void Display(string);protected:int*alist;int length;MyArray:MyArray(int leng)if(leng=0)cout”error length”;exit(1);alist=new int leng;length=leng;if(alist=NULL)cout”assign
15、failure”;exit(1);cout”MyArray類對象已創(chuàng)建。”endl;MyArray:MyArray()delete alist;cout”MyArray類對象被撤銷?!眅ndl;void MyArray:Display(string str)int i;int *p=alist;coutstrlength”個整數(shù):“;for(i=0;ilength;i+,p+)cout*p”;coutendl;void MyArray:Inputcout”請鍵盤輸入”length”個整數(shù):”;int i;int *p =alist;for(i=0;i*p;int main()MyArray a
16、(5);a.Input();a.Display(“顯示已輸入的”);return 0;(2) 聲明一個類SortArray繼承類MyArray,在該類中定義一個函數(shù),具有將輸入的整數(shù)從小到大進(jìn)行排序的功能?!咎崾尽吭诘冢?)步的基礎(chǔ)上可增加下面的參考框架:class SortArray : public MyArray public:void Sort();SortArray(int leng):MyArray(leng)cout”SortArray類對象已創(chuàng)建?!眅ndl;virtual SortArray();SortArray:SortArray()cout”SortArray類對象被撤
17、銷?!眅ndl;void SortArray:Sort()/請自行編寫Sort函數(shù)的代碼,將輸入的整數(shù)從小到大排序。/并將主函數(shù)修改為:int main()SortArray a(5);s.Input();s.Display(“顯示排序以前的”);s.Sort();s.Display(“顯示排序以后的”);return 0;聲明一個類ReArray繼承類MyArray,在該類中定義一個函數(shù),具有將輸入的整數(shù)進(jìn)行倒置的功能?!咎崾尽吭诘冢?)步的基礎(chǔ)上可增加下面的參考框架:Class ReArray:public MyArrayPublic:Void reverse();ReArray(int
18、leng);Virtual ReArray();請讀者自行編寫構(gòu)造函數(shù)、析構(gòu)函數(shù)和倒置函數(shù)ReArray,以及修改主函數(shù)。(3) 聲明一個類AverArray繼承類MyArray,在該類中定義一個函數(shù),具有求輸入的整數(shù)平均值的功能。 【提示】 在第(1)步的基礎(chǔ)上增加下面的參考框架:class AverArray:public MyArrayPublic:AverArray(int leng);AverArray();Double Aver();請讀者自行編寫構(gòu)造函數(shù)、析構(gòu)函數(shù)和求平均值函數(shù)Aver(求解整數(shù)的平均值),以及修改主函數(shù)。(2) 聲明一個NewArray類,同時繼承了類SortA
19、rray,ReArray和AverArray,使得類NewArray的對象同時具有排序、倒置和求平均值的功能。在繼承的過程中聲明MyArray為虛基類,體會虛基類在解決二義性問題中的作用。實驗3 多態(tài)性3.1實驗?zāi)康暮鸵?1) 了解多態(tài)性的概念。(2) 掌握運算符重載的基本方法。(3) 掌握虛函數(shù)的定義和使用方法。(4) 掌握純虛函數(shù)和抽象類的概念和用法。3.2實驗內(nèi)容與步驟1.分析并調(diào)試下列程序,寫出程序的輸出結(jié)果,并解釋輸出結(jié)果。/test5_1.cpp#includeusing namespace std;class Bpublic:virtual void f1 (double x)
20、cout”B:f1(double)”xendl;void f2(double x)cout”B:f2(double)”2*xendl;void f3(double x)cout”B:f3(double)”3*xendl;class D:public Bpublic:virtual void f1(double x)cout”D:f1(double)”xendl;void f2(double x)cout”D:f2(double)”2*xendl;void f3(double x)cout”D:f3(double)”3*xf1(1.23);pb-f1(1.23);pb-f2(1.23);pb-f
21、3(1.23);pb-f3(3.14);return 0;2.編寫一個程序,其中設(shè)計一個時間類Time,用來保存時、分、秒等私有數(shù)據(jù)成員,通過重載操作符“+”實現(xiàn)兩個時間的相加。要求將小時范圍限制在大于等于0,分鐘范圍限制在059,秒鐘范圍限制在059秒?!咎崾尽繒r間類Timepublic:Time(int h=0,int m=0,int s=0);Time operator+(Time&);void disptime(string);private: int hourse; int minutes; int seconds; 3.給出下面的抽象基類container; class conta
22、iner protected: double radius; public: container(double radius1); virtual double surface_area()=0; virtual double volume()=0; ;要求建立3個繼承container的派生類cube、sphere與cylinder,讓每一個派生類都包含虛函數(shù)surface_area()和volume(),分別用來計算正方體、球體和圓柱體的表面積及體積。要求寫出主程序,應(yīng)用C+的多態(tài)性,分別計算邊長為6.0的正方體、半徑為5.0的球體,以及半徑為5.0和高為6.0的圓柱體的表面積和體積。4.
23、編寫一個程序,用于進(jìn)行集合的并、差和交運算。例如輸入整數(shù)集合9 5 4 3 6 7和2 4 6 9 ,計算出它們進(jìn)行集合的并、差和交運算后的結(jié)果?!咎崾尽縤. 可用以下表達(dá)式實現(xiàn)整數(shù)集合的基本運算: s1+s2 兩個整數(shù)集合的并運算s1-s2 兩個整數(shù)集合的差運算s1*s2 兩個整數(shù)集合的交運算ii. 參考以下Set類的框架,用于完成集合基本運算所需的各項功能。 class set public: set:set(); void set:input(int d); int set:length(); int set:getd(int i); void set:disp(); set set:o
24、perator+(set s1); set set:operator-(set s1); set set:operator*(set s1); set set:operator=(set s1); protected: int len; int sMAX; ;實驗 4 模板與異常處理4.1 實驗?zāi)康暮鸵?(1)正確理解模板的概念。 (2)掌握函數(shù)模板和類模板的聲明和使用方法。 (3)學(xué)習(xí)簡單的異常處理方法。4.2 實驗內(nèi)容和步驟 1.分析并調(diào)試下列程序,寫出運行結(jié)果并分析原因。 (1) /test6_1_1.cpp #include using namespace std; template
25、 T max (T x,T y) return xy? x:y;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main() cout”max(3,7) is “max(3,7)endl; return 0;(2)/test6_1_2.cpp #include using namespace std;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main(
26、) cout”max(3,7) is “max(3,7)endl; return 0;2. 編寫一個求任意類型數(shù)組中最大元素和最小元素的程序,要求將求最大元素和最小元素的函數(shù)設(shè)計成函數(shù)模板。3. 編寫一個程序,使用類模板對數(shù)組元素進(jìn)行排序、倒置、查找和求和。【提示】設(shè)計一個類模板template class Array .;具有對數(shù)組元素進(jìn)行排序、倒置、查找和求和功能,然后產(chǎn)生類型實參分別為int型和double型的兩個模板類,分別對整型數(shù)組與雙精度數(shù)組完成所要求的操作。4. 編寫一個程序,求輸入數(shù)的平方根。設(shè)置異常處理,對輸入負(fù)數(shù)的情況給出提示。實驗 5 C+的流類庫與輸入輸出5.1 實驗?zāi)康暮鸵螅?)掌握C+格式化的輸入輸出方法。(2)掌握重載運算符“”的方法。(3)掌握磁盤文件的輸入輸出方法。5.2 實驗內(nèi)容和步驟 1. 下面給出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在錯誤。請上機(jī)調(diào)試,使
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同學(xué)習(xí)試題
- 2025年防盜門塑鋼窗項目投資可行性研究分析報告-20241226-213937
- 電影特效與后期合成剪輯技巧探討
- 2024中國鉀肥制造行業(yè)分析報告
- 現(xiàn)代社區(qū)商業(yè)街區(qū)的科技應(yīng)用與創(chuàng)新
- 電子設(shè)計項目中的多平臺編程應(yīng)用探討
- 公司廠房維修合同范本
- 2025年中國心臟再同步化治療設(shè)備行業(yè)全景評估及投資規(guī)劃建議報告
- 生活美學(xué)視域下的網(wǎng)絡(luò)直播和短視頻創(chuàng)新與發(fā)展方向探討
- 中國球場配套設(shè)施項目投資可行性研究報告
- 包裝材料及紙制品生產(chǎn)建設(shè)項目可行性實施報告
- 財務(wù)收支月報表excel模板
- 國標(biāo)充電協(xié)議報文整理
- 水餃類產(chǎn)品質(zhì)量檢驗作業(yè)指導(dǎo)書
- 電力變壓器計算單
- 紅外測溫培訓(xùn)
- 新型城市化建設(shè)中城鄉(xiāng)結(jié)合部存在的問題及解決方案
- 質(zhì)性研究(陳向明)PPT精選文檔
- 市政小三線施工方案(共22頁)
- 靜壓樁機(jī)、鉆孔灌注樁、沉槽機(jī)CAD圖形
- 野外土名描述實例
評論
0/150
提交評論