《面向?qū)ο蟪绦蛟O計》C++實驗報告

上傳人:仙*** 文檔編號:31630618 上傳時間:2021-10-12 格式:DOC 頁數(shù):55 大?。?38.50KB
收藏 版權申訴 舉報 下載
《面向?qū)ο蟪绦蛟O計》C++實驗報告_第1頁
第1頁 / 共55頁
《面向?qū)ο蟪绦蛟O計》C++實驗報告_第2頁
第2頁 / 共55頁
《面向?qū)ο蟪绦蛟O計》C++實驗報告_第3頁
第3頁 / 共55頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《面向?qū)ο蟪绦蛟O計》C++實驗報告》由會員分享,可在線閱讀,更多相關《《面向?qū)ο蟪绦蛟O計》C++實驗報告(55頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 《面向?qū)ο蟪绦蛟O計》 實驗報告 學 院: 專 業(yè): 班級學號: 姓 名: 學 期: 教 師: 實驗一 C++基礎練習 院(系): 課程名稱:面向?qū)ο蟪?/p>

2、序設計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1.掌握C++程序的基本格式與規(guī)范,學會編寫簡單的C++程序。 2.理解C++程序結構的特點。 3.熟悉C++程序基本的輸入和輸出操作。 4.掌握C++數(shù)據(jù)類型常量和變量以及修飾符的使用方法。 5.掌握函數(shù)定義、函數(shù)調(diào)用和函數(shù)說明的方法。 6.熟悉作用域運算符的功能和基本使用方法。 7.掌握C++內(nèi)存的動態(tài)分配與釋放方法。 8.理解引用的概念,掌握引用的使用方法。 實驗內(nèi)容和步驟 1. 調(diào)試如下的代碼并回答問題。

3、 #include void main() { //First c++ program char name[10]; cout<<"please input your name:"; cin>>name; cout<<"welcome "<

4、何不同? 答:在C中進行輸入輸出操作時,常使用函數(shù)scanf和printf。C++除了可以照常使用這兩個函數(shù)進行輸入輸出外,還增加了標準輸入流對象cin和標準輸出流對象cout來進行輸入和輸出。Iostream是C++系統(tǒng)定義的一個頭文件,在這個文件中聲明了程序所需要的輸入和輸出操作的有關信息。在C語言中頭文件中用“.h”作為后綴,如stdio.h、math.h等。 2. 單步調(diào)試如下的代碼并回答問題。 #include inline int f(int x) { return 2*x*x+4*x+5; } inline double f(do

