c語(yǔ)言課程設(shè)計(jì)報(bào)告--使用菜單選擇趣味程序
《c語(yǔ)言課程設(shè)計(jì)報(bào)告--使用菜單選擇趣味程序》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《c語(yǔ)言課程設(shè)計(jì)報(bào)告--使用菜單選擇趣味程序(16頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 青島農(nóng)業(yè)大學(xué) 課程設(shè)計(jì)報(bào)告 題 目: 使用菜單選擇趣味程序 姓 名: 楊麗娜 學(xué) 院: 理學(xué)與信息科學(xué)學(xué)院 專(zhuān) 業(yè): 通信工程 班 級(jí): 2班 學(xué) 號(hào): 20123239
2、 指導(dǎo)教師: 年月日 目 錄 一 設(shè)計(jì)目的…………………………………………………………….1 二 課程設(shè)計(jì)的內(nèi)容........................................2 三 課程設(shè)計(jì)的要求與數(shù)據(jù)..................................3 四 課程設(shè)計(jì)應(yīng)完成的工作..................................4 五 總體設(shè)
3、計(jì)(包含幾大功能模塊)...........................5 六 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法——流程圖)………….6 七 調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(jié)果)…………….7 八 總結(jié)………………………………………………………………...8 十 參考資料…………………………………………………………….9 一 設(shè)計(jì)目的 進(jìn)一步加深、鞏固所學(xué)專(zhuān)業(yè)課程(《C語(yǔ)言程序設(shè)計(jì)》)的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問(wèn)題和解決問(wèn)題的能力。掌握運(yùn)用C語(yǔ)言獨(dú)立地編寫(xiě)、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技能。 結(jié)合實(shí)
4、際深入理解高級(jí)語(yǔ)言程序設(shè)計(jì)的基本概念、原理及方法。運(yùn)用所學(xué)的基礎(chǔ)知識(shí)開(kāi)發(fā)一個(gè)小型的程序,能根據(jù)問(wèn)題的需要構(gòu)造所需的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)適合的算法,解決問(wèn)題。掌握設(shè)計(jì)任務(wù)的具體要求,進(jìn)行設(shè)計(jì)、調(diào)試軟件的具體方法、步驟和技巧。對(duì)一個(gè)實(shí)際課題的軟件設(shè)計(jì)有基本了解,拓展知識(shí)面,激發(fā)在此領(lǐng)域中繼續(xù)學(xué)習(xí)和研究的興趣,為學(xué)習(xí)后續(xù)課程做準(zhǔn)備。 二 課程設(shè)計(jì)的內(nèi)容 使用菜單選擇趣味程序 設(shè)計(jì)目的:本程序旨在訓(xùn)練學(xué)生的編程能力,使用C語(yǔ)言最基本的知識(shí),訓(xùn)練結(jié)構(gòu)化程序設(shè)計(jì)的基本技術(shù)。 功能:設(shè)計(jì)分兩步,首先設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的菜單演示程序,然后再為這些菜單項(xiàng)配上相應(yīng)的功能。 要求:使用數(shù)字1—6來(lái)選擇菜單
5、項(xiàng),其他輸入則不起作用。其實(shí)是5道編程題: 1)FindNum 使用窮舉法尋找滿(mǎn)足下式中的i 的值(30+i)*6237=(10*i+3)*3564 2)FindRoot 求方程的根的程序 3)Detective 一輛汽車(chē)撞人后逃跑。4個(gè)目擊者提供如下線(xiàn)索: 甲:牌照三、四位相同; 乙:牌號(hào)為31xxxx; 丙:牌照五、六位相同; ?。喝搅皇且粋€(gè)整數(shù)的平方 4)Bear 本題是一個(gè)笑話(huà),話(huà)說(shuō)有一只狗熊到玉米地里掰玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個(gè)回去喂小狗熊。第二天又去吃了剩下的一半,走時(shí)仍然帶一個(gè)回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走
6、一個(gè)。到第十天時(shí),地里只剩下一個(gè)玉米。求地里一共有多少玉米。 5)Diamond 本題要求編制打印以下圖案的程序,注意題目要求在左邊留出一定空格 * *** ***** ******* ***** *** * 6)GoodBye! 結(jié)束程序運(yùn)行。 三 課程設(shè)計(jì)的要求與數(shù)據(jù) 1.用C語(yǔ)言實(shí)現(xiàn)系統(tǒng); 2.使用數(shù)字1—6來(lái)選擇菜單項(xiàng),其他輸入則不起作用; 四 課程設(shè)計(jì)應(yīng)完成的工作 (1)編寫(xiě)算法; (2)算
7、法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分析; (3)撰寫(xiě)課程設(shè)計(jì)報(bào)告。內(nèi)容包括: 1) 封面扉頁(yè) 2) 設(shè)計(jì)任務(wù)書(shū) 3) 目錄 4) 總體設(shè)計(jì)方案(包括流程圖) 5) 使用說(shuō)明及運(yùn)行實(shí)例(包括界面) 6) 成員設(shè)計(jì)內(nèi)容簡(jiǎn)介 7) 項(xiàng)目源程序代碼(注意注釋的使用) 8) 指導(dǎo)教師評(píng)語(yǔ) 五 總體設(shè)計(jì)(包含幾大功能模塊) 通過(guò)輸入1-6來(lái)進(jìn)行菜單選擇,來(lái)選取自己需要的程序結(jié)果,從而得到想要的結(jié)果。 六 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法——流程圖) 使用菜單選擇程序 ??? 菜單是應(yīng)用程序的界面,控制語(yǔ)句用來(lái)改變程序執(zhí)行的順序,是實(shí)現(xiàn)結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)。設(shè)計(jì)一
8、個(gè)比較實(shí)用的菜單,通過(guò)菜單選擇不同的功能。 ?? 設(shè)計(jì)分為兩步:首先設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的菜單演示程序,然后再為這些菜單項(xiàng)配上相應(yīng)的功能。 一、設(shè)計(jì)一個(gè)菜單程序 (1)菜單內(nèi)客 程序運(yùn)行后,給出6個(gè)菜單項(xiàng)的內(nèi)容和輸入提示。 ?? 1.FindNum ?? 2.FindRoot ?? 3.Detective ?? 4.Bear ?? 5.Diamond ?? 6.Goodbye! ?? Input 1-6: (2)設(shè)計(jì)要求 使用數(shù)字1-6來(lái)選擇菜單項(xiàng),其他輸人則不起作用。 二、增加菜單項(xiàng)的處理功能 ???? 以設(shè)計(jì)的菜單為基礎(chǔ),增加菜單項(xiàng)的處理功能。 菜單項(xiàng)設(shè)計(jì)
9、要求 ???? 這其實(shí)是5道編程題,目的是鍛煉使用控制語(yǔ)句的能力。 ???? (1)FindNum ???????? 利用計(jì)算機(jī)的計(jì)算速度快的特點(diǎn),把所有可能的數(shù)都試一下,從中找出符合條件的數(shù)。這就是所謂的窮舉法。 ???? 某位的數(shù)字只有0-9個(gè)數(shù)字,顯然已經(jīng)排除了為0的可能性,將1--9種可能性拿來(lái)試驗(yàn),即可找到合適的數(shù)字。由此可見(jiàn),就是尋找滿(mǎn)足下式面的i值: ???? (30+i)×6237=(10×i+3)×3564 ?? (2)FindRoot ???? 這里要求編制一個(gè)求方程ax2+bx+c=0的根的程序。一般將系數(shù)設(shè)計(jì)成float型,可以把變量設(shè)為double型,使
10、用庫(kù)函數(shù)sqrt求平方根,sqrt在頭文件math.h中定義。假設(shè) ?????? disc=b×b-4×a×c 可以根據(jù)d大于、等于或小于零來(lái)決定求解方法。 ?????? if(disc>0) {//有兩個(gè)不相等的實(shí)數(shù)解} else if ( disc = = 0 ) {//有兩個(gè)相等的實(shí)數(shù)解} ??? else ???? {//有兩個(gè)不相等的虛數(shù)解} (3)Detective 這是一道偵探題。一輛汽車(chē)憧人后逃跑。4個(gè)目擊者提供如下線(xiàn)索: ?? 甲:牌照三、四位相同;??? 乙:牌號(hào)為31xxxx; ?? 丙:牌照五、六位相同;??? ?。喝涣皇且粋€(gè)整數(shù)的平方。
11、為了從這些線(xiàn)索中求出牌照號(hào)碼,只要求出后四位再加上310000即可。這四位又是前兩位相同,后兩位也相同,互相又不相同并且是某個(gè)整數(shù)的平方的數(shù)??梢匀匀皇褂酶F舉法,利用計(jì)算機(jī)的計(jì)算速度快的特點(diǎn),把所有可能的數(shù)都試一下,從中找出符合條件的數(shù)。 因?yàn)楹竺?位數(shù),1000的平方根>31,所以窮舉實(shí)驗(yàn)時(shí)不需從1開(kāi)始,而是從31開(kāi)始尋找一個(gè)整數(shù)的平方。下面直接使用for語(yǔ)句格式,給出算法思想。{ int i,a,b,c,d;long m; for(i=32;i<=99;i++) /*窮舉找出后四位號(hào)碼*/ { 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 本題是一個(gè)笑話(huà),話(huà)說(shuō)有一只狗熊到玉米地里掰玉米,一邊掰一邊吃。第一天吃了一半,又拿走一個(gè)回去喂小狗熊。第二天又去吃了剩下的一半,走時(shí)仍然帶一個(gè)回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走一個(gè)。到第十天時(shí),地里只剩下一個(gè)玉米。求地里一共有多少玉米。 這里可以使用回溯算法。假
13、設(shè)狗熊每次吃掉的為x2,則第10天時(shí)的x2=1,第9天地里剩下的玉米xl = (x2 + l) ×2,這也是狗熊在第8天時(shí)吃掉的玉米數(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!
這里除了輸出一個(gè)簡(jiǎn)單的信息之外,還必須結(jié)束程序運(yùn)行。
七 調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(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ù)根的實(shí)部*/ imagpart=sqrt(disc)/(2*a); /*realpart是復(fù)根的虛部*/ printf("has complax roots\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); /*輸出一個(gè)復(fù)數(shù)*/ printf("%8.4f+%8.4fi\n",realpart,imagpart);
22、/*輸出另一個(gè)復(fù)數(shù)*/ } } return 0; } int Detective() /*找牌照*/ { int i,a,b,c,d;long m; for(i=32;i<=99;i++) /*窮舉找出后四位號(hào)碼*/ { 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() /*熊吃玉米的問(wèn)題*/ { 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() /*再見(jiàn)*/ { char a='G',b='o',c='o',d='d',e='B',f='y',g='e’,h=’!’; /*定義8個(gè)字符變量并初始化*/ putchar(a); /*向顯示器輸出字母G*/ putchar(b); /*向顯示器輸出字母o*/ putchar(c); /*向顯示器輸出字母o*/ putchar(d);
26、 /*向顯示器輸出字母d*/ putchar(e); /*向顯示器輸出字母B*/ putchar(f); /*向顯示器輸出字母y*/ putchar(g); /*向顯示器輸出字母e*/ putchar(h); /*向顯示器輸出符號(hào)!*/ putchar('\n'); /*向顯示器輸出一個(gè)換行值*/ retur
27、n 0; } 7.2主要程序運(yùn)行結(jié)果 1)當(dāng)輸入的菜單項(xiàng)為1時(shí),輸出結(jié)果如圖a所示 圖a 2)當(dāng)輸入的菜單項(xiàng)為2時(shí)有以下3種情況 (1)輸入a,b,c的值1,2,1,得到兩個(gè)相等的實(shí)根,輸出結(jié)果如圖b①所示 圖b① (2)輸入a,b,c的值1,2,2,得到兩個(gè)共軛的復(fù)根,輸出結(jié)果如圖b②所示 圖b② (3)輸入a,b,c的值2,6,1,得到兩個(gè)不等的實(shí)根,輸出結(jié)果如圖b③所示 圖b② 3)當(dāng)輸入的菜單項(xiàng)為3時(shí),輸出結(jié)果如圖c所示 圖b③ 4)當(dāng)輸入的菜單項(xiàng)為4時(shí),輸
28、出結(jié)果如圖d所示 圖d 5)當(dāng)輸入的菜單項(xiàng)為5時(shí),輸出結(jié)果如圖e所示 圖e 6)當(dāng)輸入的菜單項(xiàng)為6時(shí),輸出結(jié)果如圖f所示 圖f 八 總結(jié) 由于本課題中的許多知識(shí)點(diǎn)都沒(méi)有學(xué)過(guò)都要靠自己到課外的資料中去查找。在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。如開(kāi)始設(shè)計(jì)出來(lái)的菜單不是預(yù)想的那樣,而是總個(gè)窗中出現(xiàn)混亂。解決的這個(gè)問(wèn)題的辦法是調(diào)整。一個(gè)系統(tǒng)的菜單和提示信息非常重要。如果沒(méi)有這些用戶(hù)根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng)。在設(shè)計(jì)的
29、調(diào)試過(guò)程中也無(wú)法順利的完成調(diào)試工作。有了一個(gè)清晰簡(jiǎn)單的菜單和一些提示信息這后,調(diào)試過(guò)程完成的非常順利。 回顧起此次課程設(shè)計(jì),我感慨頗多,的確,從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整兩個(gè)禮拜的日子里,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題
30、,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說(shuō)結(jié)構(gòu)體……通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)熟悉了,本次課程設(shè)計(jì)結(jié)束了,我們通過(guò)這次實(shí)踐學(xué)到了許多知識(shí)。學(xué)到了設(shè)計(jì)一個(gè)簡(jiǎn)單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設(shè)計(jì),更是鍛煉我們處理問(wèn)題的能力,同時(shí)也使我了解編寫(xiě)程序是件細(xì)心活,稍不留神就會(huì)出錯(cuò),這就必須要求我們對(duì)待事情要認(rèn)真!在編寫(xiě)程序的過(guò)程中,錯(cuò)誤不斷出現(xiàn),不同的類(lèi)型(如少寫(xiě)了一個(gè)符號(hào),寫(xiě)錯(cuò)了字母,用錯(cuò)了函數(shù)等等)層出不窮,這考驗(yàn)我們待事細(xì)心,耐心,能不能堅(jiān)持到底,不能半途而廢。 但我們總結(jié)出了一點(diǎn)點(diǎn)的經(jīng)驗(yàn)如下: 1、要對(duì)系統(tǒng)的功能和要求做出詳細(xì)的分析,并合理分解任務(wù)。 2、把分解出來(lái)的子任務(wù),做給一個(gè)相對(duì)獨(dú)立的模塊。 3、在設(shè)計(jì)一個(gè)模塊之前,要簡(jiǎn)單構(gòu)想一下總界面的顯視情況。 4、針對(duì)構(gòu)想出來(lái)的界面進(jìn)行程序的編寫(xiě)。 九 參考資料 [1]譚浩強(qiáng). C程序設(shè)計(jì)(第三版) . 北京:清華大學(xué)出版社, 2005 [2]譚浩強(qiáng). C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版) . 北京:清華大學(xué)出版社, 2005 [3]李春葆,張植民,肖忠付.C語(yǔ)言設(shè)計(jì)題典[M].北京:清華大學(xué)出版社,2002 [4]網(wǎng)上相關(guān)資料 15
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 空前嚴(yán)重的資本主義世界經(jīng)濟(jì)危機(jī)講義
- 丹田降脂丸推廣策劃OTC0427教學(xué)課件
- 專(zhuān)業(yè)代理公司組織架構(gòu)及崗位職責(zé)
- 宮頸癌術(shù)后輔助放射治療通用PPT課件
- 家庭常用醫(yī)療器械的使用課件
- 給圖形做標(biāo)記
- 高三政治人教版一輪復(fù)習(xí)課件:課時(shí)11經(jīng)濟(jì)全球化與對(duì)外開(kāi)放共44張
- 五年級(jí)下冊(cè)英語(yǔ)Recycle1人教版課件
- 五年級(jí)上冊(cè)科學(xué)《母雞生蛋了》粵教版課件
- 二年級(jí)上冊(cè)道德與法治大家排好隊(duì)課件
- 復(fù)習(xí)課件工業(yè)革命
- 第六章組織文化
- 勤助上崗培訓(xùn)課件
- 南川中學(xué) 剪紙課件 第2課
- 華師大版九年級(jí)上冊(cè)課件:2312平行線(xiàn)分線(xiàn)段成比例