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