版權(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> 姓名:xxx 學(xué)號:xxxx</p><p> 院系:計算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè):計科 </p><p> 年級:
2、 指導(dǎo)老師:xxxx</p><p> 目 錄 </p><p> 1.課程設(shè)計的目的……………………………………x</p><p> 2.需求分析……………………………………………x</p><p> 3.課程設(shè)計報告內(nèi)容…………………………………x</p><p>
3、 3.1.概要設(shè)計…………………………………x</p><p> 3.2.詳細(xì)設(shè)計…………………………………x</p><p> 3.3.調(diào)試分析…………………………………x</p><p> 3.4.用戶手冊…………………………………x</p><p> 3.5.測試結(jié)果…………………………………x</p><p
4、> 3.6.程序清單…………………………………x</p><p> 4.小結(jié)……………………………………………x</p><p> 5.參考文獻(xiàn)…………………………………x</p><p><b> 1.課程設(shè)計的目的</b></p><p> (1) 熟練使用 C 語言編寫程序,解決實際問題;</
5、p><p> (2) 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨(dú)立分析和設(shè)計能力;</p><p> (3) 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;</p><p> (4) 提高綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的能力;</p><p><b> 2.需求分析</b&
6、gt;</p><p> 編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;直到以52為基數(shù)的翻過,輸出:這時輸出正面向上的牌有哪些?</p><p><b> 紙牌游戲的設(shè)計</b></p><p><b> 3.
7、1概要設(shè)計</b></p><p> 建立兩個數(shù)組,一個存放52張牌的編號,另外一個存放相應(yīng)編號的紙牌的翻牌記錄:data[52],flag[52]</p><p> 定義一個全局變量作為正反面的判斷條件:Flag= -1</p><p><b> 3.2詳細(xì)設(shè)計</b></p><p> //建立兩
8、個數(shù)組,一個存放52張牌的編號,另外一個存放相應(yīng)編號的紙牌的翻牌記錄。</p><p> int i,j,data[52],flag[52],choice,num;</p><p><b> char m,n;</b></p><p> for(i=1;i<=52;i++)</p><p><b>
9、 {</b></p><p> data[i-1]=i;//錄入52張牌的編號。</p><p> flag[i-1]=0;//將相應(yīng)編號紙牌的翻牌數(shù)初始化為0。</p><p><b> }</b></p><p> for(i=2;i<=52;i++)//外循環(huán),基數(shù)循環(huán)。</p&g
10、t;<p><b> {</b></p><p> for(j=1;j<=52;j++)//內(nèi)循環(huán),基數(shù)倍數(shù)條件判斷。</p><p><b> {</b></p><p> if(j%i==0)</p><p><b> {</b></p&
11、gt;<p> data[j-1]=data[j-1]*Flag;//將翻轉(zhuǎn)后的結(jié)果更新data中的數(shù)據(jù)。 </p><p> flag[j-1]++;//翻牌一次,即記入flag數(shù)組中。</p><p><b> }</b></p><p><b> }</b></p><p&g
12、t;<b> }</b></p><p><b> case 1:{</b></p><p> printf("---題目---\n");</p><p> printf("********************************************************
13、******\n");</p><p> printf("編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張
14、牌;直到以52為基數(shù)的翻過,輸出:這時輸出正面向上的牌有哪些?\n");</p><p> printf("****************************************************************");</p><p> printf("\n");</p><p> pr
15、intf("\n");</p><p> printf("是否回到主菜單?(Y/N):");//在每個獨(dú)立功能后添加了獨(dú)立的判斷語句,從而可以選擇性的回到主菜單。</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y&
16、#39;)break;</p><p> else if(n=='N')</p><p> choice=0;//0作為整個界面的循環(huán)結(jié)束條件,所以直接將choice=0,即可結(jié)束循環(huán)。</p><p> else printf("**********(提示:輸入錯誤,默認(rèn)為繼續(xù)。)***********\n"); }bre
17、ak;</p><p><b> case 2:{</b></p><p> printf("以下為翻牌記錄:\n");</p><p> printf("\t----第1張牌翻過0次。----\t");</p><p> printf("\n");&l
18、t;/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]);</p>
19、<p> if(i%2==0)</p><p> printf("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):");</
20、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></p>
21、<p> else printf("**********(提示:輸入錯誤,默認(rèn)為繼續(xù)。)*********** **\n"); }break;</p><p><b> case 3:{</b></p><p><b> do{</b></p><p> printf("\
22、t請輸入您想查詢的紙牌編碼:");</p><p> scanf("%d",&num);</p><p> if(num<1&&num>52)//紙牌的序號為1-52,所以其他數(shù)值都為輸入錯誤。</p><p> printf("\t輸入錯誤!\n");</p>
23、<p><b> else</b></p><p><b> {</b></p><p> printf("\t紙牌翻轉(zhuǎn)記錄如下:\n");</p><p> printf("\t紙牌翻轉(zhuǎn)次數(shù)為%d\n",flag[num-1]);</p><
24、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></p><p> printf("\t在以編號%d為基數(shù)時此紙牌有一次翻轉(zhuǎn)
25、。\n",j); }</p><p><b> }</b></p><p><b> }</b></p><p> printf("需要繼續(xù)查詢紙牌編碼嗎?(Y/N):");//獨(dú)立的判斷語句,作為do-while的結(jié)束條件,從而可循環(huán)的查詢紙牌編碼。</p><p&
26、gt; m=getchar();</p><p> m=getchar();</p><p> if(m!='Y'&&m!='N')</p><p> printf("************(提示:輸入錯誤,默認(rèn)為跳過。)******** **\n");</p><p&
27、gt; }while(m=='Y');</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y')break;</p><p
28、> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("**************(提示:輸入錯誤,默認(rèn)為繼續(xù)。)***** *****\n");</p><p><b> }break;</b>
29、;</p><p><b> case 4:{</b></p><p> printf("\t最后所有正面向上的牌有:\n");</p><p> for(i=0;i<52;i++)</p><p><b> {</b></p><p>
30、if(data[i]>0)//所有大于0的數(shù)即為正面向上的紙牌。</p><p> printf(" 第%d張牌 ",i+1);</p><p><b> }</b></p><p> printf("\n");</p><p> printf("是否回到主
31、菜單?(Y/N):");</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
32、;</b></p><p> else printf("***************(提示:輸入錯誤,默認(rèn)為繼續(xù)。)**** ******\n");</p><p><b> }break;</b></p><p> case 0:break;</p><p> default:
33、printf("\t輸入錯誤,請重新輸入!\n");</p><p><b> }</b></p><p> }while(choice!=0);//0作為整個循環(huán)的結(jié)束條件。</p><p> printf("*******************程序結(jié)束,謝謝使用********************\
34、n"); }</p><p><b> 3.3調(diào)試分析:</b></p><p><b> 選擇1,顯示題目</b></p><p> 選擇2,查看所有翻牌記錄</p><p> 選擇3,查看指定紙牌記錄,如18</p><p> 選擇4,顯示最后結(jié)果&l
35、t;/p><p><b> 程序清單:</b></p><p> #include<stdio.h></p><p> #include<windows.h></p><p> #define Flag -1//定義一個全局變量作為正反面的判斷條件。</p><p>
36、 void main()</p><p><b> {</b></p><p> int i,j,data[52],flag[52],choice,num;//建立兩個數(shù)組,一個存放52張牌的編號,另外一個存放相應(yīng)編號的紙牌的翻牌記錄。</p><p><b> char m,n;</b></p>&l
37、t;p> for(i=1;i<=52;i++)</p><p><b> {</b></p><p> data[i-1]=i;//錄入52張牌的編號。</p><p> flag[i-1]=0;//將相應(yīng)編號紙牌的翻牌數(shù)初始化為0。</p><p><b> }</b><
38、;/p><p> for(i=2;i<=52;i++)//外循環(huán),基數(shù)循環(huán)。</p><p><b> {</b></p><p> for(j=1;j<=52;j++)//內(nèi)循環(huán),基數(shù)倍數(shù)條件判斷。</p><p><b> {</b></p><p>
39、if(j%i==0)</p><p><b> {</b></p><p> data[j-1]=data[j-1]*Flag;//將翻轉(zhuǎn)后的結(jié)果更新data中的數(shù)據(jù)。 </p><p> flag[j-1]++;//翻牌一次,即記入flag數(shù)組中。</p><p><b> }</b>&l
40、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> do{</b></p><p> printf("\t-----------------------------------------------------
41、------\n");</p><p> printf("\t-----------------------------------------------------------\n");</p><p> printf("\t--------- 歡迎進(jìn)入紙牌游戲 -----------\n"); </p><p&
42、gt; printf("\t--------- 1.查看題目 -----------\n");</p><p> printf("\t--------- 2.查看所有紙牌的翻牌次數(shù) -----------\n");</p><p> printf("\t--------- 3.查看指定編號紙牌翻牌記錄 -----------\n&qu
43、ot;); </p><p> printf("\t--------- 4.查看最終正面向上的紙牌編號 -----------\n"); </p><p> printf("\t--------- 0.按0鍵結(jié)束 -----------\n"); </p><p> printf("\t------------
44、-----------------------------------------------\n");</p><p> printf("\t-----------------------------------------------------------\n");</p><p> printf("請輸入您的選擇(數(shù)字0-4):"
45、;);//主界面</p><p> scanf("%d",&choice);</p><p> switch(choice)//通過switch語句進(jìn)行功能的選擇</p><p><b> {</b></p><p><b> case 1:{</b></p
46、><p> printf("---題目---\n");</p><p> printf("**************************************************************\n");</p><p> printf("編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),
47、是2的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,");</p><p> printf("直到最后一張牌;直到以52為基數(shù)的翻過,輸出:這時輸出正面向上的牌有哪些?\n");</p><p> printf("***
48、*************************************************************");</p><p> printf("\n");</p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):");/
49、/在每個獨(dú)立功能后添加了獨(dú)立的判斷語句,從而可以選擇性的回到主菜單。</p><p> n=getchar();</p><p> n=getchar();</p><p> if(n=='Y')break;</p><p> else if(n=='N')</p><p>
50、choice=0;//0作為整個界面的循環(huán)結(jié)束條件,所以直接將choice=0,即可結(jié)束循環(huán)。</p><p> else printf("**********(提示:輸入錯誤,默認(rèn)為繼續(xù)。)***********\n"); }break;</p><p><b> case 2:{</b></p><p> prin
51、tf("以下為翻牌記錄:\n");</p><p> printf("\t----第1張牌翻過0次。----\t");</p><p> printf("\n");</p><p> printf("\n");</p><p> for(i=1;i<
52、52;i++)</p><p><b> {</b></p><p> printf("\t----第%d張牌翻過%d次。----\t",i+1,flag[i]);</p><p> if(i%2==0)</p><p> printf("\n");</p>
53、<p><b> }</b></p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=getchar();</p><
54、;p> if(n=='Y')break;</p><p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("**********(提示:輸入錯誤,默認(rèn)為繼續(xù)。)*********** **\n");
55、 }break;</p><p><b> case 3:{</b></p><p><b> do{</b></p><p> printf("\t請輸入您想查詢的紙牌編碼:");</p><p> scanf("%d",&num);<
56、/p><p> if(num<1&&num>52)//紙牌的序號為1-52,所以其他數(shù)值都為輸入錯誤。</p><p> printf("\t輸入錯誤!\n");</p><p><b> else</b></p><p><b> {</b>&l
57、t;/p><p> printf("\t紙牌翻轉(zhuǎn)記錄如下:\n");</p><p> printf("\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> {<
58、/b></p><p> if(num%j==0)</p><p><b> {</b></p><p> printf("\t在以編號%d為基數(shù)時此紙牌有一次翻轉(zhuǎn)。\n",j); }</p><p><b> }</b></p><p>&
59、lt;b> }</b></p><p> printf("需要繼續(xù)查詢紙牌編碼嗎?(Y/N):");//獨(dú)立的判斷語句,作為do-while的結(jié)束條件,從而可循環(huán)的查詢紙牌編碼。</p><p> m=getchar();</p><p> m=getchar();</p><p> if(m!
60、='Y'&&m!='N')</p><p> printf("************(提示:輸入錯誤,默認(rèn)為跳過。)******** **\n");</p><p> }while(m=='Y');</p><p> printf("是否回到主菜單?(Y/N):&q
61、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>
62、</p><p> else printf("**************(提示:輸入錯誤,默認(rèn)為繼續(xù)。)***** *****\n");</p><p><b> }break;</b></p><p><b> case 4:{</b></p><p> printf
63、("\t最后所有正面向上的牌有:\n");</p><p> for(i=0;i<52;i++)</p><p><b> {</b></p><p> if(data[i]>0)//所有大于0的數(shù)即為正面向上的紙牌。</p><p> printf(" 第%d張牌 &q
64、uot;,i+1);</p><p><b> }</b></p><p> printf("\n");</p><p> printf("是否回到主菜單?(Y/N):");</p><p> n=getchar();</p><p> n=get
65、char();</p><p> if(n=='Y')break;</p><p> else if(n=='N')</p><p><b> choice=0;</b></p><p> else printf("***************(提示:輸入錯誤,默認(rèn)為繼
66、續(xù)。)**** ******\n");</p><p><b> }break;</b></p><p> case 0:break;</p><p> default:printf("\t輸入錯誤,請重新輸入!\n");</p><p><b> }</b>&
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(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點(diǎn)游戲源代碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
評論
0/150
提交評論