

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