5、uble x) { return 2*x*x+4*x+5; } void main() { int x=5; double y=5.2; cout<

6、載的作用是什么? 答:不允許,作用:方便使用函數(shù),只要函數(shù)參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,或者二者兼而有之,兩個或者兩個以上的函數(shù)可以使用相同的函數(shù)名。實現(xiàn)函數(shù)編譯的多態(tài)性。 (3)單步調(diào)試(F10、F11),記錄f(x)和f(y)會分別調(diào)用哪段代碼,為什么? 答:f(x)會調(diào)用int f(int 5) f(y)會調(diào)用double f(double 5.2) 因為雖然兩個函數(shù)名是一樣的,形參類型和返回值類型不同,根據(jù)所給的實參類型如int型就調(diào)用int f(int 5)。 3. 單步調(diào)試如下程序并回答問題。 #include int a[]=

7、{1,2,3,4,5,6,7,8,9,10}; int sum; void main() { int i; int sum=0; for(i=0;i<10;i++) { if(a[i]%2!=0) sum=sum+a[i]; ::sum=::sum+a[i]; } cout<<" sum of all is : "<<::sum; cout<<" sum of odd is: "<

8、的變量,可以為本源文件的其他函數(shù)所公用,有效范圍為從定義變量的位置開始到本源文件結束。局部變量:在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效。 (2)在局部變量和全局變量作用域重疊區(qū)域,默認哪個變量起作用;如果一定要訪問全局變量,怎么實現(xiàn)。 答:默認局部變量起作用。如果一定要訪問全局變量,可以用::對所屏蔽的同名全局變量進行訪問。 (3)單步調(diào)試,查看并記錄程序中循環(huán)體的兩條語句的sum的變化情況,并說明它們是局部變量和全局變量。 答:第一個sum為全局變量,第二個::sum為局部變量。 4.調(diào)試如下程序并回答問題。 #include

9、 void main() { double *r; r = new double; cin>>*r; cout<<"Area is:"<<3.14*(*r)*(*r); delete r; } (1)C語言的內(nèi)存申請和釋放使用哪個函數(shù) 答:內(nèi)存申請:malloc釋放:free (2)C++的內(nèi)存申請和釋放使用哪個函數(shù)?簡單比較。 答:內(nèi)存申請:new 釋放:delete 使用malloc函數(shù)時必須使用sizeof函數(shù)來計算所需要的字節(jié)數(shù),而new可以根據(jù)數(shù)據(jù)類型自動計算所要分配內(nèi)存的大小,這就減小了發(fā)生錯誤的可能性。new能夠自動返回

10、正確的指針類型,而不必像malloc函數(shù)那樣,必須在程序中進行強制類型轉(zhuǎn)換,才能使其返回正確的指針類型。 實驗二 C++簡單程序設計練習 院(系): 課程名稱:面向?qū)ο蟪绦蛟O計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1.掌握if語句的用法。 2.掌握switch語句的用法。 3.掌握循環(huán)和多重循環(huán)的用法。 4.掌握函數(shù)的定義和調(diào)用。 5

11、.掌握數(shù)組的定義和基本操作。 實驗內(nèi)容和步驟 1. 根據(jù)輸入的百分制按五分制的成績輸出,記錄和分析實驗結果(后續(xù)每個實驗都有此要求,不再一一注明)。百分制與五分制之間的關系見下表。分別使用if分支結構和switch結構編寫程序。 百分制 五分制 90~100 5 80~89 4 70~79 3 60~69 2 0~59 1 #include int main () { int a; cout<<"從鍵盤輸入百分制:"<>a; if(a>0&&a<60

12、) cout<<"五分制為:1"<

13、 #include void main() { int a,b; cout<<"從鍵盤輸入百分制:"<>a; b=a/10; //對a求商并賦值給b switch(b) //確定b的值為什么值 { case 10 : case 9: cou

14、t<<"五分制為:5"<

15、如上的注釋 2. 編程求3~100之間的所有素數(shù),要求編寫一個素數(shù)判斷的函數(shù),然后在主程序中調(diào)用。 #include #include int main() { int i; //定義變量i int fun(int); //函數(shù)的聲明 for(i=3;i<=100;i++) if(fun(i)) cout<

16、t i,t; //定義兩個整型變量 t=sqrt(n); for(i=2;i<=t;i++) //當有能被整除的數(shù)則返回0,后則返回1 if(n%i==0) return 0; return 1; } 3. 編寫程序列出斐波那契(Fibonacci)數(shù)列的前20項。(Fibonacci數(shù)列是指前兩項為1,后面的每一項都為前兩項之和。要求用數(shù)組存儲數(shù)列)。 #include void main() { int a[

17、20]={1,1}; //初始化數(shù)組a,a[0]=a[1]=1 int i; for(i=2;i<20;i++) { a[i]=a[i-1]+a[i-2]; //后面每一項都為前兩項之和 } for(i=0;i<20;i++) //輸出前20個斐波那契數(shù)列 { cout< int main() {

18、 int a[10]; //定義一個整型數(shù)組 int i,j,t; //定義三個整型變量i,j,t cout<<"從鍵盤輸入十個整數(shù):"<>a[i]; //輸入數(shù)據(jù) } for(i=0;i<10;i++) //采用冒泡排序法 外部循環(huán) { for(j=0;j<10;j++)

19、 //內(nèi)部循環(huán) { if(a[j]>a[j+1]) //如果不是從小到大排列則交換位置關系 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=0;i<10;i++) //輸出整理好后的數(shù)組 { cout<

20、 實驗三 類與對象(一) 院(系): 課程名稱:面向?qū)ο蟪绦蛟O計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1.掌握類、類的數(shù)據(jù)成員、類的成員函數(shù)的定義方式。 2.理解類成員的訪問控制方式。 3.掌握對象的定義和操作對象的方法。 4.理解構造函數(shù)和析構函數(shù)的定義與執(zhí)行過程。 5.掌握重載構造函數(shù)的方式。 6.了解拷貝構造函數(shù)的方法。 實驗內(nèi)容 1.聲明一個時間類,時間類中有3

