C++程序設(shè)計題_第1頁
C++程序設(shè)計題_第2頁
C++程序設(shè)計題_第3頁
C++程序設(shè)計題_第4頁
C++程序設(shè)計題_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實 驗 報 告課程名稱 C+程序設(shè)計 專業(yè)班級 電子1241 姓 名 赫 思 遠 學(xué) 號 1204451118 電氣與信息學(xué)院和諧 勤奮 求是 創(chuàng)新實驗教學(xué)考核和成績評定辦法1 課內(nèi)實驗考核成績,嚴格按照該課程教學(xué)大綱中明確規(guī)定的比重執(zhí)行。實驗成績不合格者,不能參加課程考試,待補做合格后方能參加考試。2 單獨設(shè)立的實驗課考核按百分制評分,考核內(nèi)容應(yīng)包括基本理論、實驗原理和實驗。3 實驗考核內(nèi)容包括:1)實驗預(yù)習(xí);2)實驗過程(包括實驗操作、實驗記錄和實驗態(tài)度、表現(xiàn));3)實驗報告;權(quán)重分別為0.2 、0.4 、 0.4;原則上根據(jù)上述三個方面進行綜合評定。學(xué)生未取得1)和2)項成績時,第3)項

2、成績無效。4 實驗指導(dǎo)教師應(yīng)嚴格按照考核內(nèi)容分項給出評定成績,并及時批改實驗報告,給出綜合成績,反饋實驗中出現(xiàn)的問題。實驗成績在教師手冊中有記載。實驗報告主要內(nèi)容一 實驗?zāi)康?二 實驗儀器及設(shè)備三 實驗原理四 實驗步驟五 實驗記錄及原始記錄六 數(shù)據(jù)處理及結(jié)論七 實驗體會(可選項)注:1. 為了節(jié)省紙張,保護環(huán)境,便于保管實驗報告,統(tǒng)一采用A4紙,實驗報告建議雙面打印(正文采用宋體五號字)或手寫,右側(cè)裝訂。2. 實驗類別指驗證、演示、綜合、設(shè)計、創(chuàng)新(研究)、操作六種類型實驗。3. 驗證性實驗:是指為了使學(xué)生鞏固課程基本理論知識而開設(shè)的強調(diào)演示和證明,注重實驗結(jié)果(事實、概念或理論)的實驗。4.

3、 綜合性實驗:是指實驗內(nèi)容涉及本課程的綜合知識或本課程相關(guān)的課程知識的實驗。5. 設(shè)計性實驗:是指給定實驗?zāi)康?、要求和實驗條件,由學(xué)生自行設(shè)計實驗方案并加以實現(xiàn)的實驗。實驗題目實驗一 熟悉C+編程情況實驗室電信機房實驗時間2013 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、 實驗?zāi)康?掌握Visual C+6.0集成開發(fā)環(huán)境的使用:進入和退出;菜單、工具欄的使用;用戶窗口區(qū)的劃分。2簡單程序設(shè)計,掌握C+程序的基本結(jié)構(gòu),掌握C+基本數(shù)據(jù)類型與運算符,熟悉輸入/輸出方法。3. 掌握結(jié)構(gòu)化程序設(shè)計、函數(shù),學(xué)會使用指針、引用編程。二、 實驗內(nèi)容1熟悉Visual C+6.0的界面、

4、菜單及工具。2. 給定程序,編輯、編譯、運行、調(diào)試程序。(1) 編程,求解一元二次方程ax2+bx+c=0的根。(2) 求和:s=a+aa+aaa+aaa,其中a是數(shù)字,a和n由鍵盤輸入。三、編程分析及運行結(jié)果(1) 編程,求解一元二次方程ax2+bx+c=0的根。#include <iostream.h> #include <math.h>#define ESSP 0.00000001 void main() double a,b,c,s,x1,x2; cout<<"請輸入a的值:" cin>>a; cout<<

