版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> 學生課程設計(論文)</p><p> 題 目: 紙牌游戲 </p><p> 學生姓名: 00000 學 號: </p><p> 所在院(系): 數(shù)學與計算機學院 </p><p> 專 業(yè):
2、 網(wǎng)絡工程 </p><p> 班 級: 2012級1班 </p><p> 指 導 教 師: 職稱: 教授 </p><p> 2014年 01月 03日</p><p><b> 學生課程設計任務書</b></p&g
3、t;<p> 注:任務書由指導教師填寫。</p><p><b> 摘 要</b></p><p> 數(shù)據(jù)結(jié)構(gòu)課程是計算機專業(yè)中必修的核心課程之一,也是一門理論性很強的一門課程,同時也是一門鍛煉程序涉及能力的實踐課程,“數(shù)據(jù)結(jié)構(gòu)”成為計算機程序設計的重要理論技術(shù)基礎,它不僅是計算機學科的核心課程,而且已成為其它理工專業(yè)的熱門選修課。主要包括線性表
4、、樹和二叉樹以及圖等基本類型的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設計問題中計算機的操作對象以及它們之間的關(guān)系和運算等的學科,包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)的運算這三個方面的內(nèi)容,其中邏輯結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu);存儲結(jié)構(gòu)可分為順序存儲和鏈式存儲兩類,圖則屬于邏輯結(jié)構(gòu)中的非線性結(jié)構(gòu)。廣度優(yōu)先搜索(BFS)用的隊列一步一步完成的,從而找到的是最短路徑。</p><p> 紙牌游戲課程設計包
5、括紙牌信息的建立、了解其翻拍的原理、并簡明闡述翻牌的具體步驟與流程、最后輸出與打印翻牌結(jié)果,整個過程使學生進一步理解和掌握課堂上所學各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法,以及它們在程序中的使用方法。掌握一般軟件設計的基本內(nèi)容和設計方法,培養(yǎng)學生進行規(guī)范化軟件設計的能力。而且使學生掌握使用各種計算機資料和有關(guān)參考資料的方法,提高學生進行程序設計的基本能力。</p><p> 關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu),紙
6、牌游戲,BFS,遍歷</p><p><b> Abstract</b></p><p> Data structure course is one of required core curriculum in computer major, course is a very practical, is also an exercise program invol
7、ves the ability to practice curriculum, "has become an important theoretical and technical foundation of computer program design data structure", it is not only the core course of computer science, and has beco
8、me a hot elective course for other science majors. Mainly includes the basic data structure type linear table, tree and binary tree and graph of two. Dat</p><p> A card game Solitaire, curriculum design inc
9、ludes information about its principle, and expounds the flop remake of the concrete steps and processes, the final output and print flop results, the whole process to enable students to understand and master the various
10、basic abstract data type science class logical structure, storage structure and operation of the realization of algorithm, and their in the process of using the method. To master the basic content and the general design
11、method of softwa</p><p> Key words: data structure, card games, BFS, traversal</p><p><b> 目錄</b></p><p><b> 摘 要I</b></p><p> AbstractII&l
12、t;/p><p><b> 1 前言2</b></p><p> 1.1 課題背景2</p><p> 1.2 課程設計目的2</p><p> 2 相關(guān)技術(shù)分析3</p><p><b> 2.1概要設計3</b></p><p>
13、 2.2設計原始數(shù)據(jù)的輸入及輸出格式4</p><p> 2.3算法流程圖6</p><p><b> 3 設計與實現(xiàn)7</b></p><p> 3.1 數(shù)據(jù)結(jié)構(gòu)7</p><p> 3.2詳細設計和編碼7</p><p> 3.2.1 定義全局變量:7</p>
14、<p> 3.2.1主要程序代碼與分析如下:7</p><p> 3.3 上機調(diào)試過程10</p><p> 5 測試結(jié)果及其分析11</p><p> 6 用戶使用說明18</p><p><b> 7 源代碼18</b></p><p><b>
15、結(jié)論19</b></p><p><b> 參考文獻20</b></p><p><b> 附錄21</b></p><p><b> 1 前言</b></p><p> 《數(shù)據(jù)結(jié)構(gòu)》是軟件工程專業(yè)的必修課之一,是一門綜合性的專業(yè)基礎課。本課程較系統(tǒng)地
16、介紹了軟件設計中常用的數(shù)據(jù)結(jié)構(gòu)以及相應的實現(xiàn)算法,如線性表、棧、隊列、樹和二叉樹,圖、檢索和排序等,并對性能進行分析和比較,內(nèi)容非常豐富。</p><p><b> 1.1 課題背景</b></p><p> “數(shù)據(jù)結(jié)構(gòu)”旨在使學生學會分析研究數(shù)據(jù)對象的特性,學會數(shù)據(jù)的組織方法,以便選擇合適的數(shù)據(jù)邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),以及相應的運算,把現(xiàn)實世界中的問題轉(zhuǎn)化為計算機內(nèi)
17、部的表示和處理,這是一個良好的程序設計技能訓練的過程?!皵?shù)據(jù)結(jié)構(gòu)”課程設計不僅可以幫助學生充分理解、鞏固所學的基本概念、原理和方法,更重要的是能夠針對實際問題來選擇數(shù)據(jù)結(jié)構(gòu),設計相應的存儲結(jié)構(gòu)并加以實現(xiàn),從而最終解決問題。結(jié)合數(shù)據(jù)結(jié)構(gòu)所學知識,要求學生用C語言編程實現(xiàn)一個簡單的紙牌游戲設計。</p><p> 1.2 課程設計目的</p><p> (1)使學生進一步理解和掌握課堂上所
18、學各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法,以及它們在程序中的使用方法。</p><p> ?。?)使學生掌握軟件設計的基本內(nèi)容和設計方法,并培養(yǎng)學生進行規(guī)范化軟件設計的能力。</p><p> ?。?) 使學生掌握使用各種計算機資料和有關(guān)參考資料,提高學生進行程序設計的基本能力。</p><p><b> 2 相關(guān)技術(shù)分析</b&g
19、t;</p><p><b> 2.1概要設計</b></p><p> 按照題目的要求,首先,應對52張牌進行編號并且保存它們的編號信息,編號的類型為整型,而對于這樣固定的數(shù)據(jù),使用整型數(shù)組是最好的,因此,我們需要在程序的開始定義一共整型的數(shù)組,同時,為了方便對翻轉(zhuǎn)過程的記錄,在定義記錄編號信息的同時,定義一個與之相對應的標記數(shù)組,數(shù)組類型為整型。該程序的核心為
20、一個嵌套的循環(huán),所以定義兩個變量i,j作為循環(huán)條件。</p><p> 接著開始對變量進行初始化,首先是編號信息數(shù)組,使用for循環(huán)對數(shù)組進行1到52的賦值,代表52張紙牌,然后對標記數(shù)組賦值,將數(shù)組內(nèi)的所有的值初始化為零,方便在接下來的循環(huán)中統(tǒng)計每張牌的翻牌數(shù)。數(shù)據(jù)初始化結(jié)束后,開始按照要求對紙牌進行翻轉(zhuǎn),在嵌套循環(huán)中,定義了一個全局變量Flag,值為-1,負數(shù)定義為向下,正數(shù)定義為向上,這樣,翻轉(zhuǎn)一次,即乘
21、以Flag,同時,符合翻轉(zhuǎn)條件時,標記數(shù)組相應的編號的紙牌翻牌次數(shù)+1。</p><p> 當每個號碼每次遇到是某個數(shù)的倍數(shù)時,都會相應的翻一次,這樣,每張牌會翻的次數(shù)就各不一樣,可能很多次,也可能只有一兩次,結(jié)果就只是要輸出在經(jīng)過各個不同次數(shù)的翻牌后,正面向上的牌都有哪幾個。舉例說明一下,比如24,第一次它是2的倍數(shù)時要從正面翻到背面,當進行到3時,就又要從背面翻回來,而到4時還要在翻,同理呢,到6.8.12
22、…它都要來回的翻。如果它在多次的翻牌后,正面還向上了,那么它就是要輸出的結(jié)果之一。</p><p> 循環(huán)結(jié)束后,編號數(shù)組中的數(shù)據(jù)已經(jīng)更新,因此對數(shù)組進行掃描,大于零的即為正面向上的紙牌,輸出其編號即可,同時,輸出標記數(shù)組中的值,顯示每張牌的翻牌記錄,方便觀察或者尋找規(guī)律。到此,整個題目結(jié)束。</p><p> 2.2設計原始數(shù)據(jù)的輸入及輸出格式</p><p>
23、; 原始數(shù)據(jù)要求輸入紙牌的基礎編號,編號的輸入為整型。輸出的是經(jīng)過規(guī)律翻轉(zhuǎn)后正面向上的紙牌的編號。</p><p> 輸入的數(shù)據(jù)信息如下:紙牌:1、2、3……、51、52。</p><p><b> 問題直觀分析表:</b></p><p> ?。ㄗⅲ簣D中“√”表示翻轉(zhuǎn)一次。)</p><p><b>
24、 2.3算法流程圖</b></p><p><b> 3 設計與實現(xiàn)</b></p><p><b> 3.1 數(shù)據(jù)結(jié)構(gòu)</b></p><p> 按照題目要求,整個主體包括一個嵌套的循環(huán),外循環(huán)控制從2開始每張紙牌都作為基數(shù)進行翻牌,內(nèi)循環(huán)控制對所有紙牌進行判斷,如果是當前循環(huán)中基數(shù)的倍數(shù),則對其進行
25、翻轉(zhuǎn)操作。具體代碼如下:</p><p> for(i=2;i<=52;i++)</p><p><b> {</b></p><p> for(j=1;j<=52;j++)</p><p><b> {</b></p><p> if(j%i==0)&
26、lt;/p><p> data[j-1]=data[j-1]*Flag;</p><p><b> }</b></p><p><b> }</b></p><p> 3.2詳細設計和編碼</p><p> 3.2.1 定義全局變量:</p><p&
27、gt; 作為判斷紙牌是否向上的依據(jù),我們需要定義一個全局變量Flag=-1,在循環(huán)中對所有紙牌進行操作。</p><p> 3.2.1主要程序代碼與分析如下:</p><p> #define Flag -1</p><p> ?。紤]到最后要判斷哪些紙牌是正面向上的,所以必須要有一共判斷條件,因此定義一個全局變量作為正反面的判斷條件。)</p>
28、<p> void main()</p><p><b> {</b></p><p> int i,j,data[52],flag[52];</p><p><b> char m;</b></p><p> ?。ㄔ诔绦蜷_始,建立了兩個數(shù)組,一個存放52張牌的編號,另外一個存放
29、相應編號的紙牌的翻牌記錄,便于后面對翻牌次數(shù)的輸出。)</p><p> for(i=1;i<=52;i++)</p><p><b> {</b></p><p> data[i-1]=i;</p><p> ?。ㄍㄟ^for循環(huán),向數(shù)組中錄入1-52個數(shù),作為52張牌的編號,以便進行接下來的操作)</
30、p><p> flag[i-1]=0;</p><p> ?。▽lag數(shù)組中的相應編號紙牌的翻牌數(shù)初始化為0,在接下來的循環(huán)中,需要對翻牌次數(shù)進行統(tǒng)計。)</p><p><b> }</b></p><p> for(i=2;i<=52;i++)</p><p> ?。ㄇ短籽h(huán)的外循環(huán)
31、,保證基數(shù)的循環(huán)。)</p><p><b> {</b></p><p> for(j=1;j<=52;j++)</p><p> ?。ㄇ短籽h(huán)的內(nèi)循環(huán),對每張紙牌進行基數(shù)的倍數(shù)條件判斷)</p><p><b> {</b></p><p> if(j%i=
32、=0)</p><p><b> {</b></p><p> data[j-1]=data[j-1]*Flag;</p><p> flag[j-1]++;</p><p> ?。ǚ埔淮危瑒t相應的標記數(shù)組中該編號的位置數(shù)值+1,即將翻牌次數(shù)記入flag數(shù)組中。)</p><p><
33、b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("最后所有正面向上的牌有:");</p><p> for(i=0;i<52;i++)</p><p
34、><b> {</b></p><p> if(data[i]>0)</p><p> ?。ㄔ擃}目中將大于零的編號定義為正面向上的紙牌的編號)</p><p> printf("第%d張牌 ",i+1);</p><p><b> }</b></p&g
35、t;<p> printf("\n");</p><p><b> }</b></p><p> 以上為程序主要代碼的分析。</p><p> 在程序中,主要還包括功能界面,如下:</p><p> printf("\t------------------------
36、-----------------------------------\n");printf("\t-----------------------------------------------------------\n");</p><p> printf("\t--------- 歡迎進入紙牌游戲 -----------\
37、n");</p><p> printf("\t--------- 1.查看題目 -----------\n");</p><p> printf("\t--------- 2.查看所有紙牌的翻牌次數(shù) -----------\n");</p>
38、<p> printf("\t--------- 3.查看指定編號紙牌翻牌記錄 -----------\n");</p><p> printf("\t--------- 4.查看最終正面向上的紙牌編號 -----------\n");</p><p> printf("\t-----
39、---- 5.制作人信息 -----------\n");</p><p> printf("\t--------- 0.按0鍵結(jié)束 -----------\n");</p><p> printf("\t---------------------
40、--------------------------------------\n");</p><p> printf("\t-----------------------------------------------------------\n");</p><p> 同時,整個功能實現(xiàn)由do-while語句和switch語句組合而成,do-while
41、語句可以保證界面最少運行一次,switch語句保證每個功能獨立實現(xiàn),通過choice的輸入來進入不同的功能,同時在每個小的獨立功能內(nèi),我都添加了獨立判斷是否回到主菜單的語句,如下:</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=getchar();&l
42、t;/p><p> if(n=='Y')break;</p><p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("***********(提示:輸入錯誤,默認為繼續(xù)。)******\n&q
43、uot;);</p><p> 整個do-while語句的結(jié)束條件為:choice=0,所以如果用戶輸入為N,則直接將0賦值給choice,則符合循環(huán)結(jié)束的條件,則直接結(jié)束程序,如果輸入為Y,則break,繼續(xù)循環(huán),輸入錯誤,沒有對choice任何的賦值操作,即不能滿足結(jié)束條件,則無論輸入什么都默認為繼續(xù),break后繼續(xù)循環(huán)。由于程序默認的將回車操作通過getchar()賦值給n,導致不能正常的實現(xiàn)下面的判斷
44、,而直接顯示為輸入錯誤,所以加入兩個n=getchar()語句,保證第二句能夠正確的實現(xiàn)功能,讓用戶自行輸入條件,進行下一步的操作。在整個程序中,存在著大量的輸入判斷條件,如下:</p><p> if(num<1&&num>52)</p><p> printf("\t輸入錯誤!\n");</p><p> 這
45、兩句代碼就是對輸入的num值進行判斷,由于紙牌序號為1-52,所以不在這個范圍的值都為錯誤值,需要有一個錯誤信息的反饋,所以需要對輸入的信息進行判斷,然后通過不同的值對數(shù)據(jù)進行相應的操作,這對于程序的正確運行,有著至關(guān)重要的作用。</p><p> 3.3 上機調(diào)試過程</p><p> 該程序任務相對比較簡單,思路較明確。</p><p> 在一開始編寫代碼
46、的時候,在嵌套循環(huán)中,外循環(huán)for的條件(i=2;i<=52;i++),寫成(i=1;i<=52;i++),導致對每個紙牌的翻轉(zhuǎn)都多判斷了一次,按照一開始定義的大于零的編號數(shù)為正面向上的條件,最后輸出的結(jié)果正好相反,經(jīng)過修改調(diào)試后,問題解決。</p><p> 在每個case中加入獨立的判斷是否回到主菜單的語句,一開始getchar()總是不能正確錄入,沒有輸入就直接運行下一個語句,在加入控制語句后
47、經(jīng)過調(diào)試發(fā)現(xiàn),程序把上一個輸入的回車直接默認賦值給getchar(),導致沒有輸入,直接進行下一個語句,后來使用了兩個連續(xù)的getchar()語句,第一個getchar()語句默認為回車,但是后面一個getchar()語句可以正確的重新輸入判斷值,經(jīng)過重新的調(diào)試,運行正常,問題解決,但是希望能找到更完善的答案。在判斷是否繼續(xù)輸入紙牌編碼的功能中,同樣遇到了這個問題,按照相同的解決辦法解決。</p><p> 整
48、個程序由一個大的do-while語句和switch語句組合實現(xiàn)界面的不同功能,do-while語句通過choice=0作為結(jié)束的條件,在case 3中,有一個小的do-while語句實現(xiàn)紙牌編號的重復輸入,在整個程序中有很多信息的輸入,需要根據(jù)輸入的信息正確與否來反饋信息,否則會導致程序出錯,所以在調(diào)試的過程中加入了很多判斷條件,可以解決信息輸入錯誤的情況,但是仍然存在輸入非整型值程序出錯的問題,所以在輸入條件中加入提示信息,以保證信息
49、類型輸入正確。</p><p> 5 測試結(jié)果及其分析</p><p> 1.測試結(jié)果如下圖5.1-5.11;</p><p> 2結(jié)果分析以注釋的形式寫在圖的下方;</p><p> 圖5.1:MessageBox制作的一個歡迎提示</p><p> 5.2:紙牌游戲程序的主功能界面</p>
50、<p> 5.3:紙牌游戲程序功能1:查看題目</p><p> 5.4:紙牌游戲程序功能2:查看所有紙牌的翻牌次數(shù)</p><p> 5.4.1:續(xù)5.4</p><p><b> 第一章 題目與要求</b></p><p> 5.4.2:續(xù)5.4</p><p> 5.5
51、:紙牌游戲程序功能3:查看指定編號紙牌翻牌記錄</p><p> 5.6:紙牌游戲程序功能4:查看最終正面向上的紙牌編號</p><p> 5.7:紙牌游戲程序結(jié)束畫面</p><p> 5.8:主界面輸入錯誤提示</p><p> 5.9:功能3輸入錯誤提示以及判斷是否需要繼續(xù)查詢紙牌編碼</p><p>
52、 5.10:回主菜單判斷以及輸入錯誤提示</p><p> 5.11:功能5輸出制作人信息</p><p><b> 6 用戶使用說明</b></p><p> 用戶運行程序,按操作提示進行操作。程序運行環(huán)境VC++6.0。</p><p><b> 7 源代碼</b></p>
53、<p><b> 見附錄</b></p><p><b> 結(jié)論</b></p><p> 這個學期是我第一次接觸《數(shù)據(jù)結(jié)構(gòu)》,在完成設計的過程中,我遇到了一系列的問題,能明顯感覺到自己在很多方面的不足,但另一方面,問題是要分析解決的,找出問題以便為完善學習計劃,改變學習內(nèi)容與方法提供實踐依據(jù)。所以在整個過程中,我不斷加深了對數(shù)
54、據(jù)結(jié)構(gòu)的理解與一些程序?qū)憰鴷r要注意的事項,體會了《數(shù)據(jù)結(jié)構(gòu)》這門課程在解決現(xiàn)實生活問題上的可行性,也更進一步地激發(fā)了我的學習熱情。 </p><p> 做一個課程設計要注意很多方面,無論是格式,還是書寫的內(nèi)容和要表達的思想都得嚴格要求自己,所以做起來真的不算容易。本次課程設計涉及了很多知識,由于往日沒有學得很扎實,對某些問題仍然比較疑惑,所以要進行充足的補習。期間,我翻閱了很多書籍,知識總是聯(lián)系很緊密的,解決完
55、這個問題又發(fā)現(xiàn)了新的問題,之后,為了解決新問題又發(fā)現(xiàn)了更多的問題,就這樣,我得等到一個一個把問題處理完。</p><p> 問題越多,明白的也就會越來越多,做一次課程設計就像從頭到尾做了一次系統(tǒng)的復習,從基礎到難點,從輪廓到每個知識點,數(shù)據(jù)結(jié)構(gòu)的研究內(nèi)容在我的腦海里就再也不像以前那么模糊了。設計程序來解決現(xiàn)在存在的問題,把理論知識付諸于實踐,對于我們這些計算機專業(yè)的本科生來說,實際能力的培養(yǎng)至關(guān)重要,而這種實際
56、能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向?qū)嵺`,這也是我們學習的目的。做完設計,我已深刻體會到了學習這門課程的重要性與必要性了,同時,它留給我很多思考:學習是思考一個的過程,我們應該主動去想學習一門知識后怎么去運用,而不是一味地被動地接受。</p><p> 數(shù)據(jù)結(jié)構(gòu)及其算法在解決現(xiàn)實生活中的常見問題和書寫軟件設計方面上都有著重要的意義,我們應該好好掌握它的相關(guān)知識,在以后的學習過程中,更多的去學會如何
57、運用知識。</p><p><b> 參考文獻</b></p><p> [1].王昆侖、李紅 《數(shù)據(jù)結(jié)構(gòu)與算法》 北京:中國鐵道出版社</p><p> [2].寧國正 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 南京:東南大學出版社</p><p> [3].嚴尉敏 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 北京:清華大學出版社</p&
58、gt;<p> [4].吳乃陵 《C++程序設計》 北京:高等教育出版社</p><p> [5] 譚浩強,張基溫,唐永炎編著. C語言程序設計教程. 北京:高等教育出版社,1992</p><p> [6] 譚浩強編著. C語言程序設計. 北京:清華大學出版社, 2007</p><p> [7] 嚴蔚敏,吳偉民編著. 數(shù)據(jù)結(jié)構(gòu)(C語言版
59、). 北京:清華大學出版社,2008</p><p> [8] 嚴蔚敏,吳偉民,米寧編著. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版)北京:清華大學出版社,2008</p><p> [9] 劉愛民編著. 離散數(shù)學. 北京;北京郵電大學出版社,2008</p><p><b> 附錄</b></p><p><b> 程
60、序源代碼:</b></p><p> #include<stdio.h></p><p> #include<windows.h></p><p> #define Flag -1//定義一個全局變量作為正反面的判斷條件。</p><p> void main()</p><p&
61、gt;<b> {</b></p><p> int i,j,data[52],flag[52],choice,num;//建立兩個數(shù)組,一個存放52張牌的編號,另外一個存放相應編號的紙牌的翻牌記錄。</p><p><b> char m,n;</b></p><p> MessageBox(NULL,"
62、;歡迎進入紙牌游戲程序!","溫馨提示",MB_ICONASTERISK);//添加了一個MessageBox歡迎對話框</p><p> for(i=1;i<=52;i++)</p><p><b> {</b></p><p> data[i-1]=i;//錄入52張牌的編號。</p>
63、<p> flag[i-1]=0;//將相應編號紙牌的翻牌數(shù)初始化為0。</p><p><b> }</b></p><p> for(i=2;i<=52;i++)//外循環(huán),基數(shù)循環(huán)。</p><p><b> {</b></p><p> for(j=1;j<
64、=52;j++)//內(nèi)循環(huán),基數(shù)倍數(shù)條件判斷。</p><p><b> {</b></p><p> if(j%i==0)</p><p><b> {</b></p><p> data[j-1]=data[j-1]*Flag;//將翻轉(zhuǎn)后的結(jié)果更新data中的數(shù)據(jù)。</p>
65、<p> flag[j-1]++;//翻牌一次,即記入flag數(shù)組中。</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> do{</b><
66、;/p><p> printf("\t-----------------------------------------------------------\n");printf("\t-----------------------------------------------------------\n");</p><p> printf(&
67、quot;\t--------- 歡迎進入紙牌游戲 -----------\n");</p><p> printf("\t--------- 1.查看題目 -----------\n");</p><p> printf("\t---------
68、 2.查看所有紙牌的翻牌次數(shù) -----------\n");</p><p> printf("\t--------- 3.查看指定編號紙牌翻牌記錄 -----------\n");</p><p> printf("\t--------- 4.查看最終正面向上的紙牌編號 -----
69、------\n");</p><p> printf("\t--------- 5.制作人信息 -----------\n");</p><p> printf("\t--------- 0.按0鍵結(jié)束 -----------\n");
70、</p><p> printf("\t-----------------------------------------------------------\n");</p><p> printf("\t-----------------------------------------------------------\n");</p
71、><p> printf("請輸入您的選擇(數(shù)字0-5):");//主界面</p><p> scanf("%d",&choice);</p><p> switch(choice)//通過switch語句進行功能的選擇</p><p><b> {</b></p
72、><p><b> case 1:{</b></p><p> printf("---題目---\n");</p><p> printf("**************************************************************\n");</p>&l
73、t;p> printf("編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張牌;直到以52為基數(shù)的翻過,輸出:這時輸出正面向上的牌有哪些
74、?\n");</p><p> printf("****************************************************************");</p><p> printf("\n");</p><p> printf("\n");</p>
75、;<p> printf("是否回到主菜單?(Y/N):");//在每個獨立功能后添加了獨立的判斷語句,從而可以選擇性的回到主菜單。</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y')break;</p><p&g
76、t; else if(n=='N')</p><p> choice=0;//0作為整個界面的循環(huán)結(jié)束條件,所以直接將choice=0,即可結(jié)束循環(huán)。</p><p> else printf("**********(提示:輸入錯誤,默認為繼續(xù)。)***********\n");</p><p><b> }br
77、eak;</b></p><p><b> case 2:{</b></p><p> printf("以下為翻牌記錄:\n");</p><p> printf("\t----第1張牌翻過0次。----\t");</p><p> printf("\
78、n");</p><p> printf("\n");</p><p> for(i=1;i<52;i++)</p><p><b> {</b></p><p> printf("\t----第%d張牌翻過%d次。----\t",i+1,flag[i]);
79、</p><p> if(i%2==0)</p><p> printf("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):&q
80、uot;);</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y')break;</p><p> else if(n=='N')</p><p><b> choice=0;</b>
81、</p><p> else printf("**********(提示:輸入錯誤,默認為繼續(xù)。)*********** **\n");</p><p><b> }break;</b></p><p><b> case 3:{</b></p><p><b>
82、 do{</b></p><p> printf("\t請輸入您想查詢的紙牌編碼:");</p><p> scanf("%d",&num);</p><p> if(num<1&&num>52)//紙牌的序號為1-52,所以其他數(shù)值都為輸入錯誤。</p>
83、<p> printf("\t輸入錯誤!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("\t紙牌翻轉(zhuǎn)記錄如下:\n");</p><p> printf(&qu
84、ot;\t紙牌翻轉(zhuǎn)次數(shù)為%d\n",flag[num-1]);</p><p> for(j=2;j<=52;j++)//內(nèi)循環(huán),基數(shù)倍數(shù)條件判斷。</p><p><b> {</b></p><p> if(num%j==0)</p><p><b> {</b><
85、/p><p> printf("\t在以編號%d為基數(shù)時此紙牌有一次翻轉(zhuǎn)。\n",j);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> pri
86、ntf("需要繼續(xù)查詢紙牌編碼嗎?(Y/N):");//獨立的判斷語句,作為do-while的結(jié)束條件,從而可循環(huán)的查詢紙牌編碼。</p><p> m=getchar();</p><p> m=getchar();</p><p> if(m!='Y'&&m!='N')</p>
87、<p> printf("************(提示:輸入錯誤,默認為跳過。)******** **\n");</p><p> }while(m=='Y');</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p
88、><p> n=getchar();</p><p> if(n=='Y')break;</p><p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("******
89、********(提示:輸入錯誤,默認為繼續(xù)。)***** *****\n");</p><p><b> }break;</b></p><p><b> case 4:{</b></p><p> printf("\t最后所有正面向上的牌有:\n");</p><
90、p> for(i=0;i<52;i++)</p><p><b> {</b></p><p> if(data[i]>0)//所有大于0的數(shù)即為正面向上的紙牌。</p><p> printf(" 第%d張牌 ",i+1);</p><p><b> }&l
91、t;/b></p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y
92、9;)break;</p><p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("***************(提示:輸入錯誤,默認為繼續(xù)。)**** ******\n");</p><p>
93、<b> }break;</b></p><p><b> case 5:{</b></p><p> printf("\t\t\t制作人: \n");</p><p> printf("\t\t\t班級: \n");</p><p> printf
94、("\t\t\t指導老師: \n");</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y')break;</p><
95、p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("***************(提示:輸入錯誤,默認為繼續(xù)。)****** *****\n");</p><p><b> }</b>&l
96、t;/p><p> case 0:break;</p><p> default:printf("\t輸入錯誤,請重新輸入!\n");</p><p><b> }</b></p><p> }while(choice!=0);//0作為整個循環(huán)的結(jié)束條件。</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設計-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計“紙牌游戲”
- 數(shù)據(jù)結(jié)構(gòu)課程設計--紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計報告-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計-- 猴子選大王+ joseph環(huán)+紙牌游戲
- 迷宮游戲數(shù)據(jù)結(jié)構(gòu)課程設計
- 紙牌游戲課程設計
- 紙牌游戲課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設計--數(shù)據(jù)結(jié)構(gòu)課程設計----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設計--漢諾塔游戲
- 黑白棋游戲數(shù)據(jù)結(jié)構(gòu)課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計--flash 迷宮小游戲
- 紙牌游戲-課程設計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計
- 數(shù)據(jù)結(jié)構(gòu)課程設計
評論
0/150
提交評論