C++上機(jī)實(shí)驗(yàn)參考模板_第1頁(yè)
C++上機(jī)實(shí)驗(yàn)參考模板_第2頁(yè)
C++上機(jī)實(shí)驗(yàn)參考模板_第3頁(yè)
C++上機(jī)實(shí)驗(yàn)參考模板_第4頁(yè)
C++上機(jī)實(shí)驗(yàn)參考模板_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告課程名稱(chēng):C+程序設(shè)計(jì)教程班級(jí):實(shí)驗(yàn)成績(jī):指導(dǎo)教師: 姓名: 實(shí)驗(yàn)項(xiàng)目名稱(chēng):類(lèi)的設(shè)計(jì)與對(duì)象使用學(xué)號(hào):上機(jī)實(shí)踐日期:實(shí)驗(yàn)項(xiàng)目編號(hào):實(shí)驗(yàn)1組號(hào):上機(jī)實(shí)踐時(shí)間:一、 目的1.熟悉C+開(kāi)發(fā)環(huán)境。2.掌握多文件結(jié)構(gòu)程序項(xiàng)目的建立過(guò)程。3.初步掌握面向?qū)ο蟪绦虻亩辔募Y(jié)構(gòu)項(xiàng)目的開(kāi)發(fā)運(yùn)行步驟。4.掌握類(lèi)的定義和使用以及類(lèi)對(duì)象的聲明和使用方法,理解具有不同訪問(wèn)屬性的成員的訪問(wèn)方式。5.掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用和編寫(xiě)方法。6.了解并掌握靜態(tài)成員、常成員的使用。二、實(shí)驗(yàn)內(nèi)容與設(shè)計(jì)思想1下面的程序在編譯時(shí)會(huì)出錯(cuò),請(qǐng)修改程序,使之能正確運(yùn)行。然后得到的正確程序分成3個(gè)文件。文件MyClass

2、.h包括類(lèi)的定義,文件MyClass.cpp包括類(lèi)成員函數(shù)的實(shí)現(xiàn),文件App.cpp包括類(lèi)的使用。調(diào)試、運(yùn)行該程序,使之獲得正確結(jié)果。#include<iostream> using namespace std; class MyClass public: MyClass() x=0;y=0; MyClass(int a = 0, b = 0); Print(); private: int x, y; ; MyClass:MyClass(int a = 0, int b =0) x = a; y = b; void MyClass:Print() cout << &qu

3、ot;x = " << x << endl; cout << "y = " << y << endl; int main() MyClass obj1,obj2(5,8);obj1.x =1;obj1.y =3;obj1.Print();obj2.Print();1 / 9return 0;實(shí)驗(yàn)代碼:MyClass.h#ifndef MYCLASS#define MYCLASS/ MyClass.h頭文件的內(nèi)容class MyClasspublic:MyClass() x = 0; y = 0; MyCl

4、ass(int a = 0, int b = 0);void Print();private:int x, y;#endifMyClass.cpp#include"MyClass.h"#include<iostream>using namespace std;MyClass:MyClass(int a , int b )x = a;y = b;void MyClass:Print()cout << "x = " << x << endl;cout << "y = " <

5、< y << endl;App.cpp#include<iostream>using namespace std;#include"MyClass.h"int main()MyClass obj1(1, 3), obj2(5, 8);obj1.Print();obj2.Print();return 0; 2已知兩個(gè)矩形的長(zhǎng)和寬,用面向?qū)ο蟮母拍罹幊糖笏鼈兊拿娣e和周長(zhǎng)。假設(shè)矩形 1 的長(zhǎng)和寬分別為 20 和 50;矩形 2 的長(zhǎng)和寬分別為 3.6 和 4.5。(先定義矩形類(lèi)再實(shí)例化兩個(gè)對(duì)象)實(shí)驗(yàn)代碼:#include<iostream>

6、;using namespace std;class rectangularpublic:rectangular(int a, int b)Long = a;Wide = b;/面積int Area( ) return Long*Wide;/周長(zhǎng)int Perimeter()return 2 * (Long + Wide);private:int Long;/長(zhǎng)int Wide;/寬;int main()rectangular rec1(1, 3), rec2(5, 8);cout << "矩形1的面積為:" << rec1.Area() <&

7、lt; endl << "矩形1的周長(zhǎng)為:" << rec1.Perimeter() << endl;cout << "矩形2的面積為:" << rec2.Area() << endl << "矩形2的周長(zhǎng)為:" << rec2.Perimeter() << endl;return 0; 3. 下面程序中定義了一個(gè)整型動(dòng)態(tài)數(shù)組,編寫(xiě)了3個(gè)構(gòu)造函數(shù)。#include<iostream> using namespace

8、std; class IntArray public:IntArray(int sz); / 數(shù)組初始化為sz個(gè)元素,初值全為0 IntArray( int *array, int sz ) ; / 用靜態(tài)數(shù)組array的前sz個(gè)元素初始化新數(shù)組 IntArray( const IntArray &rhs ) ; / 拷貝構(gòu)造函數(shù) void printAll();private:int *ia;int size;IntArray:IntArray( int sz ) size = sz; / 設(shè)置數(shù)據(jù)成員 ia = new int size ; for ( int ix=0; ix &

9、lt; size; +ix ) iaix = 0; / 初始化數(shù)組元素IntArray: IntArray( int *array, int sz ) size = sz; / 設(shè)置數(shù)據(jù)成員 ia = new int size ; for ( int ix=0; ix < size; +ix ) iaix = array ix ; / 拷貝數(shù)據(jù)成員IntArray: IntArray( const IntArray &rhs ) size = rhs.size; ia = new int size ; for (int ix = 0; ix < size; ix+ ) ia

