c語言課程設計報告--使用菜單選擇趣味程序
《c語言課程設計報告--使用菜單選擇趣味程序》由會員分享,可在線閱讀,更多相關《c語言課程設計報告--使用菜單選擇趣味程序(16頁珍藏版)》請在裝配圖網上搜索。
1、 青島農業(yè)大學 課程設計報告 題 目: 使用菜單選擇趣味程序 姓 名: 楊麗娜 學 院: 理學與信息科學學院 專 業(yè): 通信工程 班 級: 2班 學 號: 20123239
2、 指導教師: 年月日 目 錄 一 設計目的…………………………………………………………….1 二 課程設計的內容........................................2 三 課程設計的要求與數據..................................3 四 課程設計應完成的工作..................................4 五 總體設
3、計(包含幾大功能模塊)...........................5 六 詳細設計(各功能模塊的具體實現算法——流程圖)………….6 七 調試分析(包含各模塊的測試用例,及測試結果)…………….7 八 總結………………………………………………………………...8 十 參考資料…………………………………………………………….9 一 設計目的 進一步加深、鞏固所學專業(yè)課程(《C語言程序設計》)的基本理論知識,理論聯系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調試應用程序和進行其它相關設計的技能。 結合實
4、際深入理解高級語言程序設計的基本概念、原理及方法。運用所學的基礎知識開發(fā)一個小型的程序,能根據問題的需要構造所需的數據結構,設計適合的算法,解決問題。掌握設計任務的具體要求,進行設計、調試軟件的具體方法、步驟和技巧。對一個實際課題的軟件設計有基本了解,拓展知識面,激發(fā)在此領域中繼續(xù)學習和研究的興趣,為學習后續(xù)課程做準備。 二 課程設計的內容 使用菜單選擇趣味程序 設計目的:本程序旨在訓練學生的編程能力,使用C語言最基本的知識,訓練結構化程序設計的基本技術。 功能:設計分兩步,首先設計一個含有多個菜單項的菜單演示程序,然后再為這些菜單項配上相應的功能。 要求:使用數字1—6來選擇菜單
5、項,其他輸入則不起作用。其實是5道編程題: 1)FindNum 使用窮舉法尋找滿足下式中的i 的值(30+i)*6237=(10*i+3)*3564 2)FindRoot 求方程的根的程序 3)Detective 一輛汽車撞人后逃跑。4個目擊者提供如下線索: 甲:牌照三、四位相同; 乙:牌號為31xxxx; 丙:牌照五、六位相同; ?。喝搅皇且粋€整數的平方 4)Bear 本題是一個笑話,話說有一只狗熊到玉米地里掰玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個回去喂小狗熊。第二天又去吃了剩下的一半,走時仍然帶一個回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走
6、一個。到第十天時,地里只剩下一個玉米。求地里一共有多少玉米。 5)Diamond 本題要求編制打印以下圖案的程序,注意題目要求在左邊留出一定空格 * *** ***** ******* ***** *** * 6)GoodBye! 結束程序運行。 三 課程設計的要求與數據 1.用C語言實現系統; 2.使用數字1—6來選擇菜單項,其他輸入則不起作用; 四 課程設計應完成的工作 (1)編寫算法; (2)算
7、法測試,并有具體的測試結果和結果分析; (3)撰寫課程設計報告。內容包括: 1) 封面扉頁 2) 設計任務書 3) 目錄 4) 總體設計方案(包括流程圖) 5) 使用說明及運行實例(包括界面) 6) 成員設計內容簡介 7) 項目源程序代碼(注意注釋的使用) 8) 指導教師評語 五 總體設計(包含幾大功能模塊) 通過輸入1-6來進行菜單選擇,來選取自己需要的程序結果,從而得到想要的結果。 六 詳細設計(各功能模塊的具體實現算法——流程圖) 使用菜單選擇程序 ??? 菜單是應用程序的界面,控制語句用來改變程序執(zhí)行的順序,是實現結構化程序設計的基礎。設計一
8、個比較實用的菜單,通過菜單選擇不同的功能。 ?? 設計分為兩步:首先設計一個含有多個菜單項的菜單演示程序,然后再為這些菜單項配上相應的功能。 一、設計一個菜單程序 (1)菜單內客 程序運行后,給出6個菜單項的內容和輸入提示。 ?? 1.FindNum ?? 2.FindRoot ?? 3.Detective ?? 4.Bear ?? 5.Diamond ?? 6.Goodbye! ?? Input 1-6: (2)設計要求 使用數字1-6來選擇菜單項,其他輸人則不起作用。 二、增加菜單項的處理功能 ???? 以設計的菜單為基礎,增加菜單項的處理功能。 菜單項設計
9、要求 ???? 這其實是5道編程題,目的是鍛煉使用控制語句的能力。 ???? (1)FindNum ???????? 利用計算機的計算速度快的特點,把所有可能的數都試一下,從中找出符合條件的數。這就是所謂的窮舉法。 ???? 某位的數字只有0-9個數字,顯然已經排除了為0的可能性,將1--9種可能性拿來試驗,即可找到合適的數字。由此可見,就是尋找滿足下式面的i值: ???? (30+i)×6237=(10×i+3)×3564 ?? (2)FindRoot ???? 這里要求編制一個求方程ax2+bx+c=0的根的程序。一般將系數設計成float型,可以把變量設為double型,使
10、用庫函數sqrt求平方根,sqrt在頭文件math.h中定義。假設 ?????? disc=b×b-4×a×c 可以根據d大于、等于或小于零來決定求解方法。 ?????? if(disc>0) {//有兩個不相等的實數解} else if ( disc = = 0 ) {//有兩個相等的實數解} ??? else ???? {//有兩個不相等的虛數解} (3)Detective 這是一道偵探題。一輛汽車憧人后逃跑。4個目擊者提供如下線索: ?? 甲:牌照三、四位相同;??? 乙:牌號為31xxxx; ?? 丙:牌照五、六位相同;??? 丁:三一六位是一個整數的平方。
11、為了從這些線索中求出牌照號碼,只要求出后四位再加上310000即可。這四位又是前兩位相同,后兩位也相同,互相又不相同并且是某個整數的平方的數??梢匀匀皇褂酶F舉法,利用計算機的計算速度快的特點,把所有可能的數都試一下,從中找出符合條件的數。 因為后面4位數,1000的平方根>31,所以窮舉實驗時不需從1開始,而是從31開始尋找一個整數的平方。下面直接使用for語句格式,給出算法思想。{ int i,a,b,c,d;long m; for(i=32;i<=99;i++) /*窮舉找出后四位號碼*/ { m=i*i; a=m%10
12、; b=m/10%10; c=m/100%10; d=m/1000; if(a==b&&c==d) break; } printf("%ld\n",m+310000); return 0; } ?? (4)Bear 本題是一個笑話,話說有一只狗熊到玉米地里掰玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個回去喂小狗熊。第二天又去吃了剩下的一半,走時仍然帶一個回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走一個。到第十天時,地里只剩下一個玉米。求地里一共有多少玉米。 這里可以使用回溯算法。假
13、設狗熊每次吃掉的為x2,則第10天時的x2=1,第9天地里剩下的玉米xl = (x2 + l) ×2,這也是狗熊在第8天時吃掉的玉米數量。因此可以使用如下算法描述: { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; /*第1天玉米數是第2天玉米數加1后的2倍*/ x2=x1; day--; } printf("total=%d\n",x1); return 0; } (5)Diamond 本題要求編制打印以下圖案的程序,注意題目還要求在左邊留出一定空格。 ????
14、? ?*
***
*****
*******
*****
***
*
??(6)Goodbye!
這里除了輸出一個簡單的信息之外,還必須結束程序運行。
七 調試分析(包含各模塊的測試用例,及測試結果)
7.1源程序
#include
15、
16、); break; case 2: FindRoot(); system("pause"); break; case 3: Detective(); system("pause"); break; case 4: Bear(); system("pause"); break; case 5: Diamond(); system("pause"); break;
17、case 6: printf("GoodBye!\n"); system("pause"); exit(6); } } } int menu_select() /*主函數菜單*/ { char c; do{ system("cls"); printf("1.FindNum\n" ); printf("2.FindRoot\n"); printf("3.Detective\n"); printf("4.Bear\n");
18、 printf("5.Diamond\n"); printf("6.GoodBye\n"); c=getchar(); }while(c<'1'||c>'6'); return(c-'0'); } int FindNum() /*找數字*/ { int i; for(i=0;i<10;i++) { if((30+i)*6237==(i*10+3)*3564) { printf("The answer
19、is %d\n",i); printf("3%d*6237=%d3*3564\n",i,i); break; } } return 0; } int FindRoot() /*找方程的根*/ { double a,b,c,disc,x1,x2,realpart,imagpart; /*定義double型變量*/ scanf("%lf%lf%lf",&a,&b,&c); printf("The equation"); if(fab
20、s(a)<=1e-6) printf("is not a equation\n"); else { disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two eqaul roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) { x1=(-b+sqrt(-disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4fand%8.4f\n"
21、,x1,x2); } else { realpart=-b/(2*a); /*realpart是復根的實部*/ imagpart=sqrt(disc)/(2*a); /*realpart是復根的虛部*/ printf("has complax roots\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); /*輸出一個復數*/ printf("%8.4f+%8.4fi\n",realpart,imagpart);
22、/*輸出另一個復數*/ } } return 0; } int Detective() /*找牌照*/ { int i,a,b,c,d;long m; for(i=32;i<=99;i++) /*窮舉找出后四位號碼*/ { m=i*i; a=m%10; b=m/10%10; c=m/100%10; d=m/1000; if(a==b&&c==d) break; } printf("%ld\n"
23、,m+310000); return 0; } int Bear() /*熊吃玉米的問題*/ { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; /*第1天玉米數是第2天玉米數加1后的2倍*/ x2=x1; day--; } printf("total=%d\n",x1); return 0; } int Diamond() /*鉆石*/ { int i,j,k; for(i=0;i<=3;i++
24、) /*控制循環(huán)次數,i由1變到3,共循環(huán)3次*/ { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<4-2*i;k++) printf("*"); printf("\n"); } return 0; }
25、 int GoodBye() /*再見*/ { char a='G',b='o',c='o',d='d',e='B',f='y',g='e’,h=’!’; /*定義8個字符變量并初始化*/ putchar(a); /*向顯示器輸出字母G*/ putchar(b); /*向顯示器輸出字母o*/ putchar(c); /*向顯示器輸出字母o*/ putchar(d);
26、 /*向顯示器輸出字母d*/ putchar(e); /*向顯示器輸出字母B*/ putchar(f); /*向顯示器輸出字母y*/ putchar(g); /*向顯示器輸出字母e*/ putchar(h); /*向顯示器輸出符號!*/ putchar('\n'); /*向顯示器輸出一個換行值*/ retur
27、n 0; } 7.2主要程序運行結果 1)當輸入的菜單項為1時,輸出結果如圖a所示 圖a 2)當輸入的菜單項為2時有以下3種情況 (1)輸入a,b,c的值1,2,1,得到兩個相等的實根,輸出結果如圖b①所示 圖b① (2)輸入a,b,c的值1,2,2,得到兩個共軛的復根,輸出結果如圖b②所示 圖b② (3)輸入a,b,c的值2,6,1,得到兩個不等的實根,輸出結果如圖b③所示 圖b② 3)當輸入的菜單項為3時,輸出結果如圖c所示 圖b③ 4)當輸入的菜單項為4時,輸
28、出結果如圖d所示 圖d 5)當輸入的菜單項為5時,輸出結果如圖e所示 圖e 6)當輸入的菜單項為6時,輸出結果如圖f所示 圖f 八 總結 由于本課題中的許多知識點都沒有學過都要靠自己到課外的資料中去查找。在用的時候難免出現這樣那樣的錯誤。如開始設計出來的菜單不是預想的那樣,而是總個窗中出現混亂。解決的這個問題的辦法是調整。一個系統的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設計的這個系統。在設計的
29、調試過程中也無法順利的完成調試工作。有了一個清晰簡單的菜單和一些提示信息這后,調試過程完成的非常順利。 回顧起此次課程設計,我感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整兩個禮拜的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題
30、,同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之后,一定把以前所學過的知識熟悉了,本次課程設計結束了,我們通過這次實踐學到了許多知識。學到了設計一個簡單的系統。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設計,更是鍛煉我們處理問題的能力,同時也使我了解編寫程序是件細心活,稍不留神就會出錯,這就必須要求我們對待事情要認真!在編寫程序的過程中,錯誤不斷出現,不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數等等)層出不窮,這考驗我們待事細心,耐心,能不能堅持到底,不能半途而廢。 但我們總結出了一點點的經驗如下: 1、要對系統的功能和要求做出詳細的分析,并合理分解任務。 2、把分解出來的子任務,做給一個相對獨立的模塊。 3、在設計一個模塊之前,要簡單構想一下總界面的顯視情況。 4、針對構想出來的界面進行程序的編寫。 九 參考資料 [1]譚浩強. C程序設計(第三版) . 北京:清華大學出版社, 2005 [2]譚浩強. C程序設計題解與上機指導(第三版) . 北京:清華大學出版社, 2005 [3]李春葆,張植民,肖忠付.C語言設計題典[M].北京:清華大學出版社,2002 [4]網上相關資料 15
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年八年級語文上冊周末作業(yè)十六課件新人教版
- 2023年四年級數學下冊3確定位置第1課時確定位置1上課課件西師大版
- 教科科學一下1.7.認識一袋空氣【市一等獎】優(yōu)質課課件
- 九年級語文下冊 第一單元 1 家課件 語文版 (1273)
- 人教版八年級數學上冊《第十一章三角形復習ppt課件》
- 2021屆高考作文指導_哲理詩類材料作文審題課件
- 生物安全柜使用(同名55)課件
- 九年級化學下冊 12 化學與生活 課題1 人類重要的營養(yǎng)物質課件 (新版)新人教版 (8)
- 呼吸機波形分析及臨床應用
- 熱風爐用耐火材料
- 年級下冊春天來了課件語文A版市公開課金獎市賽課一等獎課件
- 詞法代詞知識點講解及訓練課件
- 年度工作計劃課件
- 全球營銷英文版最新版教學ppt課件第2章
- 注重儀表-塑造美麗----儀容儀表主題班會課件