版權(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ù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告</p><p><b> 題目:紙牌游戲</b></p><p> 采用的方法: 在程序中定義一個(gè)宏,用宏來(lái)表示翻牌操作。用一個(gè)for循環(huán)來(lái)控制基數(shù),用另一個(gè)for循環(huán)來(lái)控制從第幾張牌開始,然后判斷第K張牌除以基數(shù)j后的余數(shù)是否為0,如為0就是能整除,最后翻牌。</p><p><b>
2、 題目(摘要)</b></p><p> 問題描述:編號(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í)正面向上的牌有哪些?</p
3、><p><b> 目錄</b></p><p> 1.引言:- 4 -</p><p> 2.需求分析:- 4 -</p><p> 3.概要設(shè)計(jì):- 5 -</p><p> 4.詳細(xì)設(shè)計(jì):- 6 -</p><p> 5.測(cè)試結(jié)果:- 7 -<
4、/p><p> 6.調(diào)試分析:- 7 -</p><p> 7.設(shè)計(jì)體會(huì):- 8 -</p><p> 8.結(jié)束語(yǔ):- 8 -</p><p> 參考文獻(xiàn):- 9 -</p><p><b> 附錄:- 9 -</b></p><p><b>
5、1.引言: </b></p><p> 通過本門課程的學(xué)習(xí),我們應(yīng)該能透徹地理解各種數(shù)據(jù)對(duì)象的特點(diǎn),學(xué)會(huì)數(shù)據(jù)的組織方法和實(shí)現(xiàn)方法,并進(jìn)一步培養(yǎng)良好的程序設(shè)計(jì)能力和解決實(shí)際問題的能力,而且該課程的研究方法對(duì)我們學(xué)生在學(xué)校和離校后的工作和學(xué)習(xí),也有重要意義。數(shù)據(jù)結(jié)構(gòu)是電子信息科學(xué)與技術(shù)專業(yè)的一門核心專業(yè)基礎(chǔ)課程,在該專業(yè)的課程體系中起著承上啟下的作用,學(xué)好了數(shù)據(jù)結(jié)構(gòu)對(duì)于提高理論認(rèn)知水平和實(shí)踐能力有著極為
6、重要的作用。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是為了獲得求解問題問能力。對(duì)于現(xiàn)實(shí)世界中的問題,應(yīng)該能從中抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,該數(shù)學(xué)模型在計(jì)算機(jī)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)來(lái)表示,然后設(shè)計(jì)一個(gè)解此數(shù)學(xué)模型的算法,在進(jìn)行編程調(diào)試,最后活的問題的解答?;诖嗽颍F(xiàn)在我們開設(shè)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)。針對(duì)數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn),著眼于培養(yǎng)我們的實(shí)踐能力。</p><p><b> 2.需求分析: </b></p>
7、<p> 可以定義一個(gè)宏,如果第k張牌除以基數(shù)j后的余數(shù)是否為0,如為0就是能整除,然后就利用定義的宏進(jìn)行翻牌操作。設(shè)一個(gè)一維數(shù)組card[52],并將所有變量賦初值為0,表示牌正面朝上。首先將52張牌初始化成正面朝上,然后用一個(gè)for循環(huán)來(lái)控制基數(shù),用另一個(gè)for循環(huán)來(lái)控制從第幾張牌開始。最后打印判斷出來(lái)的正面朝上的牌。</p><p><b> 3.概要設(shè)計(jì):</b>&l
8、t;/p><p> 1.當(dāng)每個(gè)號(hào)碼每次遇到是某個(gè)數(shù)的倍數(shù)時(shí),都會(huì)相應(yīng)的翻一次,這樣,每張牌會(huì)翻的次數(shù)就各不一樣,可能很多次,也可能只有一兩次,結(jié)果就只是要輸出在經(jīng)過各個(gè)不同次數(shù)的翻牌后,正面向上的牌都有哪幾個(gè)。舉例說(shuō)明一下,比如24,第一次它是2的倍數(shù)時(shí)要從正面翻到背面,當(dāng)進(jìn)行到3時(shí),就又要從背面翻回來(lái),而到4時(shí)還要在翻,同理呢,到6.8.12…它都要來(lái)回的翻。如果它在多次的翻牌后,正面還向上了,那么它就是要輸出的
9、結(jié)果之一。</p><p> 2.用#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> 4.詳細(xì)設(shè)計(jì):</b></p&g
10、t;<p> N </p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><
11、;p><b> Y</b></p><p><b> 圖2 - 1</b></p><p><b> 5.測(cè)試結(jié)果:</b></p><p><b> 圖2 - 2</b></p><p><b> 6.調(diào)試分析:</b&g
12、t;</p><p> (1).這題的時(shí)間復(fù)雜度是O(52)。</p><p> (2).語(yǔ)法錯(cuò)誤相對(duì)來(lái)說(shuō)要好調(diào)試一些的,但有兩點(diǎn)需要特別指出:一是應(yīng)該用規(guī)范化的格式輸入源程序,推薦的格式是:函數(shù)體內(nèi)、循環(huán)體內(nèi)等都應(yīng)該縮進(jìn)一個(gè)TAB位,相應(yīng)的塊語(yǔ)句的兩個(gè)大括號(hào)都應(yīng)保持在同一列上,函數(shù)體之間、模塊之間都應(yīng)用空行隔開,這就解決了各種匹配的問題,更重要的是它極大的增強(qiáng)的程序的可讀性。二是應(yīng)該
13、注意函數(shù)的實(shí)參與形參的傳遞問題,要盡量保持兩者類型的匹配,(當(dāng)不匹配又可通過編譯時(shí)會(huì)發(fā)生數(shù)據(jù)類型的隱式轉(zhuǎn)換,這樣會(huì)產(chǎn)生很多不安全且又很難找到的錯(cuò)誤)當(dāng)不需要改變形參時(shí),只需傳入變量,如果你想在函數(shù)體內(nèi)改變函數(shù)的外部變量,則傳入指針。</p><p> (3).雖然本次程序的題目難度與其他問題相比不是很高,但仍有很多問題我們是很容易忽視的,其一:在理解題目的要求時(shí),注意翻牌的次數(shù)可能有多次;其二:for循環(huán)的嵌套
14、使用在書寫時(shí)很容易漏掉大括弧。</p><p><b> 7.設(shè)計(jì)體會(huì):</b></p><p> 做一個(gè)課程設(shè)計(jì)要注意很多方面,無(wú)論是格式,還是書寫的內(nèi)容和要表達(dá)的思想都得嚴(yán)格要求自己,所以做起來(lái)真的不算容易。本次課程設(shè)計(jì)涉及了很多知識(shí),由于往日沒有學(xué)得很扎實(shí),對(duì)某些問題仍然比較疑惑,所以要進(jìn)行充足的補(bǔ)習(xí)。期間,我翻閱了很多書籍,知識(shí)總是聯(lián)系很緊密的,解決完這個(gè)
15、問題又發(fā)現(xiàn)了新的問題,之后,為了解決新問題又發(fā)現(xiàn)了更多的問題,就這樣,我得等到一個(gè)一個(gè)把問題處理完。</p><p><b> 8.結(jié)束語(yǔ):</b></p><p> 問題越多,明白的也就會(huì)越來(lái)越多,做一次課程設(shè)計(jì)就像從頭到尾做了一次系統(tǒng)的復(fù)習(xí),從基礎(chǔ)到難點(diǎn),從輪廓到每個(gè)知識(shí)點(diǎn),數(shù)據(jù)結(jié)構(gòu)的研究?jī)?nèi)容在我的腦海里就再也不像以前那么模糊了。設(shè)計(jì)程序來(lái)解決現(xiàn)在存在的問題,
16、把理論知識(shí)付諸于實(shí)踐,對(duì)于我們這些計(jì)算機(jī)專業(yè)的本科生來(lái)說(shuō),實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`,這也是我們學(xué)習(xí)的目的。做完設(shè)計(jì),我已深刻體會(huì)到了學(xué)習(xí)這門課程的重要性與必要性了,同時(shí),它留給我很多思考:學(xué)習(xí)是思考一個(gè)的過程,我們應(yīng)該主動(dòng)去想學(xué)習(xí)一門知識(shí)后怎么去運(yùn)用,而不是一味地被動(dòng)地接受。</p><p> 數(shù)據(jù)結(jié)構(gòu)及其算法在解決現(xiàn)實(shí)生活中的常見問題和書寫軟件設(shè)
17、計(jì)方面上都有著重要的意義,我們應(yīng)該好好掌握它的相關(guān)知識(shí),在以后的學(xué)習(xí)過程中,更多的去學(xué)會(huì)如何運(yùn)用知識(shí)。</p><p> 在此,我衷心感謝董躍華老師的指導(dǎo)!</p><p><b> 參考文獻(xiàn):</b></p><p> 1、姜學(xué)軍《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版).中國(guó)輕工出版社</p><p> 2、嚴(yán)蔚敏《數(shù)據(jù)結(jié)
18、構(gòu)》(C語(yǔ)言版).清華大學(xué)出版社</p><p> 3、徐孝凱《數(shù)據(jù)結(jié)構(gòu)實(shí)用教程》(C/C++描述).清華大學(xué)出版社</p><p> 4、陳慧南《數(shù)據(jù)結(jié)構(gòu)》(使用C++語(yǔ)言描述).東南大學(xué)出版社</p><p><b> 附錄:</b></p><p><b> 源程序:</b><
19、;/p><p> #include <stdio.h> </p><p> #define OPPOSITE(i) i = i?0:1</p><p> int main() </p><p> { int card[52],i;</p><p><b> for(;;){</b&
20、gt;</p><p> printf("\n*********************紙牌游戲功能菜單表***********************\n");</p><p> printf("* 1:按照游戲規(guī)則翻牌,并輸出翻牌結(jié)果 *\n");</p><p> printf(
21、"* 2:退出 *\n");</p><p> printf("*********************紙牌游戲功能菜單表***********************\n");</p><p> printf("\n請(qǐng)按1,2完成操作:&qu
22、ot;);</p><p> scanf("%d",&i);</p><p> switch(i){</p><p><b> case 1:</b></p><p> for (int i = 0; i < 52; i++) </p><p><b
23、> { </b></p><p> card[i] = 0; //將52張牌初始化成正面朝上 </p><p><b> } </b></p><p> for (int j=2; j<=52; j++) //此層循環(huán)是控制基數(shù)的 </p><p><b> { </b&
24、gt;</p><p> for (int k = j; k <= 52 ; k++)//此層循環(huán)是控制從第幾張牌開始 </p><p><b> { </b></p><p> if (k%j == 0)//判斷第k張牌除以基數(shù)j后的余數(shù)是否為0,如為0就是能整除 </p><p><b> {
25、 </b></p><p> OPPOSITE(card[k-1]);</p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p> printf(&quo
26、t;**********************************\n");</p><p> printf("正面朝上的牌有:");</p><p> for (int h = 0; h < 52; h++)//開始打印 </p><p><b> { </b></p><p
27、> if (card[h] == 0)//判斷牌的狀態(tài)是否為正面朝上 </p><p><b> { </b></p><p> printf(" %d", h+1); </p><p><b> } </b></p><p><b> }</b&
28、gt;</p><p> printf("\n**********************************\n");break;</p><p> case 2: printf("已退出!\n");return 0;</p><p><b> }</b></p><p&g
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(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ì)-- 猴子選大王+ joseph環(huán)+紙牌游戲
- 迷宮游戲數(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ì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--漢諾塔游戲
- 黑白棋游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--flash 迷宮小游戲
- 紙牌游戲-課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--24點(diǎn)游戲源代碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論