5、"請輸入b的值:"cin>>b;cout<<"請輸入c的值:"cin>>c;s=b*b-4*a*c; if(s<ESSP) cout<<"此方程沒有實根."<<endl; else if(s>ESSP) x1=(-b+sqrt(s)/(2*a); x2=(-b-sqrt(s)/(2*a); cout<<"此方程有兩個不相等實根:"<<x1<<x2<<endl; else x1=-b/(2*a);

6、cout<<"此方程有兩個相等實根:"<<x1<<endl; (2) 求和:s=a+aa+aaa+aaa,其中a是數(shù)字,a和n由鍵盤輸入。#include<iostream.h>void main()int n,a,i,s,x;cin>>n;cin>>a;s=0;x=a;for(i=0;i<=n-1;i+)s=s+x;x=a*10+x;cout<<"the total is="<<s<<endl;四、解決方法及難點掌握Visual C+6.0

7、集成開發(fā)環(huán)境的使用:進入和退出;菜單、工具欄的使用;用戶窗口區(qū)的劃分和簡單程序設(shè)計,掌握C+程序的基本結(jié)構(gòu),掌握C+基本數(shù)據(jù)類型與運算符,熟悉輸入/輸出方法。五、實驗體會 通過這個實驗使我明白了C+是更高一級的語言,它能編稱更復(fù)雜的,C語言解決不了的。我們必須認真的學(xué)習(xí)C+這門學(xué)科,才能對C+有更深刻的了解。 實驗題目實驗二 利用函數(shù)編程實驗室電信機房實驗時間2013 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、 實驗?zāi)康?熟練掌握函數(shù)的定義及調(diào)用,參數(shù)的傳遞,形參和實參的關(guān)系,變量的存儲類型、作用域,全局變量與局部變量的比較。2掌握函數(shù)的嵌套調(diào)用、遞歸調(diào)用,內(nèi)聯(lián)函數(shù)、重載函數(shù)

8、、帶默認參數(shù)函數(shù)的定義與使用。二、 實驗內(nèi)容1找出一個4列5行的二維數(shù)組的“鞍點”,即該位置上的元素在該行最大,在該列最小,也可能沒有鞍點。2寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否為素數(shù)的信息。3編寫一個程序,含有名字相同的兩個函數(shù),第一個函數(shù)返回一個整數(shù)數(shù)組的平均值,另一個函數(shù)返回一個浮點數(shù)組的平均值。三、 編程分析及運行結(jié)果1找出一個4列5行的二維數(shù)組的“鞍點”,即該位置上的元素在該行最大,在該列最小,也可能沒有鞍點。#include "stdlib.h"#include "time.h"#include <iomanip>

9、#include <iostream>using namespace std;int main(int argc, char* argv) int a54; int i,j,k,m,n; int flag=1;srand(time(NULL); for(i=0;i<5;i+) for(j=0;j<4;j+) aij=rand()%5; for(i=0;i<5;i+) for(j=0;j<4;j+) cout<<setw(4)<<aij; cout<<endl; for(i=0;i<5;i+) for(m=0,j=1;

10、j<4;j+) if(aim<aij) m=j; for(k=0;k<4;k+) if(aik=aim) for(n=i,j=0;j<5;j+) if(ank>ajk) n=j;break; if(n=i)flag=0; cout<<i+1<<"行"<<k+1<<"列"<<",鞍點元素:"<<aik<<endl; if(flag) cout<<"n沒有鞍點。"<<endl; re

11、turn 0;2寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否為素數(shù)的信息。#include<iostream.h>#include<math.h>int f(int a)int i,b;float k;k=sqrt(a);for(i=2;i<k;i+)b=a%i;if(b=0)break;if(i<=k)return 0;else return 1;void main()int a;cout<<"請輸入一個整數(shù)a"<<endl;cin>>a;if(f(a)=1)cout<<a<

