數據結構課程設計-紙牌游戲_第1頁
數據結構課程設計-紙牌游戲_第2頁
數據結構課程設計-紙牌游戲_第3頁
數據結構課程設計-紙牌游戲_第4頁
數據結構課程設計-紙牌游戲_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 數據結構課程設計 紙牌游戲姓名:xxx 學號:xxxx院系:計算機科學與技術學院 專業(yè):計科 年級:大三 指導老師:xxxx 目 錄 1.課程設計的目的x2.需求分析x3.課程設計報告內容x 3.1.概要設計x 3.2.詳細設計x 3.3.調試分析x 3.4.用戶手冊x 3.5.測試結果x 3.6.程序清單x 4.小結x 5.參考文獻x1.課程設計的目的(1) 熟練使用 C 語言編寫程序,解決實際問題;(2) 了解并掌握數據結構與算法的設計方法,具備初步的獨立分析和設計能力;(3) 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;(4) 提高綜合運用所學的理論知識和

2、方法獨立分析和解決問題的能力;2.需求分析編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,直到最后一張牌;直到以52為基數的翻過,輸出:這時輸出正面向上的牌有哪些?3. 紙牌游戲的設計3.1概要設計建立兩個數組,一個存放52張牌的編號,另外一個存放相應編號的紙牌的翻牌記錄:data52,flag52定義一個全局變量作為正反面的判斷條件:Flag= -1Case3:輸出記錄Case2:所有牌翻牌記錄Case1:輸出題目查看翻牌的最后結果查看指定紙牌翻牌記錄查看所有牌的翻牌記錄查看題目歡迎來到紙牌游

3、戲Case4:顯示最后結果 開始一維數組data52,flag52;并將flag初始化為0表示正面朝上YYY N N Nj<=52輸出正面朝上的卡牌翻牌。如果flagj-1為0則變?yōu)?,否則變?yōu)? j+ i+ 結束j%i=0 j=ii<=52 i=23.2詳細設計/建立兩個數組,一個存放52張牌的編號,另外一個存放相應編號的紙牌的翻牌記錄。int i,j,data52,flag52,choice,num;char m,n;for(i=1;i<=52;i+)datai-1=i;/錄入52張牌的編號。flagi-1=0;/將相應編號紙牌的翻牌數初始化為0。for(i=2;i<

4、;=52;i+)/外循環(huán),基數循環(huán)。for(j=1;j<=52;j+)/內循環(huán),基數倍數條件判斷。if(j%i=0)dataj-1=dataj-1*Flag;/將翻轉后的結果更新data中的數據。 flagj-1+;/翻牌一次,即記入flag數組中。case 1:printf("-題目-n");printf("*n");printf("編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,");printf("直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,");

5、printf("直到最后一張牌;直到以52為基數的翻過,輸出:這時輸出正面向上的牌有哪些?n");printf("*");printf("n");printf("n");printf("是否回到主菜單?(Y/N):");/在每個獨立功能后添加了獨立的判斷語句,從而可以選擇性的回到主菜單。n=getchar();n=getchar();if(n='Y')break;else if(n='N')choice=0;/0作為整個界面的循環(huán)結束條件,所以直接將choice=

6、0,即可結束循環(huán)。else printf("*(提示:輸入錯誤,默認為繼續(xù)。)*n"); break;case 2:printf("以下為翻牌記錄:n");printf("t-第1張牌翻過0次。-t");printf("n");printf("n");for(i=1;i<52;i+)printf("t-第%d張牌翻過%d次。-t",i+1,flagi);if(i%2=0)printf("n");printf("n");printf

7、("是否回到主菜單?(Y/N):");n=getchar();n=getchar();if(n='Y')break;else if(n='N')choice=0;else printf("*(提示:輸入錯誤,默認為繼續(xù)。)* *n"); break;case 3:doprintf("t請輸入您想查詢的紙牌編碼:");scanf("%d",&num);if(num<1&&num>52)/紙牌的序號為1-52,所以其他數值都為輸入錯誤。printf(&

8、quot;t輸入錯誤!n");elseprintf("t紙牌翻轉記錄如下:n");printf("t紙牌翻轉次數為%dn",flagnum-1);for(j=2;j<=52;j+)/內循環(huán),基數倍數條件判斷。if(num%j=0)printf("t在以編號%d為基數時此紙牌有一次翻轉。n",j); printf("需要繼續(xù)查詢紙牌編碼嗎?(Y/N):");/獨立的判斷語句,作為do-while的結束條件,從而可循環(huán)的查詢紙牌編碼。m=getchar();m=getchar();if(m!='

9、Y'&&m!='N')printf("*(提示:輸入錯誤,默認為跳過。)* *n");while(m='Y');printf("是否回到主菜單?(Y/N):");n=getchar();n=getchar();if(n='Y')break;else if(n='N')choice=0;else printf("*(提示:輸入錯誤,默認為繼續(xù)。)* *n");break;case 4:printf("t最后所有正面向上的牌有:n"

10、);for(i=0;i<52;i+)if(datai>0)/所有大于0的數即為正面向上的紙牌。printf(" 第%d張牌 ",i+1);printf("n");printf("是否回到主菜單?(Y/N):");n=getchar();n=getchar();if(n='Y')break;else if(n='N')choice=0;else printf("*(提示:輸入錯誤,默認為繼續(xù)。)* *n");break;case 0:break;default:printf