21、個私有數(shù)據(jù)成員(Hour,Minute,Second)和兩個公有成員函數(shù)(SetTime和PrintTime)。SetTime根據(jù)傳遞的3個參數(shù)為對象設置時間;PrintTime負責將對象表示的時間顯示輸出。 在主函數(shù)中,建立一個時間類的對象,設置時間為9點20分30秒并顯示時間。 #include class time{ //聲明的一個時間類time public: //公共函數(shù)成員 void SetTime(int i,int

22、 j,int k) { Hour=i; Minute=j; Second=k; } void PrintTime() { cout<

23、 //定義一個對象s s.SetTime(9,20,30); //調(diào)用對象s的成員函數(shù)SetTime,給s的數(shù)據(jù)成員賦值 s.PrintTime(); //輸出顯示出來 } 2.使用構造函數(shù)代替上面的SetTime成員函數(shù),并在主函數(shù)中使用構造函數(shù)設置時間為10點40分50秒,并顯示該時間。說明構造函數(shù)和SetTime成員函數(shù)在使用時的區(qū)別。 #include class time{ public: time(int i,in

24、t j,int k) //定義構造函數(shù),其名與類名相同 { Hour=i; //在構造函數(shù)中,對私有數(shù)據(jù)賦值 Minute=j; Second=k; } void PrintTime() { cout<

25、{ time s(10,40,50); //定義類的對象時調(diào)用構造函數(shù)time //分別給數(shù)據(jù)成員Hour、Minute和Second賦初值10、40和50 s.PrintTime(); } 說明:構造函數(shù)的作用主要是用來對對象進行初始化,定義對象時被系統(tǒng)自動調(diào)用。 而SetTime成員函數(shù)賦初值既不方便也容易忘記,甚至可能出錯。 3.重載時間類的構造函數(shù)(不帶參數(shù))使小時、分、秒均為0。 #include class time{

26、 public: time(); void PrintTime(); private: int Hour; int Minute; int Second; }; time::time() { Hour=0; Minute=0; Second=0; } inline void time::PrintTime() { cout<

27、tput:"< class time{ public: time(int i,int j,int k); //構造函數(shù)的聲明 ~time(); //析構函數(shù)的聲明 void PrintTime(); private: int Hour; int Minute; int Second; }; ti

28、me::time(int i,int j,int k) //構造函數(shù)的定義 { Hour=i; Minute=j; Second=k; cout<<"構造函數(shù)被調(diào)用"<

29、nd<<"秒"< class time{ pub

30、lic: time(int i,int j,int k) { Hour=i; Minute=j; Second=k; } time(const time &p) //拷貝構造函數(shù) { Hour=p.Hour+1; Minute=p.Minute-20; Second=p.Second-40; } void PrintTime() { cout<

31、} private: int Hour; int Minute; int Second; }; int main() { time s1(10,40,50); //定義對象s1,調(diào)用了普通的構造函數(shù) time s2(s1); //調(diào)用拷貝構造函數(shù),用對象s1初始化對象s2 s1.PrintTime(); s2.PrintTime(); } 拷貝構造函數(shù)的作用特點:用于按照需要初始化新對象。在建立一個新對象時,使用一個已經(jīng)存在的對象去初始化這個新對象。

32、 實驗四 類與對象(二) 院(系): 課程名稱:面向?qū)ο蟪绦蛟O計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1.掌握對象數(shù)組的定義與使用方法。 2.理解對象指針的概念,學會用指針引用對象。 3.了解this指針的工作方式。 4.掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的基本使用方法。 5.理解友元與友元函數(shù)的作用,掌握其使用方法。 實驗內(nèi)容 1定義一個學生(student)類,包含數(shù)據(jù)成員:學號(sno)、姓名(nam

33、e)、年齡(age)、分數(shù)(score),以及成員函數(shù):輸入(input)和顯示(print)。然后定義一個具有10個學生的數(shù)組,實現(xiàn)對這些學生信息的輸入和顯示。 #include using namespace std; class MyArray {public: MyArray(int leng) { length=leng; alist=new int[length]; } ~MyArray() {delete alist; } void input() {