12、<"為素數(shù)"<<endl;else cout<<a<<"不是素數(shù)"<<endl;3編寫一個程序,含有名字相同的兩個函數(shù),第一個函數(shù)返回一個整數(shù)數(shù)組的平均值,另一個函數(shù)返回一個浮點數(shù)組的平均值。#include <iostream>using namespace std;int GetSun(const int a,int size) int sum=0; for(int i=0;i<size;i+) sum+=ai; return sum/size;double GetSun(con

13、st double a,double size) double sum=0; for(int i=0;i<size;i+) sum+=ai; return sum/size;int main() double array=8,25,5; cout<<GetSun(array,3)<<endl; double array1=8.74,25.36,5.79; cout<<GetSun(array1,3)<<endl; return 0;四、解決方法及難點在面向過程的結(jié)構(gòu)化程序設(shè)計方法中,函數(shù)是模塊的基本單位。要想學(xué)好C+,首先就要掌握函數(shù)的定義

14、及調(diào)用,參數(shù)的傳遞,形參和實參的關(guān)系,變量的存儲類型、作用域,全局變量與局部變量的比較。掌握函數(shù)的嵌套調(diào)用、遞歸調(diào)用,內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶默認參數(shù)函數(shù)的定義與使用。五、實驗體會通過這個實驗使我更好的理解和掌握函數(shù)的定義及調(diào)用,參數(shù)的傳遞,形參和實參的關(guān)系,變量的存儲類型、作用域,全局變量與局部變量的比較。實驗題目實驗三 利用指針及引用的編程實驗室電信機房實驗時間2013 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、 實驗?zāi)康?掌握指針的概念,會定義和使用指針變量。2掌握指針與數(shù)組的關(guān)系,指針與函數(shù)的關(guān)系,指針與字符串的關(guān)系。3掌握引用的定義及其使用方法。4注意指針和引用的區(qū)別

15、。二、實驗內(nèi)容1在主函數(shù)中輸入10個等長的字符串,用另一函數(shù)對它們排序,然后在主函數(shù)輸出這10個已排好的字符串,要求用指針編程。2. 編一程序,記錄從鍵盤輸入的字符串,計算字符串的長度,并用指針實現(xiàn)對字符串的逆向輸出。3利用“引用形參”實現(xiàn)兩個變量的值互換。三、編程分析及運行結(jié)果1 在主函數(shù)中輸入10個等長的字符串,用另一函數(shù)對它們排序,然后在主函數(shù)輸出這10個已排好的字符串,要求用指針編程。#include <iostream>#include <string.h>using namespace std;#define N 10 void change(char a,