11、("t輸入錯誤,請重新輸入!n");while(choice!=0);/0作為整個循環(huán)的結束條件。printf("*程序結束,謝謝使用*n"); 3.3調試分析:選擇1,顯示題目選擇2,查看所有翻牌記錄選擇3,查看指定紙牌記錄,如18選擇4,顯示最后結果4. 程序清單:#include<stdio.h>#include<windows.h>#define Flag -1/定義一個全局變量作為正反面的判斷條件。void main()int i,j,data52,flag52,choice,num;/建立兩個數組,一個存放52張牌的編

12、號,另外一個存放相應編號的紙牌的翻牌記錄。char m,n;for(i=1;i<=52;i+)datai-1=i;/錄入52張牌的編號。flagi-1=0;/將相應編號紙牌的翻牌數初始化為0。for(i=2;i<=52;i+)/外循環(huán),基數循環(huán)。for(j=1;j<=52;j+)/內循環(huán),基數倍數條件判斷。if(j%i=0)dataj-1=dataj-1*Flag;/將翻轉后的結果更新data中的數據。 flagj-1+;/翻牌一次,即記入flag數組中。doprintf("t-n");printf("t-n");printf(&quo

13、t;t- 歡迎進入紙牌游戲 -n"); printf("t- 1.查看題目 -n");printf("t- 2.查看所有紙牌的翻牌次數 -n");printf("t- 3.查看指定編號紙牌翻牌記錄 -n"); printf("t- 4.查看最終正面向上的紙牌編號 -n"); printf("t- 0.按0鍵結束 -n"); printf("t-n");printf("t-n");printf("請輸入您的選擇(數字0-4):"

14、);/主界面scanf("%d",&choice);switch(choice)/通過switch語句進行功能的選擇case 1:printf("-題目-n");printf("*n");printf("編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,");printf("直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,");printf("直到最后一張牌;直到以52為基數的翻過,輸出:這時輸出正面向上的牌有哪些?n"

15、;);printf("*");printf("n");printf("n");printf("是否回到主菜單?(Y/N):");/在每個獨立功能后添加了獨立的判斷語句,從而可以選擇性的回到主菜單。n=getchar();n=getchar();if(n='Y')break;else if(n='N')choice=0;/0作為整個界面的循環(huán)結束條件,所以直接將choice=0,即可結束循環(huán)。else printf("*(提示:輸入錯誤,默認為繼續(xù)。)*n"); b

16、reak;case 2:printf("以下為翻牌記錄:n");printf("t-第1張牌翻過0次。-t");printf("n");printf("n");for(i=1;i<52;i+)printf("t-第%d張牌翻過%d次。-t",i+1,flagi);if(i%2=0)printf("n");printf("n");printf("是否回到主菜單?(Y/N):");n=getchar();n=getchar();if(

17、n='Y')break;else if(n='N')choice=0;else printf("*(提示:輸入錯誤,默認為繼續(xù)。)* *n"); break;case 3:doprintf("t請輸入您想查詢的紙牌編碼:");scanf("%d",&num);if(num<1&&num>52)/紙牌的序號為1-52,所以其他數值都為輸入錯誤。printf("t輸入錯誤!n");elseprintf("t紙牌翻轉記錄如下:n");

18、printf("t紙牌翻轉次數為%dn",flagnum-1);for(j=2;j<=52;j+)/內循環(huán),基數倍數條件判斷。if(num%j=0)printf("t在以編號%d為基數時此紙牌有一次翻轉。n",j); printf("需要繼續(xù)查詢紙牌編碼嗎?(Y/N):");/獨立的判斷語句,作為do-while的結束條件,從而可循環(huán)的查詢紙牌編碼。m=getchar();m=getchar();if(m!='Y'&&m!='N')printf("*(提示:輸入錯誤,默認為跳過。)* *n");while(m='Y

溫馨提示

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

評論

0/150

提交評論