10、 ix = rhs.ia ix ; void IntArray:printAll() for ( int ix=0; ix < size; +ix ) cout<<iaix<<" " cout<<endl;int main()int a10=1,2,3,4,5,6,7,8,9,10;IntArray arr1(10), arr2(a,5),arr3(arr2);arr1.printAll();arr2.printAll();arr3.printAll();return 0;(1)為IntArray加上析構(gòu)函數(shù)并編譯運(yùn)行程序,體會(huì)類(lèi)的

11、構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用。(2)程序中,類(lèi)IntArray的三個(gè)構(gòu)造函數(shù)都是以相似的方式來(lái)實(shí)現(xiàn)的。一般來(lái)說(shuō),當(dāng)兩個(gè)或多個(gè)函數(shù)重復(fù)相同的代碼時(shí),可將這部分代碼抽取出來(lái),形成獨(dú)立的函數(shù),以便共享。以后如果需要改變這些實(shí)現(xiàn),則只需改變一次,而且這種實(shí)現(xiàn)的共享本質(zhì)更容易為大家所理解。怎樣把構(gòu)造函數(shù)中的代碼抽取出來(lái)形成獨(dú)立的共享函數(shù)呢?請(qǐng)給出一種可能的實(shí)現(xiàn)。按你給出的實(shí)現(xiàn)方法修改程序并重新編譯運(yùn)行。實(shí)驗(yàn)代碼:#include<iostream> using namespace std;class IntArray public:IntArray(int sz); / 數(shù)組初始化為sz個(gè)元素,

12、初值全為0IntArray(int *array, int sz); / 用靜態(tài)數(shù)組array的前sz個(gè)元素初始化新數(shù)組IntArray(const IntArray &rhs); / 拷貝構(gòu)造函數(shù)void printAll();void common(int *array, int sz);IntArray() delete ia; private:int *ia;int size;IntArray:IntArray(int sz) int *array = NULL;size = sz; / 設(shè)置數(shù)據(jù)成員 common(array, size);IntArray:IntArray(

13、int *array, int sz) size = sz; / 設(shè)置數(shù)據(jù)成員 common(array, size);IntArray:IntArray(const IntArray &rhs)int *array = rhs.ia;common(array, rhs.size);void IntArray:printAll()for (int ix = 0; ix < size; +ix)cout << iaix << " "cout << endl;void IntArray:common(int *array, in

14、t sz)size = sz;ia = new intsize;if (array != NULL)for (int ix = 0; ix < size; +ix)iaix = ix + 1;elsefor (int ix = 0; ix < size; +ix)iaix = 0;int main()int a10 = 1,2,3,4,5,6,7,8,9,10 ;IntArray arr1(10), arr2(a, 5), arr3(arr2);arr1.printAll();arr2.printAll();arr3.printAll();return 0; 4.設(shè)有一個(gè)點(diǎn)myPo

15、int類(lèi)的定義如下:class myPoint public: myPoint(double x0=0.0,double y0=0.0):x(x0),y(y0) myPoint(myPoint &np):x(np.x),y(np.y) double GetX() return x; double GetY() return y; void SetX(double x0) x=x0; void SetY(double y0) x=y0; void SetPoint(double x0,double y0) x=x0;y=y0; void SetPoint(myPoint &np)

16、 x=np.x; y=np.y; double GetLength(myPoint p) return sqrt(x-p.x)*(x-p.x) +(y-p.y)*(y-p.y); void Printit() cout<<" ("<<x<<","<<y<<") "private: double x ,y;試定義一個(gè)三角形Triangle類(lèi),在Triangle類(lèi)中以點(diǎn)myPoint類(lèi)的3個(gè)對(duì)象p1、p2、p3作為數(shù)據(jù)成員,表示三角形的三個(gè)頂點(diǎn)。Triangle類(lèi)具有計(jì)算三角形的

17、周長(zhǎng)和面積的功能。請(qǐng)編寫(xiě)程序上機(jī)調(diào)試并運(yùn)行。: 實(shí)驗(yàn)代碼:#include<iostream>using namespace std;class myPoint public:myPoint(double x0 = 0.0, double y0 = 0.0) :x(x0), y(y0) myPoint(myPoint &np) :x(np.x), y(np.y) double GetX() return x; double GetY() return y; void SetX(double x0) x = x0; void SetY(double y0) x = y0; v

18、oid SetPoint(double x0, double y0) x = x0; y = y0; void SetPoint(myPoint &np) x = np.x; y = np.y; double GetLength(myPoint p) return sqrt(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y);void Printit() cout << " (" << x << "," << y << ") " priv

19、ate:double x, y; ;class Triangle public:/面積double Area(double a, double b, double c)double p;p = (a + b + c) / 2;return sqrt(p*(p - a)*(p - b)*(p - c);/周長(zhǎng)double Perimeter(double a, double b, double c)return a + b + c;myPoint p1,p2, p3;int main()Triangle tri;tri.p1.SetPoint(1, 1);tri.p2.SetPoint(3, 0);tri.p3.SetPoint(2, 3);cout << "三角形的頂點(diǎn)為:"tri.p1.

溫馨提示

  • 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)論