16、char b)char t81;strcpy(t,a);strcpy(a,b);strcpy(b,t);void str_sort(char str81,int ln)int i,j;for(i=0;i<ln-1;i+) for(j=0;j<ln-1-i;j+) if(strcmp(*(str+j),*(str+j+1)>0) change(*(str+j),*(str+j+1);int main() int i; char sN81; /printf("請輸入%d個字符串:n",N); cout<<"請輸入N個字符串:"&

17、lt;<endl; for(i=0;i<N;i+) gets(*(s+i); /輸入字符串 str_sort(s,N); /調(diào)用函數(shù)str_sort()排序 cout<<"從小到大排序:"<<endl; for(i=0;i<N;i+) printf("(%d) ",i+1);/顯示順序號 puts(*(s+i); /排序后輸出 return 0;2. 編一程序,記錄從鍵盤輸入的字符串,計算字符串的長度,并用指針實現(xiàn)對字符串的逆向輸出。#include <iostream>using namespace

18、 std;int main()char *p=new char;cin>>p;cout<<"字符串長度是:"<<strlen(p)<<endl;for(int i=strlen(p)-1;i>=0;i-) cout<<*(p+i);cout<<endl; return 0;3. 利用“引用形參”實現(xiàn)兩個變量的值互換。#include <iostream>using namespace std;void Change(int &a,int &b) int c=a; a=b

19、; b=c;int main() int p1=8; int p2=14; Change(p1,p2); cout<<"p1="<<p1<<" ,p2="<<p2; cout<<endl; return 0;四、解決方法及難點 利用指針及可以直接對內(nèi)存中的各不同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)進行有效快速地處理,也可以為函數(shù)間各種數(shù)據(jù)的傳遞提供了簡潔的,便利的方法。難點要掌握指針的概念,會定義和使用指針變量。掌握指針與數(shù)組的關(guān)系,指針與函數(shù)的關(guān)系,指針與字符串的關(guān)系。掌握引用的定義及其使用方法。五、實驗體會通過這

20、個實驗使我初步掌握在C+中指針的一些用法,通過實踐環(huán)節(jié)又掌握了定義和使用指針變量。掌握指針與數(shù)組的關(guān)系,指針與函數(shù)的關(guān)系,指針與字符串的關(guān)系。掌握引用的定義及其使用方法。實驗題目實驗四 類與對象的編程實驗室電信機房實驗時間2013 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、 實驗?zāi)康?掌握類與對象的定義,類和類成員的概念及對象的使用方法。2學(xué)習(xí)類與對象的聲明。3學(xué)習(xí)數(shù)據(jù)成員與成員函數(shù)的訪問方式。4初步掌握用類和對象編制基于對象的程序。二、實驗內(nèi)容1 修改一個類,注意其中的成員訪問權(quán)限,進行對比。有以下程序:#include <iostream.h>class Ti

21、mepublic: int hour; int minute; int sec;void main() Time t1; cin>>t1.hour; cin>>t1.minute; cin>>t1.sec; cout<<t1.hour<<“;”<< t1.minute<<“;”<< t1.sec<<endl;改寫程序,要求:1)將數(shù)據(jù)成員改為私有的;2)將輸入和輸出的功能改為由成員函數(shù)實現(xiàn);3)在類體內(nèi)定義成員函數(shù)。然后編譯和運行程序。請分析什么成員應(yīng)指定為公有的?什么成員應(yīng)指定為私有的

22、?什么函數(shù)最好放在類中定義?什么函數(shù)最好在類外定義?2. 求3個長方體的體積,請編一個基于對象的程序。數(shù)據(jù)成員包括length(長)、width(寬)、height(高),要求用成員函數(shù)實現(xiàn)以下功能:1)由鍵盤分別輸入3個長方體的長、寬、高;2)計算長方體的體積;3)輸出3個長方體的體積。三、編程分析及運行結(jié)果1#include <iostream>using namespace std;class Time public : void SetTime() cout<<"請輸入小時 分 秒"<<endl; cin>>hour&

23、gt;>minute>>sec; bool GetTime() if(sec=NULL) return false; else cout<<hour<<"點"<<minute<<"分"<<sec<<"秒"<<endl; return true; private: int hour; int minute; int sec; ; int main() Time t; t.SetTime(); t.GetTime(); return 0;

24、 2. 求3個長方體的體積,請編一個基于對象的程序。數(shù)據(jù)成員包括length(長)、width(寬)、height(高),要求用成員函數(shù)實現(xiàn)以下功能:1)由鍵盤分別輸入3個長方體的長、寬、高;2)計算長方體的體積;3)輸出3個長方體的體積。#include <iostream>using namespace std;class Rectpublic : void SetNum() cout<<"請輸入長 寬 高"<<endl; cin>>length>>width>>height;cin>>

25、length>>width>>height;cin>>length>>width>>height; int GetArea() return length*width*height; void Three() cout<<"這3個長方體的體積分別為"<<endl; cout<<length*width*height<<" "<<length* width *height<<" "<< leng

26、th *width*height<<endl; private: int length; int width; int height; ; int main() Rect r; r.SetNum(); r.Three(); return 0; 四、解決方法及難點類是面向?qū)ο蟪绦蛟O(shè)計的核心和基礎(chǔ),是C+面向?qū)ο蠓椒ǖ闹匾拍?,它是對一組具有共同特征的對象的抽象和統(tǒng)一的描述。難點掌握類與對象的定義,類和類成員的概念及對象的使用方法。學(xué)習(xí)類與對象的聲明。學(xué)習(xí)數(shù)據(jù)成員與成員函數(shù)的訪問方式。五、實驗體會通過這個實驗使我加深和鞏固了類與對象的定義,類和類成員的概念及對象的使用方法。學(xué)習(xí)類與對象

