c語言課程設(shè)計報告--使用菜單選擇趣味程序
《c語言課程設(shè)計報告--使用菜單選擇趣味程序》由會員分享,可在線閱讀,更多相關(guān)《c語言課程設(shè)計報告--使用菜單選擇趣味程序(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 青島農(nóng)業(yè)大學(xué) 課程設(shè)計報告 題 目: 使用菜單選擇趣味程序 姓 名: 楊麗娜 學(xué) 院: 理學(xué)與信息科學(xué)學(xué)院 專 業(yè): 通信工程 班 級: 2班 學(xué) 號: 20123239
2、 指導(dǎo)教師: 年月日 目 錄 一 設(shè)計目的…………………………………………………………….1 二 課程設(shè)計的內(nèi)容........................................2 三 課程設(shè)計的要求與數(shù)據(jù)..................................3 四 課程設(shè)計應(yīng)完成的工作..................................4 五 總體設(shè)
3、計(包含幾大功能模塊)...........................5 六 詳細設(shè)計(各功能模塊的具體實現(xiàn)算法——流程圖)………….6 七 調(diào)試分析(包含各模塊的測試用例,及測試結(jié)果)…………….7 八 總結(jié)………………………………………………………………...8 十 參考資料…………………………………………………………….9 一 設(shè)計目的 進一步加深、鞏固所學(xué)專業(yè)課程(《C語言程序設(shè)計》)的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調(diào)試應(yīng)用程序和進行其它相關(guān)設(shè)計的技能。 結(jié)合實
4、際深入理解高級語言程序設(shè)計的基本概念、原理及方法。運用所學(xué)的基礎(chǔ)知識開發(fā)一個小型的程序,能根據(jù)問題的需要構(gòu)造所需的數(shù)據(jù)結(jié)構(gòu),設(shè)計適合的算法,解決問題。掌握設(shè)計任務(wù)的具體要求,進行設(shè)計、調(diào)試軟件的具體方法、步驟和技巧。對一個實際課題的軟件設(shè)計有基本了解,拓展知識面,激發(fā)在此領(lǐng)域中繼續(xù)學(xué)習(xí)和研究的興趣,為學(xué)習(xí)后續(xù)課程做準(zhǔn)備。 二 課程設(shè)計的內(nèi)容 使用菜單選擇趣味程序 設(shè)計目的:本程序旨在訓(xùn)練學(xué)生的編程能力,使用C語言最基本的知識,訓(xùn)練結(jié)構(gòu)化程序設(shè)計的基本技術(shù)。 功能:設(shè)計分兩步,首先設(shè)計一個含有多個菜單項的菜單演示程序,然后再為這些菜單項配上相應(yīng)的功能。 要求:使用數(shù)字1—6來選擇菜單
5、項,其他輸入則不起作用。其實是5道編程題: 1)FindNum 使用窮舉法尋找滿足下式中的i 的值(30+i)*6237=(10*i+3)*3564 2)FindRoot 求方程的根的程序 3)Detective 一輛汽車撞人后逃跑。4個目擊者提供如下線索: 甲:牌照三、四位相同; 乙:牌號為31xxxx; 丙:牌照五、六位相同; 丁:三到六位是一個整數(shù)的平方 4)Bear 本題是一個笑話,話說有一只狗熊到玉米地里掰玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個回去喂小狗熊。第二天又去吃了剩下的一半,走時仍然帶一個回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走
6、一個。到第十天時,地里只剩下一個玉米。求地里一共有多少玉米。 5)Diamond 本題要求編制打印以下圖案的程序,注意題目要求在左邊留出一定空格 * *** ***** ******* ***** *** * 6)GoodBye! 結(jié)束程序運行。 三 課程設(shè)計的要求與數(shù)據(jù) 1.用C語言實現(xiàn)系統(tǒng); 2.使用數(shù)字1—6來選擇菜單項,其他輸入則不起作用; 四 課程設(shè)計應(yīng)完成的工作 (1)編寫算法; (2)算
7、法測試,并有具體的測試結(jié)果和結(jié)果分析; (3)撰寫課程設(shè)計報告。內(nèi)容包括: 1) 封面扉頁 2) 設(shè)計任務(wù)書 3) 目錄 4) 總體設(shè)計方案(包括流程圖) 5) 使用說明及運行實例(包括界面) 6) 成員設(shè)計內(nèi)容簡介 7) 項目源程序代碼(注意注釋的使用) 8) 指導(dǎo)教師評語 五 總體設(shè)計(包含幾大功能模塊) 通過輸入1-6來進行菜單選擇,來選取自己需要的程序結(jié)果,從而得到想要的結(jié)果。 六 詳細設(shè)計(各功能模塊的具體實現(xiàn)算法——流程圖) 使用菜單選擇程序 ??? 菜單是應(yīng)用程序的界面,控制語句用來改變程序執(zhí)行的順序,是實現(xiàn)結(jié)構(gòu)化程序設(shè)計的基礎(chǔ)。設(shè)計一
8、個比較實用的菜單,通過菜單選擇不同的功能。 ?? 設(shè)計分為兩步:首先設(shè)計一個含有多個菜單項的菜單演示程序,然后再為這些菜單項配上相應(yīng)的功能。 一、設(shè)計一個菜單程序 (1)菜單內(nèi)客 程序運行后,給出6個菜單項的內(nèi)容和輸入提示。 ?? 1.FindNum ?? 2.FindRoot ?? 3.Detective ?? 4.Bear ?? 5.Diamond ?? 6.Goodbye! ?? Input 1-6: (2)設(shè)計要求 使用數(shù)字1-6來選擇菜單項,其他輸人則不起作用。 二、增加菜單項的處理功能 ???? 以設(shè)計的菜單為基礎(chǔ),增加菜單項的處理功能。 菜單項設(shè)計
9、要求 ???? 這其實是5道編程題,目的是鍛煉使用控制語句的能力。 ???? (1)FindNum ???????? 利用計算機的計算速度快的特點,把所有可能的數(shù)都試一下,從中找出符合條件的數(shù)。這就是所謂的窮舉法。 ???? 某位的數(shù)字只有0-9個數(shù)字,顯然已經(jīng)排除了為0的可能性,將1--9種可能性拿來試驗,即可找到合適的數(shù)字。由此可見,就是尋找滿足下式面的i值: ???? (30+i)×6237=(10×i+3)×3564 ?? (2)FindRoot ???? 這里要求編制一個求方程ax2+bx+c=0的根的程序。一般將系數(shù)設(shè)計成float型,可以把變量設(shè)為double型,使
10、用庫函數(shù)sqrt求平方根,sqrt在頭文件math.h中定義。假設(shè) ?????? disc=b×b-4×a×c 可以根據(jù)d大于、等于或小于零來決定求解方法。 ?????? if(disc>0) {//有兩個不相等的實數(shù)解} else if ( disc = = 0 ) {//有兩個相等的實數(shù)解} ??? else ???? {//有兩個不相等的虛數(shù)解} (3)Detective 這是一道偵探題。一輛汽車憧人后逃跑。4個目擊者提供如下線索: ?? 甲:牌照三、四位相同;??? 乙:牌號為31xxxx; ?? 丙:牌照五、六位相同;??? ?。喝涣皇且粋€整數(shù)的平方。
11、為了從這些線索中求出牌照號碼,只要求出后四位再加上310000即可。這四位又是前兩位相同,后兩位也相同,互相又不相同并且是某個整數(shù)的平方的數(shù)。可以仍然使用窮舉法,利用計算機的計算速度快的特點,把所有可能的數(shù)都試一下,從中找出符合條件的數(shù)。 因為后面4位數(shù),1000的平方根>31,所以窮舉實驗時不需從1開始,而是從31開始尋找一個整數(shù)的平方。下面直接使用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、設(shè)狗熊每次吃掉的為x2,則第10天時的x2=1,第9天地里剩下的玉米xl = (x2 + l) ×2,這也是狗熊在第8天時吃掉的玉米數(shù)量。因此可以使用如下算法描述: { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; /*第1天玉米數(shù)是第2天玉米數(shù)加1后的2倍*/ x2=x1; day--; } printf("total=%d\n",x1); return 0; } (5)Diamond 本題要求編制打印以下圖案的程序,注意題目還要求在左邊留出一定空格。 ????
14、? ?*
***
*****
*******
*****
***
*
??(6)Goodbye!
這里除了輸出一個簡單的信息之外,還必須結(jié)束程序運行。
七 調(diào)試分析(包含各模塊的測試用例,及測試結(jié)果)
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() /*主函數(shù)菜單*/ { 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() /*找數(shù)字*/ { 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是復(fù)根的實部*/ imagpart=sqrt(disc)/(2*a); /*realpart是復(fù)根的虛部*/ printf("has complax roots\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); /*輸出一個復(fù)數(shù)*/ printf("%8.4f+%8.4fi\n",realpart,imagpart);
22、/*輸出另一個復(fù)數(shù)*/ } } 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天玉米數(shù)是第2天玉米數(shù)加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)次數(shù),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主要程序運行結(jié)果 1)當(dāng)輸入的菜單項為1時,輸出結(jié)果如圖a所示 圖a 2)當(dāng)輸入的菜單項為2時有以下3種情況 (1)輸入a,b,c的值1,2,1,得到兩個相等的實根,輸出結(jié)果如圖b①所示 圖b① (2)輸入a,b,c的值1,2,2,得到兩個共軛的復(fù)根,輸出結(jié)果如圖b②所示 圖b② (3)輸入a,b,c的值2,6,1,得到兩個不等的實根,輸出結(jié)果如圖b③所示 圖b② 3)當(dāng)輸入的菜單項為3時,輸出結(jié)果如圖c所示 圖b③ 4)當(dāng)輸入的菜單項為4時,輸
28、出結(jié)果如圖d所示 圖d 5)當(dāng)輸入的菜單項為5時,輸出結(jié)果如圖e所示 圖e 6)當(dāng)輸入的菜單項為6時,輸出結(jié)果如圖f所示 圖f 八 總結(jié) 由于本課題中的許多知識點都沒有學(xué)過都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設(shè)計出來的菜單不是預(yù)想的那樣,而是總個窗中出現(xiàn)混亂。解決的這個問題的辦法是調(diào)整。一個系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設(shè)計的這個系統(tǒng)。在設(shè)計的
29、調(diào)試過程中也無法順利的完成調(diào)試工作。有了一個清晰簡單的菜單和一些提示信息這后,調(diào)試過程完成的非常順利。 回顧起此次課程設(shè)計,我感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整兩個禮拜的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題
30、,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識熟悉了,本次課程設(shè)計結(jié)束了,我們通過這次實踐學(xué)到了許多知識。學(xué)到了設(shè)計一個簡單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設(shè)計,更是鍛煉我們處理問題的能力,同時也使我了解編寫程序是件細心活,稍不留神就會出錯,這就必須要求我們對待事情要認(rèn)真!在編寫程序的過程中,錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗我們待事細心,耐心,能不能堅持到底,不能半途而廢。 但我們總結(jié)出了一點點的經(jīng)驗如下: 1、要對系統(tǒng)的功能和要求做出詳細的分析,并合理分解任務(wù)。 2、把分解出來的子任務(wù),做給一個相對獨立的模塊。 3、在設(shè)計一個模塊之前,要簡單構(gòu)想一下總界面的顯視情況。 4、針對構(gòu)想出來的界面進行程序的編寫。 九 參考資料 [1]譚浩強. C程序設(shè)計(第三版) . 北京:清華大學(xué)出版社, 2005 [2]譚浩強. C程序設(shè)計題解與上機指導(dǎo)(第三版) . 北京:清華大學(xué)出版社, 2005 [3]李春葆,張植民,肖忠付.C語言設(shè)計題典[M].北京:清華大學(xué)出版社,2002 [4]網(wǎng)上相關(guān)資料 15
- 溫馨提示:
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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《產(chǎn)品價值鏈與營銷戰(zhàn)略》
- lecture 9(精品)
- Where’s your pen pal from (2)
- (精品)實驗二血清γ球蛋白的分離純化與鑒定by陳蔚文
- 企業(yè)專利風(fēng)險管理
- 高中記敘文寫作指導(dǎo):寫人要凸顯個性ppt課件
- 新生兒溶血病的發(fā)病機理臨床癥狀課件
- 7、艱辛的求索 (2)
- 學(xué)校心理健康教育組織管理課件
- IE七大手法的發(fā)展歷程
- 頸托的正確使用課件
- (精品)電功與電功率復(fù)習(xí)1
- 李曉光-管理學(xué)原理第十三章領(lǐng)導(dǎo)工作概述
- 固體中的相結(jié)構(gòu)
- 智能化酒店系統(tǒng)PPT