34、 int i; for(i=0;i>alist[i]; } void display() { int j; for(j=0;j>leng; MyArray A(leng); A.input(); A.display(); return(0); } 2.修改上一

35、個程序中的main函數(shù):定義一個student類的指針p,使其指向上述數(shù)組的第0個元素,并通過該指針實現(xiàn)對10個學生信息的輸入和顯示。最后簡要說明對象數(shù)組、對象指針和普通數(shù)組和指針有何區(qū)別和聯(lián)系。 #include #include using namespace std; class student {private: int sno; string name; int age; int score; public: void input() { cin>>sno>>name>>age>>score; }

36、 void print() { cout<<"學號"<input(); p->print(); } } 對象數(shù)組的元素是對象,不僅具有數(shù)據(jù)成員,而且還有函數(shù)成員,對象指針

37、就是用于存放對象地址的變量,對象指針不僅能引用單個對象,也能訪問對象數(shù)組。普通數(shù)組是存放類型一樣的數(shù)據(jù),指針可以通過訪問首地址一一訪問存放的數(shù)值。 3.通過單步調(diào)試第一個程序,查看并記錄每個元素的地址及其this指針的值,通過對比說明this指針的作用。 #include #include using namespace std; class student { private: int sno; string name; int age; int score; public: void input() {

38、 cin>>sno>>name>>age>>score; } void print() { cout<<"this="<

39、 sno -858993460 age -858993460 name {ox00000000’’’’} score -858993460 this指針指向的是對象的初始地址 4.將student類增加兩個靜態(tài)成員,人數(shù)(count)和平均分(average)。注意構造函數(shù)、析構函數(shù)的編寫以及靜態(tài)成員的初始化,并說明這兩個成員設置為靜態(tài)成員的原因。 #include #include using namespace std; class student { private: in

40、t sno; char *name; int age; int score; static int count; static float average; static float sum; public: void input() { cin>>sno>>name>>age>>score; } void print() { cout<<"學號"<

41、 } void show() { cout<<"學生人數(shù):"<

42、 ~student() { delete name; --count; sum=sum-score; } }; int student::count=0; float student::sum=0.0; float student::average=0.0; int main() student a1(1,"小小",20,99); a1.print(); a1.show(); student a2(2,"小江",12,100); a2.print(); a2.show(); student a3(3,"肖肖",2

43、1,89); a2.print(); a2.show(); return 0; } count隨著定義對象的增加而增加。每定義一個對象,count加1,累計學生人數(shù),average也應該隨著定義對象的增加而改變著。因此它們被聲明為靜態(tài)數(shù)據(jù)成員,被studengt類的對象所共享。 5.定義一個友元函數(shù)output,實現(xiàn)和成員函數(shù)print相同的功能。說明友元函數(shù)作用以及和成員函數(shù)的區(qū)別。 #include #include using namespace std; class student { private:

44、 int sno; string name; int age; int score; public: void input() { cin>>sno>>name>>age>>score; } friend void output(student &); void print() { cout<<"學號"<

45、&p) { cout<<"學號"<

46、有數(shù)據(jù)時,會帶來很大的開銷,降低程序運行效率。 實驗五 派生類與繼承 院(系): 課程名稱:面向?qū)ο蟪绦蛟O計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1理解類的繼承的概念,能夠定義和使用類的繼承關系。 2.掌握派生類的聲明和定義方法。 3.熟悉公有派生和私有派生的訪問特性。 4.學習虛基類中解決二義性問題中的作用。 實驗內(nèi)容 1. 定義一個基類MyArra