27、的聲明。學(xué)習(xí)數(shù)據(jù)成員與成員函數(shù)的訪問方式。實驗題目實驗五 構(gòu)造函數(shù)與析構(gòu)函數(shù)的編程實驗室電信機房實驗時間2013 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、 實驗?zāi)康?進一步加深對類和對象的理解。2掌握類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的概念、意義和使用方法。3掌握重載構(gòu)造函數(shù)的含義和使用。4編寫一個較為復(fù)雜的類和對象的應(yīng)用程序。二、實驗內(nèi)容1設(shè)計一個程序,定義一個矩形類,包括數(shù)據(jù)成員和函數(shù)成員。要求有構(gòu)造函數(shù)、析構(gòu)函數(shù),還有一個成員函數(shù)area( )用來計算并顯示矩形的面積,并編寫main函數(shù)進行測試。Class Rectpublic: int Area_int(); Rect(int

28、 l, int w); Rect(); private: int nLength; int nWidth; ;2重載構(gòu)造函數(shù)。修改上題,一種構(gòu)造函數(shù)用整型變量記錄矩形的長和寬,另一種構(gòu)造函數(shù)用double型記錄矩形的長和寬,然后完成成員函數(shù)及主函數(shù)。Class Rectpublic: int Area_int(); double Area_double(); Rect(double l, double w); Rect(int l, int w); Rect(); private: int nLength; int nWidth; double mLength; double mWidth;3

29、構(gòu)造一個類countstr,要求用構(gòu)造函數(shù)設(shè)置計數(shù)器count的初始值為0,成員函數(shù)countchar()不返回任何值,它要求用戶輸入一段文字,按Enter鍵后結(jié)束計算,用count記錄輸入的字符數(shù),成員函數(shù)getchar()返回count的整數(shù)值。三、編程分析及運行結(jié)果1.#include<iostream.h>class Rectpublic: int Area();Rect(int l,int w);Rect();private: int nLength; int nWidth;Rect:Rect(int l,int w) nLength=l; nWidth=w;cout&l

30、t;<"nLength="<<nLength<<",nWidth="<<nWidth<<endl;Rect:Rect()cout<<"nLength="<<nLength<<",nWidth="<<nWidth<<endl;int Rect:Area()int s; s=nLength*nWidth; return s;int main()Rect A(10,30); Rect B(20,40);cou

31、t<<"A="<<A.Area()<<endl; cout<<"B="<<B.Area()<<endl; 2. #include<iostream.h>class Rectpublic: int Area_int(); double Area_double (); Rect(double l, double w); Rect(int l, int w); Rect(); private: int nLength; int nWidth; double mLength; d

32、ouble mWidth;Rect:Rect(double l,double w)mLength=l; mWidth=w;cout<<"mLength="<<mLength<<",mWidth="<<mWidth<<endl; double Rect:Area_double ()double s;s=mLength*mWidth;return (s);Rect:Rect(int l,int w) nLength=l; nWidth=w;cout<<"nLength=&quo

33、t;<<nLength<<",nWidth="<<nWidth<<endl;Rect:Rect()cout<<"mLength="<<mLength<<",mWidth="<<mWidth<<endl; cout<<"nLength="<<nLength<<",nWidth="<<nWidth<<endl;int Rect:Are

34、a_int () int s; s=nLength*nWidth;return s;void main() Rect A(10,30);Rect B(20.8,40.6);cout<<"A="<<A.Area_int ()<<endl;cout<<"B="<<B.Area_double()<<endl; 四、解決方法及難點 構(gòu)造函數(shù)是特殊的成員函數(shù),函數(shù)體可寫在類中,也可寫在類外。析構(gòu)函數(shù)是成員函數(shù),函數(shù)體可寫在類中,也可寫在類外。五、實驗體會 通過這個實驗使我明白了構(gòu)造函數(shù)和析構(gòu)函

