版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 編號(hào): </p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告</p><p> 班 級(jí): 網(wǎng)路102班 </p><p> 學(xué) 號(hào): 18號(hào) </p><p> 姓 名: </p><p>
2、; 時(shí) 間: 2011年12月25日</p><p> ~2012年1月6日 </p><p> 指導(dǎo)教師: </p><p><b> 2012年01月</b></p><p><b> 課題一 紙牌游戲</b></p><p
3、><b> 1.需求分析</b></p><p> 任務(wù):編號(hào)為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;...再依次5的倍數(shù)的牌翻一次,6的,7的,直到以52為基數(shù)的牌翻過,輸出:這時(shí)正面向上的
4、牌有哪些? </p><p> 可以定義一個(gè)宏,如果第k張牌除以基數(shù)j后的余數(shù)是否為0,如為0就是能整除,然后就利用定義的宏進(jìn)行翻牌操作。設(shè)一個(gè)一維數(shù)組card[52],并將所有變量賦初值為0,表示牌正面朝上。首先將52張牌初始化成正面朝上,然后用一個(gè)for循環(huán)來控制基數(shù),用另一個(gè)for循環(huán)來控制從第幾張牌開始。最后打印判斷出來的正面朝上的牌。</p><p><b> 2.
5、概要設(shè)計(jì)</b></p><p> ?。?)當(dāng)每個(gè)號(hào)碼每次遇到是某個(gè)數(shù)的倍數(shù)時(shí),都會(huì)相應(yīng)的翻一次,這樣,每張牌會(huì)翻的次數(shù)就各不一樣,可能很多次,也可能只有一兩次,結(jié)果就只是要輸出在經(jīng)過各個(gè)不同次數(shù)的翻牌后,正面向上的牌都有哪幾個(gè)。舉例說明一下,比如24,第一次它是2的倍數(shù)時(shí)要從正面翻到背面,當(dāng)進(jìn)行到3時(shí),就又要從背面翻回來,而到4時(shí)還要在翻,同理呢,到6.8.12…它都要來回的翻。如果它在多次的翻牌后
6、,正面還向上了,那么它就是要輸出的結(jié)果之一。</p><p> ?。?)用#define OPPOSITE(i) i = i?0:1這個(gè)宏將牌的狀態(tài)標(biāo)志求反,也即為翻牌操作。將所有的牌建立一個(gè)數(shù)組,運(yùn)用for的循環(huán)嵌套執(zhí)行以下操作:把52張牌初始化成正面朝上、控制基數(shù)和翻牌次數(shù),判斷最終的紙牌朝向并打印出結(jié)果,具體實(shí)現(xiàn)算法參看詳細(xì)設(shè)計(jì)。</p><p><b> 3.詳細(xì)設(shè)計(jì):
7、</b></p><p> N </p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b&
8、gt;</p><p><b> Y</b></p><p><b> 4.調(diào)試分析:</b></p><p> (1)這題的時(shí)間復(fù)雜度是O(52)。</p><p> (2)語法錯(cuò)誤相對(duì)來說要好調(diào)試一些的,但有兩點(diǎn)需要特別指出:一是應(yīng)該用規(guī)范化的格式輸入源程序,推薦的格式是:函數(shù)體內(nèi)、循環(huán)
9、體內(nèi)等都應(yīng)該縮進(jìn)一個(gè)TAB位,相應(yīng)的塊語句的兩個(gè)大括號(hào)都應(yīng)保持在同一列上,函數(shù)體之間、模塊之間都應(yīng)用空行隔開,這就解決了各種匹配的問題,更重要的是它極大的增強(qiáng)的程序的可讀性。二是應(yīng)該注意函數(shù)的實(shí)參與形參的傳遞問題,要盡量保持兩者類型的匹配,(當(dāng)不匹配又可通過編譯時(shí)會(huì)發(fā)生數(shù)據(jù)類型的隱式轉(zhuǎn)換,這樣會(huì)產(chǎn)生很多不安全且又很難找到的錯(cuò)誤)當(dāng)不需要改變形參時(shí),只需傳入變量,如果你想在函數(shù)體內(nèi)改變函數(shù)的外部變量,則傳入指針。</p>&
10、lt;p> (3)雖然本次程序的題目難度與其他問題相比不是很高,但仍有很多問題我們是很容易忽視的,其一:在理解題目的要求時(shí),注意翻牌的次數(shù)可能有多次;其二:for循環(huán)的嵌套使用在書寫時(shí)很容易漏掉大括弧。</p><p><b> 5.測試結(jié)果:</b></p><p><b> 6.用戶使用說明</b></p><
11、p><b> 7.附錄</b></p><p><b> 源程序:</b></p><p> #include <stdio.h> </p><p> #define OPPOSITE(i) i = i?0:1</p><p> int main() </p>
12、<p> { int card[52],i;</p><p><b> for(;;){</b></p><p> printf("\n*********************紙牌游戲功能菜單表***********************\n");</p><p> printf("*
13、 1:按照游戲規(guī)則翻牌,并輸出翻牌結(jié)果 *\n");</p><p> printf("* 2:退出 *\n");</p><p> printf("*********************紙牌游戲功能菜單表*****
14、******************\n");</p><p> printf("\n請(qǐng)按1,2完成操作:");</p><p> scanf("%d",&i);</p><p> switch(i){</p><p><b> case 1:</b>&l
15、t;/p><p> for (int i = 0; i < 52; i++) </p><p><b> { </b></p><p> card[i] = 0; //將52張牌初始化成正面朝上 </p><p><b> } </b></p><p> for
16、(int j=2; j<=52; j++) //此層循環(huán)是控制基數(shù)的 </p><p><b> { </b></p><p> for (int k = j; k <= 52 ; k++)//此層循環(huán)是控制從第幾張牌開始 </p><p><b> { </b></p><p>
17、 if (k%j == 0)//判斷第k張牌除以基數(shù)j后的余數(shù)是否為0,如為0就是能整除 </p><p><b> { </b></p><p> OPPOSITE(card[k-1]);</p><p><b> } </b></p><p><b> } </b>
18、;</p><p><b> } </b></p><p> printf("**********************************\n");</p><p> printf("正面朝上的牌有:");</p><p> for (int h = 0; h &l
19、t; 52; h++)//開始打印 </p><p><b> { </b></p><p> if (card[h] == 0)//判斷牌的狀態(tài)是否為正面朝上 </p><p><b> { </b></p><p> printf(" %d", h+1); </
20、p><p><b> } </b></p><p><b> }</b></p><p> printf("\n**********************************\n");break;</p><p> case 2: printf("已退出!\n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)“紙牌游戲”
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 猴子選大王+ joseph環(huán)+紙牌游戲
- 紙牌游戲-課程設(shè)計(jì)報(bào)告
- 迷宮游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 紙牌游戲課程設(shè)計(jì)
- 紙牌游戲課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論