C程序設(shè)計結(jié)課論文剖析_第1頁
C程序設(shè)計結(jié)課論文剖析_第2頁
C程序設(shè)計結(jié)課論文剖析_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中國農(nóng)業(yè)大學(2014-2015學年秋季學期)論文題目:C+程序設(shè)計期末大作業(yè)實驗報告課程名稱:C+程序設(shè)計任課教師:班 級:學 號:姓 名:目錄目錄1C+程序設(shè)計期末大作業(yè)實驗報告 2CTestl2源代碼:2CTest1_main.cpp(主函數(shù)):2CTest1_function.cpp (函數(shù)): 3程序測試結(jié)果及說明: 6CTest211源代碼:11CTest2_main.cpp(主函數(shù) ): 11CTest2_class.cpp (類):13CTest2_function.cpp (函數(shù)): 15程序測試結(jié)果及說明: 16學習心得和建議 錯誤!未定義書簽。C+程序設(shè)計期末大作業(yè)實驗報

2、告CTestl源代碼:CTest1_main.cpp 主函數(shù)):#in elude <iostream> using n amespace std; void circle ();void recta ngle (); void tran gle (); double readch();void result(double l,double s);void mai n ()char n='a'cout<<"*"<<e ndl;cout<<"*"<<e ndl;cout<&l

3、t;"*歡迎使用周長面積計算器!*n"cout<<"*"<<e ndl;cout<<"*"<<e ndl;cout<<e ndl<<e ndl;歡迎界面cout<<" 使用說明:"<<endl<<endl;"<<e ndl;"<<e ndl;cout<<"請您根據(jù)菜單提示使用本軟件,每次只能輸入一個數(shù)據(jù),以回車作為結(jié)束, cout<<

4、;"多余字符將被舍棄。"<<e ndl;cout<<"請估計確認您的計算結(jié)果不會過于龐大,結(jié)果有效范圍是(0,1.7*10人308cout<<"我們提供的計算結(jié)果將保留3位小數(shù)。"<<endl<<endl<<endl;/使用說明docout<<"我們可以為您提供三種圖形的計算,請您輸入您要計算圖形的代碼:n"cout<<"1圓形;n"cout<<"2長方形;n"cout<&

5、lt;"3直角三角形;n"cout<<"0退出程序;n"cout<<"您的選擇:”;菜單提示,循環(huán)出現(xiàn)loop:ci n>>n;讀取代碼,標號loopfflush(stdin);/清空輸入緩沖區(qū),多余的輸入將被舍棄,防止出現(xiàn)非法輸入造成程序故障,因此使用說明中提示舍棄多余輸入cout<<e ndl;switch (n)case 'O':cout<<"$n"cout<<"$ 感謝您的使用! $n"cout<<

6、"$再見! $n"cout<<"$n"exit(0);代碼0,退出程序,出現(xiàn)退出界面,退出程序case '1':circle();/代碼1,進入圓形計算函數(shù)break;case '2':rectangle(); 代碼2,進入長方形計算函數(shù)break;case '3':trangle();/代碼3,進入直角三角形計算函數(shù)break;default:cout<<"您輸入的代碼不能識別,代碼只能是菜單中所列(0-3 ),請您重新輸入:"goto loop;/用戶輸入非菜

7、單中所列代碼程序報錯,請求重新輸入,跳轉(zhuǎn)標號loop所在位置,再次讀取輸入while( n!='0');CTest1_function.cp|p 函數(shù)):#in clude <iostream>#include <iomanip>包含該頭文件,使用 setprecision 、setw 函數(shù)#include <math.h>/包含該頭文件,使用數(shù)學計算函數(shù),如sqrt函數(shù)using n amespace std;double readch()/讀數(shù)據(jù)函數(shù),功能包括判斷輸入數(shù)據(jù)類型正誤、數(shù)據(jù)取值是否符合要求double t;reputin:wh

8、ile(!(cin»t)判斷輸入類型是否正確,標號reputincin.sync();清空cin緩沖區(qū)里面未讀取的信息cin. clear();清除錯誤狀態(tài)cout<<"您輸入的數(shù)據(jù)類型不能識別,請輸入大于零的數(shù)字:"<<endl;提示用戶重新輸入doif(t<=0)判斷輸入數(shù)據(jù)數(shù)值是否大于零cout<<"您輸入的數(shù)字小于等于零,請輸入大于零的數(shù)字,請重新輸入:"<<e ndl;提示用戶重新輸入goto reputin;/轉(zhuǎn)向標號reputin,重新獲取輸入,判斷數(shù)據(jù)是否符合要求while(

9、t<=0);fflush(stdi n);清空輸入緩存區(qū),多余輸入被舍棄,防止在不知情的情況下多余數(shù)據(jù)流入下一次運算,因此使用說明中提示一次只能輸入一個數(shù)據(jù),多余數(shù)據(jù)被舍棄return t;void result(double l,double s)/數(shù)據(jù)輸出函數(shù),進行周長和面積4位有效數(shù)字輸出cout<<setiosflags(ios:fixed)<<setprecision(3)<<"周長(l)="<<setw(5)<<l<<endl;cout<<setiosflags(ios:f

10、ixed)<<setprecision(3)<<"面積(s)="<<setw(5)<<s<<endl;設(shè)置域?qū)挒?,超出自動突破,保留 3為小數(shù)cout<<resetiosflags(ios:fixed);/取消固定格式輸出cout<<e ndl;cout<<e ndl;cout<<"#"<<e ndl;cout<<e ndl<<e ndl;void circle ()double pi,r,l,s;cout&l