35、數(shù)的原理和方法。也對我今后的運用有了更加深刻的體會。使我明白了在C+的學(xué)習(xí)中必須努力,刻苦。實驗題目實驗六 利用友元編程實驗室電信機房實驗時間 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、實驗?zāi)康?掌握友元函數(shù)和友元類的概念、定義和作用。2會使用友元編程。3進一步學(xué)習(xí)內(nèi)存空間動態(tài)分配和釋放的方法。二、實驗內(nèi)容1有一個向量類Vector,包括一個點的坐標位置x和y,設(shè)計兩個友元函數(shù),實現(xiàn)兩個向量的加法和減法運算。2定義一個由y=ax+b確定的直線類Line,該類的構(gòu)造函數(shù)初始化直線,成員函數(shù)Print顯示該直線方程,友元函數(shù)SetPoint()求解兩條直線的交點。3. 下列程序是

36、有關(guān)友元類的,程序中將A類聲明為B類的友元類,A類中所有的成員函數(shù)都是B類的友元函數(shù),請給程序填空。 #inlcude <iostream.h> class B; class A private: int x; public: A(int xx)x=xx; int Set(B&); int Get()return x; ; class B private: int x; public: B(int xx) friend ;int A:Set( ) return x=b.x;void main() A a(10); B b(20); cout<<a.Get()&l

37、t;<endl; a.Set(b); cout<<a.Get()<<endl; 三、編程分析及運行結(jié)果1有一個向量類Vector,包括一個點的坐標位置x和y,設(shè)計兩個友元函數(shù),實現(xiàn)兩個向量的加法和減法運算。#include<iostream.h>class Vectorpublic:Vector(double a,double b);friend void minus(Vector &p1,Vector &p2);friend void plus(Vector &p1,Vector &p2);private:double

38、 x,y;Vector:Vector(double a,double b)x=a,y=b;void plus(Vector &p1,Vector &p2)double c,d;c=p1.x+p2.x;d=p1.y+p2.y;cout<<"向量的加法:"<<endl;cout<<"("<<c<<" ,"<<d<<")"<<endl;void minus (Vector &p1,Vector &

39、;p2)double c,d;c=p1.x-p2.x;d=p1.y-p2.y;cout<<"向量的減法:"<<endl;cout<<"("<<c<<" ,"<<d<<")"<<endl;void main()double a,b,c,d;cout<<"請輸入A向量的坐標:"<<endl;cin>>a>>b;cout<<"請輸入B向量

40、的坐標:"<<endl;cin>>c>>d;Vector p1(a,b),p2(c,d);plus(p1,p2);minus(p1,p2);2定義一個由y=ax+b確定的直線類Line,該類的構(gòu)造函數(shù)初始化直線,成員函數(shù)Print顯示該直線方程,友元函數(shù)SetPoint()求解兩條直線的交點。3. 下列程序是有關(guān)友元類的,程序中將A類聲明為B類的友元類,A類中所有的成員函數(shù)都是B類的友元函數(shù),請給程序填空。#include <iostream.h> class B; class A private: int x; public: A(i

41、nt xx)x=xx; int Set(B&); int Get()return x; ; class B private: int x; public: B(int xx)x=xx; friend A ; ;int A:Set( B&b ) return x=b.x;void main() A a(15); B b(30); cout<<a.Get()<<endl; a.Set(b); cout<<a.Get()<<endl; 四、解決方法及難點友元是C+中一個重要的概念,它可以避免頻繁調(diào)用類的接口函數(shù),既提高了程序的運行速度,

