數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 題 目 紙 牌 游 戲 學(xué)生姓名 薛 丹 學(xué) 號 08120132 專業(yè)班級 計(jì)算機(jī)0801班 指導(dǎo)老師 方 霞 設(shè)計(jì)日期 2009年12月27日 指導(dǎo)老師評閱意見:評閱成績: 簽名:一、問題定義1.課題目的:做一個(gè)紙牌游戲的程序,最后輸出正面朝上的結(jié)果有哪些牌。2.課題意義:通過課程設(shè)計(jì),使自己熟練掌握數(shù)據(jù)結(jié)構(gòu)課程中所學(xué)的理論知識,并實(shí)際應(yīng)用,通綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)的基本知識來解決實(shí)際問題,加強(qiáng)了分析和解決問題的能力。3.課題要求:編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一

2、次,直到最后一張牌;然后從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;.再依次5的倍數(shù)的牌翻一次,6的,7的 直到 以52為基數(shù)的 翻過,輸出:這時(shí)正面向上的牌有哪些?二、可行性分析 1.分析:觀察題目可以看出本題需要一個(gè)子函數(shù),我們將它定義為zhipaiplay(). (1)在開始玩游戲前,我們首先看到題目中顯示“52張牌”,這讓我首先想到了用數(shù)組來表示,定義該數(shù)組為painumber,將number定義為全局常量.所有的紙牌都是正面向上,因?yàn)榧埮朴袃擅?,正面和反面,我們可以?和1來表示,因此,將painumber的初值定義為0;,number定義為全局常量53; (2

3、)游戲過程中,首先,要從第2張開始翻牌,直到第52張,所以總共進(jìn)行了51輪翻牌,故此時(shí)要用一個(gè)循環(huán)語句for(i=2;i<number;i+),用此循環(huán)語句來表示進(jìn)行的輪數(shù);其次,第一輪中,要以2為基數(shù),對每張牌有條件的進(jìn)行翻牌,所以要用到一個(gè)雙重循環(huán)語句for(j=i;j<number;j+);再次,在第二次的循環(huán)中我們需要一個(gè)判斷語句,來判斷該牌是否為i的倍數(shù),是i的倍數(shù)的翻牌(是正面0的翻為1,是反面1的翻為0),不是i的倍數(shù)的不翻牌,直到最后一張牌; (3)玩完游戲之后,對52張牌進(jìn)行瀏覽,將正面向上即為0的輸出,故此時(shí)既需要循環(huán)語句,又需要判斷語句,循環(huán)牌的張數(shù)for(k

4、=0;k<number-1;k+),判斷是否為正面向上即為0;在子函數(shù)外的主程序中,我們需要定義變量i , j , k 并賦予它們初值,并調(diào)用子函數(shù)輸出每一輪的翻牌結(jié)果和最后結(jié)果。2.如圖1-1流程圖所示開始i=2 i+if(i<number)ber)for(j=i;j<number;j+) if(j%i=0)否 if(paij=0) paij=1;else paij=0; 真 cout<<"第"<<i-1<<"輪翻牌后的結(jié)果為:"<<endl;for(k=0;k<number-1;

5、k+)cout<<paik<<" " 圖1-1 紙牌游戲總控模塊圖cout<<"#"<<endl;cout<<"經(jīng)過51輪翻牌后正面向上的有:"<<endl;k=0if(k<number) 假 真 真 if (paik=0) 真 真cout<<"第"<<k+1<<"張牌"<<" " 結(jié)束三、程序設(shè)計(jì)#include <iostream> u

6、sing namespace std;const int number=53;/定義為全局常量int painumber=0;/0代表正面朝上,將正面朝上定義為初值void zhipaiplay(int i,int j,int k)for(i=2;i<number;i+)/進(jìn)行的輪次for(j=i;j<number;j+)/紙牌張數(shù)if(j%i=0)if (paij=0)paij=1;else paij=0;/從第二張開始到最后一張是i的倍數(shù)的翻牌cout<<"第"<<i-1<<"輪翻牌后的結(jié)果為:"<

7、;<endl; for(k=0;k<number-1;k+)cout<<paik<<" " /輸出每一輪的52張牌cout<<endl; cout<<"#"<<endl;cout<<"經(jīng)過51輪翻牌后正面向上的有:"<<endl; for(k=0;k<number-1;k+)if (paik=0)cout<<"第"<<k+1<<"張牌"<<&quo

8、t; "/最終輸出正面朝上的有哪些牌int main()int i,j,k;i=j=k=0; zhipaiplay(i,j,k); return 0;四、調(diào)試過程及其解決方法 1int number=53出現(xiàn)錯(cuò)誤,因?yàn)閿?shù)組pai的下標(biāo)必須是常量,不能是變量,故將此改為const int number=53;五、運(yùn)行驗(yàn)證結(jié)果通過一個(gè)雙重環(huán)將51輪種每一輪所有指派的情況輸出,0代表正面朝上,1代表反面朝上,例如,第一輪以2為基數(shù),是2的倍數(shù)的翻牌,經(jīng)過第一輪后的結(jié)果為:0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ,即為正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 正 反 ;以此類推,第2輪以3為基數(shù),是3的倍數(shù)的翻牌。游戲經(jīng)過51輪后,最終輸出進(jìn)過51輪正面朝上即為0的有哪幾張牌。六、附錄或參考資料1.由機(jī)械工業(yè)出版社出版,由蘇任華等人編著的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)。2.由高等教育出版社出版,由譚浩強(qiáng)、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論