11、t;<"您選擇了“圓形”,請您輸入它的半徑(r) : "<<endl;cout<<"r="r=readch();/利用讀數(shù)據(jù)函數(shù)讀取正確的r值cout<<e ndl;pi=3.1415926;l=2*pi*r;5=卩產(chǎn)*;/圓形相關(guān)計算公式cout<<"您給出的"圓形”的計算結(jié)果如下:"<<endl;result(l,s);/利用數(shù)據(jù)輸出函數(shù)按固定格式輸出結(jié)果void recta ngle ()double a,b,l,s;cout<<"

12、您選擇了“長方形”,請您分別輸入它的長(a)和寬(b) : "<<endl;cout<<"a="a=readch();cout<<"b="b=readch();讀數(shù)據(jù)cout<<e ndl;l=2*(a+b);s=a*b;長方形公式cout<<"您給出的長方形的計算結(jié)果如下:"<<endl;result(l,s);寫數(shù)據(jù)void tran gle ()double b,h,l,s,x2,x;cout<<"您選擇了“直角三角形”,請您

13、分別輸入它的底邊(b)和高(h) : "<<endl;cout<<"b="b=readch();cout<<"h="h=readch();讀數(shù)據(jù)cout<<e ndl;x2=b*b+h*h;x=sqrt(x2);l=b+h+x;s=0.5*b*h;直角三角公式cout<<"您給出的直角三角形的計算結(jié)果如下:"<<endl;result(l,s);寫數(shù)據(jù)程序測試結(jié)果及說明:1.測試菜單選擇(測試主函數(shù)),進行非法的輸入,程序提示重新輸入,會提示重新輸入的情

14、況有:1)輸入一個字符串;2)出入單個任意字符;3)輸入一個菜單中沒有的數(shù);4)按Enter、tab鍵,程序會繼續(xù)等待有效輸入;5)以菜單中含有的字符開頭進行輸入會被識別,有效字符后的字符會被忽略舍棄。2在圓形模式下(測試 circle函數(shù)),正確輸入合法數(shù)據(jù),測試是否得到保留3位小數(shù)的有效結(jié)果(測試result 函數(shù))。3正常進入長方形模式(測試rectangle 函數(shù)),測試數(shù)據(jù)輸入是否正常(測試 readch函數(shù)),不能正確錄入的原因有二:1 )數(shù)據(jù)類型不正確除數(shù)字外其他字符開頭(數(shù)字開頭為合法,后面字符被舍棄)。2)數(shù)據(jù)類型正確,但取值不符合要求小于等于零的數(shù)均不合法,大于零實數(shù)為合法

15、。4不斷選擇不同模式進行計算,測試主函數(shù)是否正常,菜單是否循環(huán)出現(xiàn)。5直角三角形模式下(測試 trangle函數(shù)),輸入兩個整數(shù),進一步測試 result函數(shù)保留3位小數(shù)穩(wěn)定性。 6再次回到長方形模式,進行數(shù)據(jù)邊界測試,輸入兩個較大的數(shù),面積溢出,這是double型取值范圍限定的,因此在使用說明中提示估計計算值是否超出邊界,否則有溢出結(jié)果不準的危險。7測試數(shù)據(jù)邊界,輸入兩個大小合適的數(shù),結(jié)果正確表達。8測試數(shù)據(jù)邊界,輸入兩個接近零的數(shù),由于保留小數(shù)位的限制,結(jié)果近似為零,但依然體現(xiàn)精度。9測試數(shù)據(jù)邊界,輸入兩個小數(shù)位較多的數(shù),由于保留小數(shù)位的限制,結(jié)果為一具有一定精度的近似值。10.測試程序退

16、出機制和退出頁面,輸入菜單代碼零,頁面顯示如圖,程序測試完畢。CTest2源代碼:CTest2_main.cpp主函數(shù)):#in elude <iostream>#i nclude "CTest2_class.cpp" 包含類所在文件 using n amespace std;double readch();void result(double l,double s);void mai n ()Circle yua n;Recta ngle cha ngfang; tran gle sanjiao;/ 聲明對象double r,cha ng,kua n, di,

17、gao; double l,s;char n='a'cout<v"*"v<e ndl"cout<v"*"v<e ndl"coutvv"*歡迎使用周長面積計算器!* n"cout<v"*"v<e ndl"cout<v"*"v<e ndl"cout<<endl<<endl; 歡迎界面coutvv" 使用說明:"vvendlvvendl;coutvv&qu