42、也提高了程序的運行效率,友元關(guān)系具有非對稱性和掩蔽性。所以在C+編程中當(dāng)用到上述性質(zhì)時使用友元就顯得非常的方便和快捷。五、實驗體會通過這次試驗,使我對友元有了初步的認識。友元不僅避免頻繁調(diào)用類的接口函數(shù),還高了程序的運行速度,也提高了程序的運行效率。對我的實踐和操作都有了一定的提高。也使我對友元的基本程序有了一定的了解。實驗題目實驗七 繼承與派生的編程實驗室電信機房實驗時間 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、實驗?zāi)康?了解繼承在面向?qū)ο蟪绦蛟O(shè)計中的重要作用。2理解繼承與派生的概念,掌握單繼承和多繼承的定義方法。3熟悉公有派生和私有派生的訪問特性。4掌握繼承中基類和派生

43、類的構(gòu)造函數(shù)定義和調(diào)用過程。5了解虛基類的作用和用法,會使用虛基類,學(xué)習(xí)虛基類在解決二義性問題中的作用。二、實驗內(nèi)容1有以下程序,請完成下面的工作:1)閱讀程序,寫出運行后的輸出結(jié)果;2)然后上機運行,驗證結(jié)果是否正確;3)分析程序執(zhí)行過程,尤其是調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的過程。#include <iostream.h>class Apublic: A()cout<<“constructing A”<<endl; A()cout<<“destructing A”<<endl;class B:public Apublic: B()cout

44、<<“constructing B”<<endl; B()cout<<“destructing B”<<endl;class C:public Bpublic: C()cout<<“constructing C”<<endl; C()cout<<“destructing C”<<endl;void main() C c1; 2定義一個Point類,派生出Rectangle類和Circle類,計算各派生類對象的面積Area( )。編寫一個完整程序進行測試。3. 定義并描述一個人員類Person,它派生

45、出學(xué)生類Student和教師類Teacher, 學(xué)生類和教師類共同派生出在職讀書的教師類Stu_Tech。人員類有姓名、性別、身份證號、出生年月等信息;學(xué)生類有學(xué)號、成績等信息;教師類有職務(wù)、職稱等信息。編寫一個完整程序進行測試。三、編程分析及運行結(jié)果1有以下程序,請完成下面的工作:1)閱讀程序,寫出運行后的輸出結(jié)果;2)然后上機運行,驗證結(jié)果是否正確;3)分析程序執(zhí)行過程,尤其是調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的過程。#include <iostream.h>class Apublic: A()cout<<"constructing A"<<en

46、dl; A()cout<<"destructing A"<<endl;class B:public Apublic: B()cout<<"constructing B"<<endl; B()cout<<"destructing B"<<endl;class C:public Bpublic: C()cout<<"constructing C"<<endl; C()cout<<"destructing

47、 C"<<endl;void main() C c1; 2定義一個Point類,派生出Rectangle類和Circle類,計算各派生類對象的面積Area( )。編寫一個完整程序進行測試。#include<iostream.h>#define PI 3.14;class pointpublic: void initpoint(float pointx=0,float pointy=0) p1x=pointx;p1y=pointy; private:float p1x,p1y;class circle:public pointpublic:void initci

48、rcle(float p1x,float p1y,float radius) initpoint(p1x,p1y); R=radius;float getradius() return R;double area() return R*R*PI;protected:float R;class rectangle:public pointpublic:void initrect(float p1x,float p1y,float rect_h,float rect_w)initpoint(p1x,p1y); High=rect_h;Wide=rect_w;float gethigh() retu

49、rn High;float getwide()return Wide;float area() return Wide*High;protected:float High;float Wide;void main()float a,b,c,d; circle c1; cout<<"請輸入圓的圓心(,),半徑(R):"<<endl; cin>>a>>b>>c; c1.initcircle(a,b,c); cout<<"面積為:"<<c1.area()<<endl

