中南大學C++實踐報告完整版.docx_第1頁
中南大學C++實踐報告完整版.docx_第2頁
中南大學C++實踐報告完整版.docx_第3頁
中南大學C++實踐報告完整版.docx_第4頁
中南大學C++實踐報告完整版.docx_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

中南大學化學化工學院C+語言程序設計實踐報告專業(yè)班級: 姓名: 學號: 同組人員: 指導教師: 完成日期: 目錄第一題(必做)31. 題目32. 系統(tǒng)功能模塊結構圖43. 數(shù)據結構設計及說明(程序)54. 程序結構(流程圖)105. 各模塊的功能156. 運行結果16第二題(必做)211. 題目212. 數(shù)據結構設計及說明(程序)213. 程序結構(流程圖)244. 運行結果25第三題(選做)26第四題(選做)261. 題目262. 系統(tǒng)功能模塊結構圖273. 數(shù)據結構設計及說明(程序)274. 程序結構(流程圖)305. 各模塊的功能316. 運行結果31總結及參考文獻35第一題一、題目:使用菜單選擇趣味程序 菜單是應用程序的界面,控制語句用來改變程序執(zhí)行的順序,是實現(xiàn)結構化設計的基礎。 本題的任務是設計一個比較實用的菜單,通過菜單選擇不同的功能。 本題的設計分兩步:(1)先設計一個含有多個菜單項的菜單演示程序;A、菜單內容:程序運行后,給出六個菜單項的內容和輸出提示1、FindNum2、FindRoot3、Detective4、Bear5、Curve6、YearDay7、Goodbye!B、設計要求:使用數(shù)字1-7來選擇菜單項,其他輸入則不起作用。(2)再為上述菜單項配上相應的功能,即以上述菜單的設計為基礎,增加菜單項的處理功能。菜單設計要求(這是6道編程題,要求在運行菜單時,能給出每個程序的運行結果):1、FindNum有0、1、2、3、4、5、6、7、8、9十個數(shù),按要求填入下列算式中,要求每個數(shù)只使用一次,首位數(shù)不能為零,輸出時顯示所有可能的組合并統(tǒng)計個數(shù)。 + = 2、FindRoot求方程在區(qū)間-8,8內的全部實根。3、Detective這是一個偵探題,有一輛汽車撞人后跑了,4個目擊證人提供如下線索:牌照三、四位相同;牌號為31xxxx;牌照五、六位相同,三到六位是一個整數(shù)的平方。4、Bear有一只狗熊到玉米地里吃玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個回去喂小熊。第二天又去吃了剩下的一半,走是仍帶走一個回去喂小熊。以后每天都吃前天剩下的一半,拿走一個。到第十天,地里只剩下一個玉米。求地里一共有多少玉米。5、Curve(可選作)繪制一條滴定曲線(已知是0.1000mol/L的氫氧化鈉滴定20.00mL同濃度的鹽酸)。曲線如圖所示。此題可以根據所給曲線大致形狀,運用常規(guī)的編制圖形的方法來繪制。也可根據下面所列的方程式來繪出滴定曲線。其中H為氫離子濃度,cHCl為鹽酸濃度,Kt=1014.00,a為滴定分數(shù)(令a在02范圍內取值,步長為0.001),Vb為氫氧化鈉加入到鹽酸中的瞬時濃度。6、YearDay已知2000年1月1日為星期六,請輸入任一年的年份后,打印該年的年歷。7、Goodbye!這里除了輸出一個信息外,還必須結束程序運行。二、系統(tǒng)功能模塊結構圖:主調main函數(shù)啟動DetectiveFindnumCurveGoobye!BearFindrootYearday三、數(shù)據結構設計及說明(程序):#include#include using namespace std;#define YES 1 /* 定義符號常數(shù)“是” */#define NO 0 /* 定義符號常數(shù)“否” */void FindNum() /函數(shù)1intA,B,C,N,M,O,a,b,c,d,e,f,g,h,i,j,mm=0;cout符合條件的組合是:; for(A=1000;A=9999;A+) for(B=100;B=999;B+) for(C=100;C=999;C+) /多層循環(huán)對可能的數(shù)字進行組合 N=A;a=N/1000;N=N%1000; b=N/100;N=N%100; c=N/10;N=N%10; d=N; M=B;O=C; e=M/100;M=M%100; f=M/10;M=M%10; g=M; h=O/100;O=O%100;i=O/10;O=O%10; j=O; /提取出各位數(shù)字 if(a!=b)&(a!=c)&(a!=d)&(a!=e)&(a!=f)&(a!=g)&(a!=h)&(a!=i)&(a!=j)&(b!=c)&(b!=d)&(b!=e)&(b!=f)&(b!=g)&(b!=h)&(b!=i)&(b!=j)&(c!=d)&(c!=e)&(c!=f)&(c!=g)&(c!=h)&(c!=i)&(c!=j)& (d!=e)&(d!=f)&(d!=g)&(d!=h)&(d!=i)&(d!=j)&(e!=f)&(e!=g)&(e!=h)&(e!=i)&(e!=j)&(f!=g)&(f!=h)&(f!=i)&(f!=j)&(g!=h)&(g!=i)&(g!=j)&(h!=i)&(h!=j)&(i!=j)&(A=B+C)/判斷各位數(shù)字不相等,并且符合題意等式要求 cout B+C=Aendl;mm+; cout共有組合個數(shù):mm;/輸出組合的個數(shù)voidFindRoot()float i,j,k,s1,s2,s;for(i=-8;i=7;i+) j=i+1;s1=i*i*i-3*i-1;s2=j*j*j-3*j-1;if(s1*s20)dok=(i+j)/2; s=k*k*k-3*k-1;if(s1*s=1e-6);/利用數(shù)學函數(shù)對輸出的解進行精度控制cout方程的實根為:kendl;void Detective() inta,A,i,j;for(i=0;i=9;i+) for(j=0;j=9;j+)/車牌后四位的排列組合 for(a=0;a100;a+)/對所有可能的數(shù)字進行平方,為之后的比較做準備 A=1000*i+100*i+10*j+j;/算出車牌后四位數(shù)的數(shù)學值if(a*a=A)cout車牌號為31iijjendl; void Bear()int day=10, x1, x2=1;cout有一只狗熊到玉米地里吃玉米,一邊掰一邊吃.endl;cout第一天吃了一半,又拿走一個回去喂小熊。endl;cout第二天又去吃了剩下的一半,走是仍帶走一個回去喂小熊。endl;cout以后每天都吃前天剩下的一半,拿走一個。到第十天,地里只剩下一個玉米。求地里一共有多少玉米。0)/循環(huán)直到時間的始端0 x1=(x2+1)*2;/前一天的數(shù)量是后一天加一的兩倍x2=x1; day-;/天數(shù)遞減,倒退 cout玉米田里共有玉米x1個endl;intisleap(int year)/* 函數(shù)isleap(): 判斷某年是否閏年 */int leap = NO;if(year%4=0 & year%100!=0 )| year%400=0)leap = YES;return leap;/* 函數(shù)week_of_newyears_day(): 求元旦是星期幾 */intweek_of_newyears_day(int year)int n = year-1900; n = n+(n-1)/4+1; n = n%7;return n;intYearDay()int year, month, day, weekday, len_of_month, i; coutyear; /*因為你的要求是已知2000年1月1日是星期六,所以這里不用week_of_newyears_day去求星期六了*/ weekday = week_of_newyears_day(year); /* 求元旦是星期幾 */coutyear年endl; /* 打印年份 */ for(month=1; month=12;month=month+1) /* 打印12個月的月歷 */ coutmonth月endl;cout-endl;cout星期日星期一星期二星期三星期四星期五星期六endl;cout-endl; for(i=0;iweekday;i=i+1) /* 找當月1日的打印位置 */cout ;if(month=4 | month= 6 | month=9 | month=11)len_of_month = 30;else if(month=2) if(isleap(year)len_of_month = 29;elselen_of_month = 28; elselen_of_month = 31; for(day=1;day=len_of_month;day=day+1)/* 打印當月日期 */ coutday;if(day10) cout ;elsecout ;weekday = weekday+1; if(weekday=7) /* 打滿一星期應換行 */ weekday = 0;coutendl; coutendl; /* 打完一月應換行 */ return 0;int main() int N;cout-趣味選擇菜單程序-endl;cout1.FindNumendl;cout2.FindRootendl;cout3.Detectiveendl;cout4.Bearendl;cout5.Curve(不可使用)endl;cout6.YearDayendl;cout7.Goodbyeendl;/輸出菜單內容coutN;if(N0&N8)switch(N) case 1:FindNum();coutendl; return main();/重新返回主函數(shù),即可重新開始菜單選擇case 2:FindRoot();coutendl;return main();case 3:Detective();coutendl;return main();case 4:Bear();coutendl;return main(); case 5:coutsorry,該程序未編寫endl;return main();case 6:YearDay();coutendl;return main();case 7:coutGoodbye!endl;cout-謝謝使用-endl; else cout輸入錯誤,請輸入17的整數(shù)endl;return main(); 四、程序結構(流程圖):*主菜單程序結構圖:輸出菜單及提示信息12346其它7Findnum()Findroot()Detective()Goodbye!結束輸入錯誤Yearday()Bear()數(shù)字判斷開始5Curve()*分程序結構圖:1、findnum開始A=1000B=999B=100B+C+判斷各位數(shù)字是否相同,等式是否成立C=100A+結束FalseFalseFalsetureC=999A=9999tureture開始2、findroot:i=7j=i+1;s1=i*i*i-3*i-1s2=j*j*j-3*j-1;s1*s20k=(i+j)/2; s=k*k*k-3*k-1s1*s=1e-6Flase輸出符合的根i+a*a=A輸出車牌開始i=0j=9j=0j+a+A=1000*i+100*i+10*j+ja=0i+結束FalseFalseFalseturea100i=93、detectiveturetureture4、Bear:開始bear()n=10bear(10)=1returnn=92*bear(10)+1returnn=82*bear(9)+1returnn=22*bear(3)+1returnn=32*bear(4)+1returnn=12*bear(2)+1return結束并返回值5、Curve輸出sorry(此題未編寫結束開始6、yearday:開始輸入年份按閏年方式打印年歷判斷是否閏年計算各月天數(shù),打印年歷結束,返回主菜單7、goodbye輸出goodbye菜單程序結束開始五、各模塊的功能:一、main輸出菜單格式,并指向個分程序二、1、FindNum有0、1、2、3、4、5、6、7、8、9十個數(shù),按要求填入下列算式中,要求每個數(shù)只使用一次,首位數(shù)不能為零,輸出時顯示所有可能的組合并統(tǒng)計個數(shù)。 + = 2、FindRoot輸出方程在區(qū)間-8,8內的全部實根。3、Detective解出偵探題:有一輛汽車撞人后跑了,4個目擊證人提供如下線索:牌照三、四位相同;牌號為31xxxx;牌照五、六位相同,三到六位是一個整數(shù)的平方。4、Bear有一只狗熊到玉米地里吃玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個回去喂小熊。第二天又去吃了剩下的一半,走是仍帶走一個回去喂小熊。以后每天都吃前天剩下的一半,拿走一個。到第十天,地里只剩下一個玉米。求出地里一共有多少玉米。5、Curve 輸出sorry(此題未編寫)6、YearDay已知2000年1月1日為星期六,輸入任一年的年份后,可打印該年的年歷。7、Goodbye!這里輸出“Goodbye!-謝謝使用-”,且結束程序運行。六、運行結果:程序運行后,顯示菜單內容和輸出提示 (1)Findnum(2)Findroot(3)Detective (4)Bear (5)Curve(6)YearDay(7)Goodbye(8)輸入錯誤數(shù)字時第二題一、題目: 輸出一份元素周期表; 要求有原子序數(shù)和元素符號; 在輸入原子序數(shù)或元素符號時,能相應的輸出元素符號或原子序數(shù) 二、數(shù)據結構設計及說明(程序):1.對于此程序,需要在運行時輸出整個元素周期表,且對應有相應的原子序數(shù)和元素符號,且具有查找功能,即輸入原子序數(shù)或元素符號時,能相應的輸出元素符號或原子序數(shù)。2.程序:#include #include using namespace std;void main()char *a=H,He,Li,Be,B,C,N,O,F,Ne,Na,Mg,Al,Si,P,S,Cl,Ar,K,Ca,Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn,Ga,Ge,As,Se,Br,Kr,Rb,Sr,Y,Zr,Nb,Mo,Tc,Ru,Rh,Pd,Ag,Cd,In,Sn,Sb,Te,I,Xe,Cs,Ba,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu,Hf,Ta,W,Re,Os,Ir,Pt,Au,Hg,Ti,Pb,Bi,Po,At,Rn,Fr,Ra,Ac,Th,Pa,U,Np,Pu,Am,Cm,Bk,Cf,Es,Fm,Md,No,Lr,Rf,Db,Sg,Bh,Hs,Mt,Uun,Uuu,Uub;int b=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112;inti,j,k=1,l=1;for(i=0;i7;i+) for(j=0;j18&k0&j0&i1&j12)cout ;else if(i=5&j=2) cout57-71 ;k=72;else if(i=6&j=2) cout89-103 ;k=104;/鑭系錒系分行else coutbk-1 ;k+;coutendl;for(j=0;j18&l0&j0&i1&j12)cout ;else if(i=5&j=2) coutLa-Lu ;l=72;else if(i=6&j=2) coutAc-Lr ;l=104;else coutal-1 ;l+; coutendl; coutendl; for(i=57;i72;i+)coutbi-1 ;coutendl;for(i=56;i71;i+)coutai ;coutendl;coutendl;for(i=89;i104;i+)coutbi-1 ;coutendl;for(i=88;i103;i+)coutai ;coutendl;coutendl;cout請選擇:1.退出;2.輸入原子序數(shù)找對應元素;3.輸入元素找對應原子序數(shù)j;if(j=1)cout退出!endl;else if(j=2)intk;coutendl;coutk;if(k0)&(k=112)for(i=0;i112;i+)/通過循環(huán)找到對應序數(shù)的對應元素if(k=bi)cout該原子序數(shù)對應的元素:aiendl;else if(j=3) char m4,*n;coutendl;coutm; for(i=0;i112;i+)/通過循環(huán)找到對應元素的對應序數(shù) n=ai;if(strcmp(n,m)=0)/ strcmp函數(shù)比較字符是否相同,相同返回非0 值cout該元素對應的原子序數(shù):biendl;運用數(shù)組和for語句循環(huán)輸出整個元素周期表,且使元素與其元素符號和元素序數(shù)相對應,便于下面元素查找。3. 通過if語句輸入的是原子序數(shù)還是元素符號,再通過for語句與之對應的元素符號或序數(shù)并輸出。三、程序結構(流程圖):開始輸入元素周期表輸出菜單輸入數(shù)字231輸入元素找對應原子序數(shù)輸入原子序數(shù)找對應元素退出結束輸入原子序數(shù)找對應元素四、運行結果:1、輸出周期表2、按原子序數(shù)查找元素符號3、元素符號查找原子序號第三題(選做)對學生的成績信息進行管理。學生信息包括:學號、姓名、學期、每門課程的成績、平均成績、名次。實現(xiàn):學生信息的錄入;修改;刪除和查詢,按學期、學號、成績不及格等查詢。第四題(選做)一、題目:小學生數(shù)學測試軟件的編寫要求:(1)可選擇題型(+,-,*,/);(2)可選擇每次答題的個數(shù);(3)隨機生成兩個數(shù)進行運算;(4)每次在輸入答案后應判斷對錯,若答案錯誤,應給出正確答案;(5)最后給出做對題目的總個數(shù)。注意:產生隨機數(shù)的方法使用隨機數(shù)函數(shù)二、系統(tǒng)功能模塊結構圖:主調main函數(shù)加法計算減法計算乘法計算除法計算三、數(shù)據結構設計及說明(程序):#include using namespace std;int main()inti,j,k,R=0,n;cout小學數(shù)學測試endl;cout請選擇想測試的題型:1.+ 2.- 3.* 4./i;if(i=1) coutj; for(int n=0;nj;n+)/循環(huán)j次,產生j個題目 int x1=rand()%100;int x2=rand()%100; /產生任意兩正整數(shù)隨機函數(shù)coutx1+x2k;if(k=x1+x2) cout回答正確!endl; R+;/正確個數(shù)遞加 elsecout回答錯誤!正確答案為:x1+x2endl; else if(i=2) coutj;for(int n=0;nx2 coutx2-x1k;if(k=x2-x1) cout回答正確!endl; R+; elsecout回答錯誤!正確答案為:x2-x1endl; else if(i=3) coutj;for(int n=0;nj;n+) int x1=rand()%100;int x2=rand()%100; /產生任意非0整數(shù)隨機函數(shù)coutx1*x2k;if(k=x1*x2) cout回答正確!endl; R+; elsecout回答錯誤!正確答案為:x1*x2endl; else if(i=4) coutj;for(int n=0;nj;n+) int x1=rand()%100+1;/產生正整數(shù)int x2=x1*(rand()%10); /產生可被X1整除的非負整數(shù)coutx2/x1k;if(k=x2/x1) cout回答正確!endl; R+; elsecout回答錯誤!正確答案為:x2/x1endl; cout這次測試你回答正確的題目的個數(shù)為R個endl; coutn; if(n=1) cout下面開始重新測試endl; return main();/返回main函數(shù),重新開始測試return 0; 四、程序結構(流程圖):01結束3214-/*+開始輸出菜單及提示信息數(shù)字判斷正確個數(shù)數(shù)字判斷結束進行四則運算n+,R+Rnj?開始題目數(shù)j生成兩個隨機數(shù)五、各模塊的功能:1、由main函數(shù)指向四個運算2、進行加減乘除四則運算六、運行結果:1、輸出題頭2、加法運算3、減法運算4、乘法運算5、除法運算6、退出:輸出答對正確題目的個數(shù)總結及參考文獻:這次實踐使我認識到了C+程序設計是一門實踐性很強的學科,我們學校C+不僅僅是為了學習而學習,還能鍛煉我們的創(chuàng)新能力,合作精神等等,我們不僅要按照要求完成作業(yè),還要在設計時加上自己的想法及理解,開始是以為

溫馨提示

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

評論

0/150

提交評論