版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 設(shè)計(jì)題目:猜數(shù)字游戲</p><p><b> 目 錄</b></p><p><b> 目錄</b></p><p><b> 目 錄- 2 -</b></p><p> 1 程序分析與設(shè)計(jì)- 2 -</p><p>
2、 1.1 功能分析與任務(wù)分配- 2 -</p><p> 功能分析- 2 -</p><p> 1.2流程圖- 3 -</p><p> 1.3 數(shù)據(jù)結(jié)構(gòu)- 4 -</p><p> 2 詳細(xì)設(shè)計(jì)- 4 -</p><p> 3 參考文獻(xiàn)- 5 -</p><p> 4
3、 附錄- 5 -</p><p><b> 5總結(jié)- 6 -</b></p><p><b> 1 程序分析與設(shè)計(jì)</b></p><p> 1.1 功能分析與任務(wù)分配</p><p><b> 功能分析</b></p><p> 此游戲程
4、序通過(guò)不斷輸入以及逐漸數(shù)位對(duì)應(yīng)的方法,一步步的縮小猜測(cè)范圍,最終猜出機(jī)內(nèi)已存儲(chǔ)數(shù)字,達(dá)到健腦益智的效果。</p><p> 此數(shù)字游戲沒(méi)有設(shè)置猜測(cè)次數(shù)的上限.</p><p><b> 簡(jiǎn)單策略</b></p><p> 這種策略非常直接——每次都猜可能答案中的第一個(gè)。例如,首先猜測(cè)1234,如果得到的反饋是 2A2B,那可能的答案包括1
5、256,1257,5236,等等。根據(jù)簡(jiǎn)單策略,下一次就猜1256,因?yàn)?256是所有可能答案中最小的數(shù)字。 </p><p> 簡(jiǎn)單策略的優(yōu)點(diǎn)是速度非???,缺點(diǎn)是所需猜測(cè)次數(shù)很多。</p><p><b> 啟發(fā)式策略 </b></p><p> 這類策略是猜數(shù)字游戲最常用的解法。其算法步驟如下: </p><p&g
6、t; a. 首先猜 1234,得到第一個(gè)反饋(xAyB)。 </p><p> b. 從所有數(shù)字中,篩選出滿足已知反饋的所有可能數(shù)字,稱之為“可能集”。 </p><p> c. 對(duì)于所有數(shù)字(而不僅限于篩選出來(lái)的可能集),逐一評(píng)估每個(gè)數(shù)字的“好壞”,并給其打分。選取得分最高的那個(gè)數(shù)字猜。如果有多個(gè)數(shù)字的評(píng)分一樣高,則優(yōu)先選取可能集中的數(shù)字。 </p><p>
7、; d. 重復(fù)步驟 b-c,直到猜出 4A4B為止。</p><p><b> ?。?)任務(wù)分配</b></p><p> 李曉飛和譚程方同學(xué):實(shí)現(xiàn)猜測(cè)數(shù)據(jù)后的*A*B編寫(xiě)功能,即規(guī)則c.</p><p> 王璐和王爽同學(xué) :實(shí)現(xiàn)統(tǒng)計(jì)每次猜對(duì)數(shù)字個(gè)數(shù)的功能,即規(guī)則d.</p><p> 王鵬宇同學(xué)
8、 :實(shí)現(xiàn)統(tǒng)計(jì)每次猜對(duì)的數(shù)字并且位置也對(duì)的數(shù)字個(gè)數(shù),即規(guī)則e.</p><p> ?。▊渥ⅲ涸趯?shí)際操作中由于每位同學(xué)所用變量習(xí)慣以及掌握程度不同,所以此程序任務(wù)分配可能會(huì)部分的與上不符,最后還要對(duì)任課老師魏玉芬以及指導(dǎo)老師丁艷清表示衷心的感謝,感謝兩位老師給予我們的幫助?。?lt;/p><p><b> 1.2流程圖</b></p><p>&
9、lt;b> Y</b></p><p><b> N</b></p><p><b> N</b></p><p><b> NY</b></p><p><b> Y</b></p><p><
10、;b> NY</b></p><p><b> 1.3 數(shù)據(jù)結(jié)構(gòu)</b></p><p><b> k 猜測(cè)的次數(shù)</b></p><p> b 一次猜測(cè)后用來(lái)判斷是否繼續(xù)進(jìn)行新的猜測(cè)</p><p><b> n1 猜對(duì)的數(shù)字?jǐn)?shù)</b></
11、p><p> n2 猜對(duì)并且位置也對(duì)的數(shù)字?jǐn)?shù)</p><p> i、j 用來(lái)表示兩個(gè)數(shù)組的對(duì)應(yīng)數(shù)位數(shù)</p><p> x[4]={2,5,6,9} 定義將要被猜測(cè)的數(shù)字為2569</p><p> y[4] 從鍵盤輸入的四位數(shù)</p><p><b> 2 詳細(xì)設(shè)計(jì)</b></p&g
12、t;<p> 通過(guò)逐步減少范圍來(lái)猜測(cè)正確結(jié)果</p><p><b> 3 參考文獻(xiàn)</b></p><p> [1]譚浩強(qiáng)著《C語(yǔ)言程序設(shè)計(jì)》北京:清華大學(xué)出版社 2005</p><p><b> [2]百度知道</b></p><p><b> 4 附錄<
13、;/b></p><p> #include <stdio.h></p><p> void main()</p><p><b> {</b></p><p> int k,n1,n2,b,x[4]={2,5,6,9},y[4]; //定義將要被猜測(cè)的數(shù)字為2569//</p>
14、<p> int i=0,j=0;</p><p> for(k=1;;k++) //只要不放棄,就可以使猜測(cè)無(wú)數(shù)次的進(jìn)行下去//</p><p><b> {</b></p><p> n1=0;n2=0; //n1用來(lái)統(tǒng)計(jì)猜對(duì)的數(shù)字?jǐn)?shù),n2用來(lái)統(tǒng)計(jì)猜對(duì)并且位置也對(duì)的數(shù)字?jǐn)?shù)//</p><p>
15、printf("請(qǐng)輸入四個(gè)不同的數(shù)字:");</p><p> for(j=0;j<4;j++)</p><p> scanf("%d",&y[j]);//用來(lái)輸入四個(gè)不同的數(shù)字//</p><p> for(i=0;i<4;i++)</p><p><b> {&
16、lt;/b></p><p> for(j=0;j<4;j++)</p><p> if(x[i]==y[j]) n1++; //統(tǒng)計(jì)n1//</p><p><b> }</b></p><p> for(i=0;i<4;i++)</p><p> if(y[i]==
17、x[i]) n2++; //統(tǒng)計(jì)n2//</p><p> printf("%dA%dB\n",n1,n2);</p><p> printf("n1=%d,n2=%d\n",n1,n2); //給出本輪猜測(cè)的結(jié)果//</p><p> if(n2==4) break;</p><p> pr
18、intf("如果想放棄,請(qǐng)輸入0;如果不想放棄,請(qǐng)輸入任意非零數(shù)字\n");</p><p> scanf("%d",&b);</p><p><b> if(b==0)</b></p><p> printf("正確答案是:2569");</p><
19、p> else printf("請(qǐng)繼續(xù)猜測(cè)\n");</p><p><b> }</b></p><p><b> if(n2==4)</b></p><p> printf("恭喜你答對(duì)了!");</p><p><b> }&l
20、t;/b></p><p><b> 5總結(jié)</b></p><p> C語(yǔ)言是我們?cè)诖髮W(xué)學(xué)習(xí)中接觸的第一種計(jì)算機(jī)語(yǔ)言,將其作為我們學(xué)生學(xué)習(xí)程序設(shè)計(jì)技術(shù)的入門課程,我想這與C語(yǔ)言的特點(diǎn)是分不開(kāi)的。C語(yǔ)言不但可以編寫(xiě)系統(tǒng)軟件,而且可以根據(jù)用戶的需要編寫(xiě)出滿足用戶要求的應(yīng)用軟件,尤其是C語(yǔ)言具有很好的對(duì)計(jì)算機(jī)的硬件編程能力。同時(shí),C語(yǔ)言具有邏輯性強(qiáng)、處理問(wèn)題周密
21、、嚴(yán)謹(jǐn)?shù)奶攸c(diǎn),是集知識(shí)和技能于一體,實(shí)踐性很強(qiáng)的課程。我們通過(guò)學(xué)習(xí)C語(yǔ)言可掌握程序設(shè)計(jì)的一些基本方法和技巧。然而C語(yǔ)言的數(shù)據(jù)類型較多、表達(dá)式豐富、語(yǔ)法結(jié)構(gòu)較復(fù)雜,使它成為一門教師難教、學(xué)生難學(xué)的課程。就拿這次來(lái)說(shuō)吧,程序是很簡(jiǎn)單的,但是遇到的困難也不少。下面我見(jiàn)對(duì)我們組編的這套程序做一下概述:</p><p> 我們選的是編寫(xiě)一個(gè)猜字游戲,要求才一個(gè)四位數(shù)字,每次猜完,要有一個(gè)提示“*A*B”其中A前的*代表本
22、次猜對(duì)了的數(shù)字,B前的*代表本次猜對(duì)了的數(shù)字并且位置正確的個(gè)數(shù)。</p><p> 由于程序較小,沒(méi)有太過(guò)困難的地方,所以我們最主要用到的是for循環(huán)語(yǔ)句,首先,假設(shè)這四位數(shù)是2569,我們定義n1,n2,讓n1代表猜對(duì)的數(shù)字個(gè)數(shù),讓n2代表猜對(duì)的數(shù)字并且位置準(zhǔn)確的個(gè)數(shù),然后再定義一個(gè)k是猜測(cè)的次數(shù)(這里為了很好的顯示猜測(cè)的過(guò)程),接下來(lái)開(kāi)始執(zhí)行這個(gè)語(yǔ)句,也就是我們利用的for循環(huán)語(yǔ)句,for(j=0;j<
23、;4;j++)我們先把猜的數(shù)用這個(gè)循環(huán)體執(zhí)行,進(jìn)而輸入四個(gè)不同的數(shù),for(j=0;j<4;j++) if(x[i]==y[j]) n1++;再用一次循環(huán)體統(tǒng)計(jì)出n1,這樣循環(huán)下去直至正確數(shù)字被猜出。同樣n2也是如此。在編譯過(guò)程中發(fā)現(xiàn)利用for循環(huán)語(yǔ)句只用一條語(yǔ)句可以了,相對(duì)于do…while更簡(jiǎn)單一些。</p><p> 程序大體編完了,但是分配是因?yàn)榇蠹宜枷氩煌?,?duì)于不同的地方用的語(yǔ)句不一致,所以在
24、把所有程序整合到一起時(shí),不能正常的運(yùn)行,做了多處修改,最后才能運(yùn)行的,其次再將語(yǔ)句轉(zhuǎn)為流程圖時(shí)遇到了不小的麻煩,對(duì)一些較為復(fù)雜的程序,轉(zhuǎn)為ns圖比較麻煩,有次看到我們的弊端,對(duì)于這種轉(zhuǎn)化邏輯能力太差,經(jīng)過(guò)反反復(fù)復(fù)的修改總算完成。</p><p> 在這次實(shí)習(xí)中我們的程序還有一個(gè)遺憾,算是缺陷吧!就是猜數(shù)字的數(shù)字是事先用int定義好的,我們本意是在每次程序運(yùn)行開(kāi)始時(shí),產(chǎn)生一個(gè)隨機(jī)四位數(shù),這樣需引用#include
25、 <time.h>#include <stdlib.h>可惜不大會(huì)用,最后只能放棄。這看出我們才學(xué)了些皮毛,對(duì)于一些高等的函數(shù)體不會(huì)引用,</p><p> 我覺(jué)得還是多看些書(shū),多實(shí)踐,養(yǎng)成良好的編程習(xí)慣,在實(shí)踐的同時(shí)多思考問(wèn)題,多看別人優(yōu)秀的解題思路與方法,多看別人優(yōu)秀的代碼,嘗試自己去實(shí)現(xiàn)或者說(shuō)模仿著去實(shí)現(xiàn),讓別人對(duì)你的代碼多提意見(jiàn),探究別人的思維過(guò)程,增強(qiáng)自己的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言程序課程設(shè)計(jì)-猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)---猜數(shù)字游戲報(bào)告
- c語(yǔ)言課程設(shè)計(jì)---猜數(shù)字游戲姚成
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)游戲
- c語(yǔ)言課程設(shè)計(jì)----猜字游戲
- c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)
- c課程設(shè)計(jì)報(bào)告-- c語(yǔ)言程序設(shè)計(jì)
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 猜數(shù)字游戲課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--猜數(shù)字游戲
- java課程設(shè)計(jì)——猜數(shù)字游戲
- 設(shè)計(jì)一個(gè)gui猜數(shù)字游戲程序課程設(shè)計(jì)
- 《c++語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)推箱子
- 《程序設(shè)計(jì)語(yǔ)言(c++)》課程設(shè)計(jì)
- c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)(論文)-迷宮
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)指導(dǎo)手冊(cè)()
評(píng)論
0/150
提交評(píng)論