50、; cout<<"鍵盤錄入四邊形長和寬:"<<endl; cin>>a>>b; rectangle c2; c2.initrect(0,0,a,b); cout<<"面積為:"<<c2.area()<<""<<endl;3. 定義并描述一個人員類Person,它派生出學(xué)生類Student和教師類Teacher, 學(xué)生類和教師類共同派生出在職讀書的教師類Stu_Tech。人員類有姓名、性別、身份證號、出生年月等信息;學(xué)生類有學(xué)號、成績等信息;

51、教師類有職務(wù)、職稱等信息。編寫一個完整程序進行測試。#include<iostream.h>#include<string.h>class personpublic: person( char *name,char *sex,char *id,char *birth) strcpy(Name,name); strcpy(Sex,sex); strcpy(ID,id); strcpy(Birth,birth); void print();private:char Name10;char Sex10;char ID20;char Birth20;class Student:

52、public personpublic:Student(char *xuehao,int chengji,char *name,char *sex,char *id,char *birth):person( name,sex,id,birth)strcpy(Xuehao,xuehao); Chengji=chengji;void prints();private: char Xuehao12; int Chengji;class Teacher:public personpublic:Teacher( char *name,char *sex,char *id,char *birth,char

53、 *ziwu,char *zich) :person(name,sex,id,birth)strcpy(Ziwu,ziwu); strcpy(Zich,zich);void printt();private: char Ziwu20; char Zich10;void person:print() cout<<"此人信息為:"<<endl; cout<<Name<<endl<<Sex<<endl<<ID<<endl<<Birth<<endl;void St

54、udent:prints()print(); cout<<Xuehao<<endl<<Chengji<<endl;void Teacher:printt()print(); cout<<Ziwu<<endl<<Zich<<endl;void main() Student s1("9876543",35,"hesiyuan","nan","1234567891011","19901026"); Teac

55、her t1("yanwenzheng","nan","1004451216","19910323","teacher","teach"); s1.prints();四、解決方法及難點繼承與派生在c語言中是沒有的,我們必須得弄明白它的意義和用法。了解繼承在面向?qū)ο蟪绦蛟O(shè)計中的重要作用。理解繼承與派生的概念,掌握單繼承和多繼承的定義方法。熟悉公有派生和私有派生的訪問特性。掌握繼承中基類和派生類的構(gòu)造函數(shù)定義和調(diào)用過程。五、實驗體會通過這次實驗,我知道了繼承與派生的實際用法,同時

56、也學(xué)會了派生類的構(gòu)造函數(shù)定義和調(diào)用過程。并且也增強了我的動手操作能力,也對繼承與派生有了更深的理解。實驗題目實驗八 利用虛函數(shù)編程實驗室電信機房實驗時間 年 月 日 實驗類別驗證同組人數(shù)1 成 績指導(dǎo)教師簽字:一、實驗?zāi)康?了解多態(tài)性的概念和虛函數(shù)的作用及使用方法。2了解靜態(tài)關(guān)聯(lián)和動態(tài)關(guān)聯(lián)的概念和用法。3了解純虛函數(shù)和抽象類的概念和用法。4學(xué)習(xí)使用虛函數(shù)的繼承實現(xiàn)動態(tài)關(guān)聯(lián)。5學(xué)習(xí)理解靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用。二、實驗內(nèi)容1事先閱讀程序,給出其運行結(jié)果,上機驗證虛函數(shù)的作用。 有如下程序: #include <iostream.h> #include <string.h

57、>class Student /定義基類public: Student(int,string,float); void display(); /聲明輸出函數(shù) protected: /受保護成員,派生類可訪問int num;string name;float score; ;Student :Student(int n,string nam,float s)num=n;name=nam;score=s;void Student:display()cout<<num:<<num<<nname:<<name<<nscore:<&

58、lt;score<<endl<<endl;class Graduate:public Student /聲明公有派生類public: Graduate(int,string,float,flaot); void display(); /聲明輸出函數(shù) private: float pay;Graduate:Graduate(int n,string nam,float s,flaot p):Student(n,nam,s),pay(p)void Graduate:display()cout<<<num:<<num<<nname:<<name<<nscore:<<score<<npay=:<<pay<&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論