版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 題 目: 紙牌游戲 </p><p><b> 目錄</b></p><p> 一、 需求分析…………………………………………………3 </p><p> 二、 概要設(shè)計(jì)…………………………………………………3</p><p> 詳細(xì)設(shè)計(jì)………………………………………
2、…………4</p><p> 調(diào)試分析和測(cè)試結(jié)果……………………………………7</p><p> 總結(jié)………………………………………………………8</p><p> 參考文獻(xiàn)…………………………………………………8</p><p> 致謝………………………………………………………8</p><p> 附錄……
3、…………………………………………………9</p><p><b> 需求分析</b></p><p> 按以下規(guī)則進(jìn)行翻牌:編號(hào)為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;...
4、再依次5的倍數(shù)的牌翻一次,6的,7的 直到 以52為基數(shù)的翻過,最后輸出正面向上的牌有哪些?</p><p> 用函數(shù)obv1 、obv2按照題目要求的規(guī)則,用for循環(huán)來(lái)實(shí)現(xiàn).</p><p><b> 概要設(shè)計(jì)</b></p><p> 1.當(dāng)從第二個(gè)編號(hào)開始的每張牌每次遇到是其倍數(shù)時(shí),都會(huì)相應(yīng)的翻一次,這樣,每張牌會(huì)翻的次數(shù)就各不一
5、樣,可能很多次,也可能只有一兩次,而結(jié)果只是要輸出在經(jīng)過各個(gè)不同次數(shù)的翻牌后,正面向上的牌都有哪幾張。比如24,第一次它是2的倍數(shù)時(shí)要從正面翻到背面,當(dāng)進(jìn)行到3時(shí),就又要從背面翻回來(lái),而到4時(shí)還要在翻,同理呢,到6.8.12…它都要來(lái)回的翻。如果它在多次的翻牌后,正面還向上了,那么它就是要輸出的結(jié)果之一。</p><p> 2.建立代表52張牌的線性表——調(diào)用翻牌算法按照規(guī)則翻牌——輸出翻牌算法的結(jié)果</
6、p><p> 最為主要的翻牌算法的實(shí)現(xiàn):</p><p> void obv2 (SqList L,int n) {</p><p> for (int i=2;i<=n;i++)</p><p> for (int j=i;j<=L.length;j++)</p><p> if (j%i
7、==0){</p><p> if (L.data[j]==1)</p><p> L.data[j]=0;</p><p> else if (L.data[j]==0)</p><p> L.data[j]=1;</p><p><b> }</b></p>
8、;<p><b> }</b></p><p> 以上是通過for循環(huán)對(duì)是當(dāng)前基數(shù)倍數(shù)的牌進(jìn)行翻牌 </p><p> 3、根據(jù)算法思想,流程圖如下:</p><p><b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 1、預(yù)處理</b><
9、;/p><p> #include<iostream.h></p><p> #include<stdlib.h></p><p> #define SIZE 100 //線性表存儲(chǔ)空間的初始分配量</p><p><b> 2、數(shù)據(jù)類型定義</b></p><p>
10、 定義一個(gè)結(jié)構(gòu)體類型SqList,結(jié)構(gòu)體中數(shù)組指針elem指示線性表的基地址,length指示線性表的當(dāng)前長(zhǎng)度。Listsize指示順序表當(dāng)前分配的存儲(chǔ)空間大小,一旦因插入元素而空間不足時(shí),可進(jìn)行再分配。</p><p> typedef struct{</p><p> int * elem; //存儲(chǔ)空間基址</p><p> int *
11、 data;</p><p> int length; //當(dāng)前長(zhǎng)度</p><p> int listsize; //當(dāng)前分配的存儲(chǔ)容量</p><p><b> }SqList;</b></p><p> 3、主要函數(shù)功能介紹</p><p> 構(gòu)造一個(gè)空的線性表
12、L用來(lái)存儲(chǔ)分配:</p><p> void InitList_Sq(SqList &L) { </p><p> // 構(gòu)造一個(gè)空的線性表L。 </p><p> L.elem = (int *)malloc(SIZE*sizeof(int)); </p><p> if (!L.elem) </p>&l
13、t;p> cout<<"ERROR"; // 存儲(chǔ)分配失敗 </p><p> L.data = (int *)malloc(SIZE*sizeof(int)); </p><p> if (!L.data) </p><p> cout<<"ERROR";
14、// 存儲(chǔ)分配失敗 </p><p> L.length = 0; // 空表長(zhǎng)度為0 </p><p> L.listsize = SIZE; // 初始存儲(chǔ)容量 </p><p> } // InitList_Sq</p><p> 調(diào)用PrintList_Sq函數(shù)用來(lái)顯示線性表中的數(shù)據(jù):&l
15、t;/p><p> void PrintList_Sq(SqList L) { </p><p> //顯示線性表中所有數(shù)據(jù) </p><p> for(int i=1;i<=L.length;i++) </p><p><b> { </b></p><p> if (L.
16、data[i]==1) </p><p> cout<<L.elem[i]<<" ";</p><p><b> } </b></p><p> cout<<endl; </p><p><b> }</b></p>
17、<p> 調(diào)用函數(shù)obv1,確保翻牌前每張牌都是正面向上:</p><p> void obv1 (SqList L) {</p><p> for (int i=1;i<=L.length;i++)</p><p> L.data[i]=1;</p><p><b> }</b><
18、/p><p> 調(diào)用函數(shù)obv2,按照規(guī)則翻牌:</p><p> void obv2 (SqList L,int n) {</p><p> for (int i=2;i<=n;i++)</p><p> for (int j=i;j<=L.length;j++)</p><p> if
19、(j%i==0){</p><p> if (L.data[j]==1)</p><p> L.data[j]=0;</p><p> else if (L.data[j]==0)</p><p> L.data[j]=1;</p><p><b> }</b></
20、p><p><b> }</b></p><p><b> 4、主函數(shù)</b></p><p> void main()</p><p> {SqList L;</p><p><b> int n=52;</b></p>&
21、lt;p> InitList_Sq(L);</p><p> for(int i=1;i<=n;i++)</p><p><b> {</b></p><p> L.elem[i]=i; </p><p> L.length++;</p><p><b>
22、}</b></p><p><b> obv1 (L);</b></p><p> obv2 (L,n);</p><p> cout<<"正面向上的牌的編號(hào)是:"<<endl;</p><p> PrintList_Sq(L);</p>&l
23、t;p><b> }</b></p><p> 四、調(diào)試分析和測(cè)試結(jié)果</p><p> 在編寫程序時(shí)應(yīng)該用規(guī)范化的格式輸入源程序,同時(shí)注意不要忘了編寫頭文件#include<iostream.h>、#include<stdlib.h>;在編程時(shí)不要忽略了一些細(xì)節(jié),不要忘了;、}等符號(hào),否則程序?qū)o(wú)法正常運(yùn)行。</p>
24、<p> 在調(diào)用指針時(shí)應(yīng)先將其初始化,如果沒有初始化指針就調(diào)用它,這樣很不安全,雖然你有時(shí)可以運(yùn)行,卻有了不安定的因素。如:int *data;可以成定義:int data [52];這里的data是一個(gè)常量地址,也是一個(gè)數(shù)組名,因此不用擔(dān)心它沒有被初始化。</p><p><b> 五、總結(jié)</b></p><p> 通過這次的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我
25、明顯感覺到自己在很多方面的不足,但問題總是要解決的,必須找出問題然后將其一一解除。所以在整個(gè)過程中,我不斷加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解與一些程序?qū)憰鴷r(shí)要注意的事項(xiàng),也讓我對(duì)這門課程有了進(jìn)一步的了解和認(rèn)識(shí)。完成一個(gè)課程設(shè)計(jì)要注意很多方面,無(wú)論是格式、書寫的內(nèi)容還是要表達(dá)的思想,所以我們必須嚴(yán)格要求自己。本次課程設(shè)計(jì)涉及了很多知識(shí),由于往日學(xué)得不扎實(shí),對(duì)某些問題仍然存在疑惑,我查閱了相關(guān)書籍,以便將疑難問題解決,同時(shí)更加進(jìn)一步的掌握相關(guān)知識(shí)。&l
26、t;/p><p> 此次的課程設(shè)計(jì)不僅讓我深刻體會(huì)到了學(xué)習(xí)這門課程的重要性與必要性,也讓我懂得了學(xué)習(xí)是思考一個(gè)的過程,我們應(yīng)該主動(dòng)去思考學(xué)到的知識(shí)以及學(xué)到后怎么去運(yùn)用,而不是一味地被動(dòng)地接受。數(shù)據(jù)結(jié)構(gòu)及其算法在解決現(xiàn)實(shí)生活中的常見問題和書寫軟件設(shè)計(jì)方面上都有著重要的意義,我們應(yīng)該好好掌握它的相關(guān)知識(shí),在以后的學(xué)習(xí)過程中,更多的去學(xué)會(huì)如何運(yùn)用知識(shí)。</p><p><b> 六、參
27、考文獻(xiàn)</b></p><p> [1]劉振鵬 張曉莉 郝杰.數(shù)據(jù)結(jié)構(gòu).北京:中國(guó)鐵道出版社.2005</p><p> [2]譚浩強(qiáng) .C語(yǔ)言程序設(shè)計(jì)(第二版).北京:清華大學(xué)出版社.2008</p><p> [3]嚴(yán)蔚敏 吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版).北京:清華大學(xué)出版社.2010</p><p> [4]黃國(guó)瑜 葉
28、乃菁.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版).北京:清華大學(xué)出版社.2002</p><p> [5]朱站立.數(shù)據(jù)結(jié)構(gòu)(第三版).西安:西安交通大學(xué)出版社.2004</p><p><b> 七、致謝</b></p><p> 感謝學(xué)校為我們提供的學(xué)習(xí)及完成課程設(shè)計(jì)的機(jī)會(huì),也感謝徐曉蓉老師的教導(dǎo)和同學(xué)們對(duì)我的幫助與支持。</p><p&
29、gt;<b> 八、附錄</b></p><p><b> 程序源碼:</b></p><p> #include<iostream.h></p><p> #include<stdlib.h></p><p> #define SIZE 100 //線性表存儲(chǔ)空
30、間的初始分配量</p><p> typedef struct{</p><p> int * elem; //存儲(chǔ)空間基址</p><p> int * data;</p><p> int length; //當(dāng)前長(zhǎng)度</p><p> int listsize; //
31、當(dāng)前分配的存儲(chǔ)容量</p><p><b> }SqList;</b></p><p> void InitList_Sq(SqList &L) { </p><p> // 構(gòu)造一個(gè)空的線性表L。 </p><p> L.elem = (int *)malloc(SIZE*sizeof(int));
32、 </p><p> if (!L.elem) </p><p> cout<<"ERROR"; // 存儲(chǔ)分配失敗 </p><p> L.data = (int *)malloc(SIZE*sizeof(int)); </p><p> if (!L.data) </p>
33、<p> cout<<"ERROR"; // 存儲(chǔ)分配失敗 </p><p> L.length = 0; // 空表長(zhǎng)度為0 </p><p> L.listsize = SIZE; // 初始存儲(chǔ)容量 </p><p> } // InitList_Sq&l
34、t;/p><p> void PrintList_Sq(SqList L) { </p><p> //顯示線性表中所有數(shù)據(jù) </p><p> for(int i=1;i<=L.length;i++) </p><p> { if (L.data[i]==1) </p><p> cout<
35、;<L.elem[i]<<" ";</p><p><b> } </b></p><p> cout<<endl; </p><p><b> }</b></p><p> void up(SqList L) {</p>
36、<p> for (int i=1;i<=L.length;i++)</p><p> L.data[i]=1;</p><p><b> }</b></p><p> void down(SqList L,int n) {</p><p> for (int i=2;i<=n;i
37、++)</p><p> for (int j=i;j<=L.length;j++)</p><p> if (j%i==0){</p><p> if (L.data[j]==1)</p><p> L.data[j]=0;</p><p> else if (L.data[j]=
38、=0)</p><p> L.data[j]=1;</p><p><b> }</b></p><p><b> }</b></p><p> void main()</p><p> {SqList L;</p><p>&l
39、t;b> int n=52;</b></p><p> InitList_Sq(L);</p><p> for(int i=1;i<=n;i++)</p><p><b> {</b></p><p> L.elem[i]=i; </p><p> L.
40、length++;</p><p><b> }</b></p><p><b> up(L);</b></p><p> down(L,n);</p><p> cout<<"正面向上的牌的編號(hào)是:"<<endl;</p><
溫馨提示
- 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)論