18、ot;請您根據(jù)菜單提示使用本軟件,每次只能輸入一個數(shù)據(jù),以回車作為結(jié)束,"vvendl;coutvv"多余字符將被舍棄。"vvendl;coutvv"請估計確認您的計算結(jié)果不會過于龐大,結(jié)果有效范圍是(0,1.7*10人308 o "vvendl;coutvv"我們提供的計算結(jié)果將保留3位小數(shù)。"vvendlvvendlvvendl;/使用說明docoutvv"我們可以為您提供三種圖形的計算,請您輸入您要計算圖形的代碼:n"coutvv"1圓形;n"coutvv"2長方形;n

19、"coutvv"3直角三角形;n"coutvv"0退出程序;n"cout<<"您的選擇:”;菜單提示,循環(huán)出現(xiàn)loop:cin>>n;讀取代碼,標號 loopfflush(stdin);清空輸入緩沖區(qū),多余的輸入將被舍棄,防止出現(xiàn)非法輸入造成程序故障,因此使用說明中 提示舍棄多余輸入cout<<e ndl;switch (n)case 'O':cout<<"$n"cout<<"$感謝您的使用! $n"cout<&l

20、t;"$ 再見!$n"cout<<"$n"exit(0);代碼0,退出程序,出現(xiàn)退出界面,退出程序case '1':cout<<"您選擇了“圓形”,請您輸入它的半徑(r) : "<<endl;r=readch();cout<<e ndl;yua n.Set(r);/ 賦值l=yua n.Perimeter();s=yua n.Area();調(diào)用函數(shù)成員cout<<"您給出的"圓形”的計算結(jié)果如下:"<<e ndl;re

21、sult(l,s);/利用數(shù)據(jù)輸出函數(shù)按固定格式輸出結(jié)果break;case '2':cout<<"您選擇了“長方形”,請您分別輸入它的長和寬(b): "<<endl;cout<<"a="cha ng=readch();cout<<"b="kua n=readch();cout<<e ndl;cha ngfan g.Set(cha ng,kua n);l=cha ngfan g.Perimeter();s=cha ngfan g.Area();cout<

22、<"您給出的長方形的計算結(jié)果如下:"<<e ndl;result(l,s);break;case '3':cout<<"您選擇了“直角三角形”,請您分別輸入它的底邊(b)和高(h): "<<endl;cout<<"b="di=readch();cout<<"h="gao=readch();cout<<e ndl;sanjiao.Set(di,gao);l=sanjiao.Perimeter();s=sanjiao.Area

23、();cout<<"您給出的直角三角形的計算結(jié)果如下:"<<e ndl;result(l,s);break;default:cout<<"您輸入的代碼不能識別,代碼只能是菜單中所列(0-3),請您重新輸入:"goto loop;/用戶輸入非菜單中所列代碼程序報錯,請求重新輸入,跳轉(zhuǎn)標號loop所在位置,再次讀取輸入while( n!='0');CTest2_class.cp|p類):#include <math.h>包含該頭文件,使用數(shù)學計算函數(shù),如sqrt函數(shù)class Circle/ 類

24、的定義 private:/私有數(shù)據(jù)成員 double r;public:/公有函數(shù)成員void Set(double data)r=data;double Area()/面積計算函數(shù) double s=0;s=3.14*r*r; return s;double Perimeter。/周長計算函數(shù) double l=0;l=2*3.14*r; return l;Circle()/不帶參數(shù)的構(gòu)造函數(shù)r=0;Circle(double data)/帶參數(shù)的構(gòu)造函數(shù)r=data;Circle(Circle &c)/拷貝構(gòu)造函數(shù)r=c.r;class Recta ngleprivate :dou

25、ble len gth, width ;public :void Set( double a, double b ) len gth = a; width = b; double Area()double area;area = len gth * width ;return area;double Perimeter。 return 2*(le ngth + width) ; Recta ngle() len gth=0; width=0; Recta ngle( double a, double b ) len gth=a; width=b; Recta ngle( Recta ngle

26、&r )le ngth=ren gth; width=r.width; ;class tran gleprivate :double di, gao;public :void Set( double b, double h ) di=b; gao=h; double Area()double area;area=0.5*di*gao;return area;double Perimeter() double x2,x,l; x2=di*di+gao*gao; x=sqrt(x2);l=di+gao+x;return l;tran gle() di=0; gao=0; tran gle(

27、 double b, double h ) di=b; gao=h; tran gle( tran gle &r )di=r.di; gao=r.gao; ;CTest2_function.cp(函數(shù)):#in elude <iostream>#include <iomanip> 包含該頭文件,使用 setprecision、setw 函數(shù)using n amespace std;double readch()讀數(shù)據(jù)函數(shù),功能包括判斷輸入數(shù)據(jù)類型正誤、數(shù)據(jù)取值是否符合要求double t;reputin:while(!(cin»t)判斷輸入類型是否正確,標號reputincin.sync();清空cin緩沖區(qū)里面未讀取

溫馨提示

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

評論

0/150

提交評論