47、y,基類中可以存放一組整數(shù)。 class MyArray{ public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: int *alist; //指向動態(tài)申請的一組空間 int length; //整數(shù)的個數(shù) }; 基類中有構造函數(shù)、析構函數(shù)、輸入數(shù)據(jù)和輸出數(shù)據(jù)的函數(shù)。 #include class MyArray{ public: MyArray(int leng); ~MyArray();

48、 void Input(); void Display(); protected: int *alist; //指向動態(tài)申請的一組空間 int length; //整數(shù)的個數(shù) }; MyArray::MyArray(int leng) { alist=new int[leng]; length=leng; } MyArray::~MyArray() { delete []alist; cout<<"顯示調(diào)用了析構函數(shù)"<

49、入數(shù)組元素:"<>alist[i]; } } void MyArray::Display() { int j; cout<<"輸出的數(shù)組元素為:"<

50、該類中定義函數(shù)實現(xiàn)排序功能。 #include using namespace std; class MyArray {public: MyArray(int leng) { length=leng; alist=new int[length]; } ~MyArray() {delete alist; } void input() { int i; for(i=0;i>alist[i];

51、} void display() { int j; for(j=0;j

52、+) {if(alist[i]>alist[j]) { t=alist[i]; alist[i]=alist[j]; alist[j]=t; } } } for(i=0;i>leng; SortArray A(leng); A.input(); A.display(); A.pai(); return(0); }

53、 3. 定義一個類ReArray繼承自MyArray,在該類中定義函數(shù)實現(xiàn)逆轉(zhuǎn)功能。 #include using namespace std; class MyArray {public: MyArray(int leng) { length=leng; alist=new int[length]; } ~MyArray() {delete alist; } void input() { int i; for(i=0;i

54、++) cin>>alist[i]; } void display() { int j; for(j=0;j

55、 { t=alist[j]; alist[j]=alist[length-1-j]; alist[length-j-1]=t; } for(j=0;j>leng; ReArray A(leng); A.input(); A.display(); A.nizhuan(); return(0); } 4. 定義一個類AverArray繼承自MyArra

56、y,在該類中定義函數(shù)Aver求解整數(shù)的平均值。 #include using namespace std; class MyArray {public: MyArray(int leng) { length=leng; alist=new int[length]; } ~MyArray() {delete alist; } void input() { int i; for(i=0;i>alist[i

57、]; } void display() { int j; for(j=0;j

58、+) { sum+=alist[j]; } ave=sum/length; cout<>leng; AverArray A(leng); A.input(); A.display(); A.pingjun(); return(0); } 5. 定義NewArray類,同時繼承了SortArray、ReArray和AverArray,使得NewArray類的對象同時具有排序、逆轉(zhuǎn)和求平均值的功能。在繼承的過程中聲

59、明為虛基類,體會虛基類在解決二義性問題中的作用。 #include using namespace std; class MyArray { public: MyArray(int leng) { length=leng; alist=new int[length]; } ~MyArray() { delete alist; } void input() { int i; for(i=0;i>alist[i

60、]; } void display() { int j; for(j=0;j

61、i+1;jalist[j]) { t=alist[i]; alist[i]=alist[j]; alist[j]=t; } } } for(i=0;i

62、{ int j; int t; for(j=0;j

63、jun() { int j; float sum; float ave; sum=0.0; for(j=0;j

64、(leng),ReArray(leng),AverArray(leng) {} }; int main() { int leng; cin>>leng; NewArray A(leng); A.input(); A.display(); A.pai(); A.nizhuan(); A.pingjun(); return(0); } 實驗六 虛函數(shù)與多態(tài)性 院(系): 課程名稱

65、:面向?qū)ο蟪绦蛟O計 教師簽名: 班級 學號 實驗室 姓名 實驗成績 所用軟件 Word文檔、VC++軟件 實驗目的和要求 1理解編譯時的多態(tài)性和運行時的多態(tài)性。 2.掌握運算符重載的基本方法。 3.掌握虛函數(shù)的定義與使用方法。 實驗內(nèi)容 1定義一個有理數(shù),并重載比較運算符 < 、<=、 ==、!=。 class Rational{ public: Rational(int num=0,int denom=1); //構造函數(shù) int operator<(Rational r) const; int operat

66、or<=(Rational r) const; int operator==(Rational r) const; int operator!=(Rational r) const; private: long num,den; //定義一個有理數(shù)num為分子,den為分母 }; #include #include class Rational{ public: //構造函數(shù) Rational(int num=0,int denom=1); //重載比較操作符 int operator<(Rational r) const; int operator<=(Rational r) const; int operator==(Rational r) const; int operator!=(Rational r) const; private: //定義一個有理數(shù)num為分母,den分子 long num,den; }; Ra

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