數(shù)據(jù)結(jié)構(gòu)實驗約瑟夫問題實驗報告_第1頁
數(shù)據(jù)結(jié)構(gòu)實驗約瑟夫問題實驗報告_第2頁
數(shù)據(jù)結(jié)構(gòu)實驗約瑟夫問題實驗報告_第3頁
數(shù)據(jù)結(jié)構(gòu)實驗約瑟夫問題實驗報告_第4頁
數(shù)據(jù)結(jié)構(gòu)實驗約瑟夫問題實驗報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)實驗報告課程名稱數(shù)據(jù)結(jié)構(gòu)實驗名稱數(shù)據(jù)結(jié)構(gòu)試驗專業(yè)班級姓名學(xué)號實驗日期第11周星期日 節(jié)2012 2013學(xué)年度第 一 學(xué)期一、實驗?zāi)康?、用數(shù)組來實現(xiàn)約瑟夫問題二、實驗內(nèi)容1、試分別用線性表的向量存儲結(jié)構(gòu)和數(shù)組存儲結(jié)構(gòu)來實現(xiàn)約瑟夫(Josephu)問題。約瑟夫問題如下:設(shè)有n個人圍坐圓桌周圍。從某個位置上的人開始從1報數(shù),數(shù)到m的人便出列,下一個人(第m+1個)又從1報數(shù)開始,數(shù)到m的人便是第2個出列的人,依次類推,直到最 后一個人出列為止,這樣就可以得到一個人員排列的新次序。例如,n=8,m=4,從第1個人數(shù)起,得到的新次序為 48521376.三、實驗環(huán)境1、硬件配置:Pentiu

2、m (R) Dual-Core9 CUP E6500 2.93GHz , 1.96 的內(nèi)存2、軟件環(huán)境:Microsoft Windows XPProfessional Service Pack 3, Microsoft Visual C+ 6.0四、需求分析1、輸入的形式和輸入值的范圍:根據(jù)題目要求與提示輸入數(shù)據(jù)的總數(shù),間隔數(shù)和開始 計數(shù)的位置2、輸出的形式:輸出每個挑選的數(shù)據(jù)3、程序所能達到的功能: 從開始計數(shù)的位置起,每隔間隔數(shù), 就把該位置的數(shù)字輸出, 同時此數(shù)被釋放掉, 然后從繼續(xù)此操作, 若到數(shù)據(jù)結(jié)束位置, 則重新開始進行。程序結(jié)束的 條件是所有的數(shù)據(jù)輸出,釋放掉。4、測試數(shù)據(jù):輸

3、入一個鏈表,首先輸入數(shù)據(jù)總數(shù),然后輸入間隔數(shù),再輸入起始位置, 若起始位置大于數(shù)據(jù)總數(shù), 會提示錯誤,要求重新輸入起始位置, 直至起始位置不大于總數(shù)。 然后開始輸入數(shù)據(jù),數(shù)據(jù)以空格隔開,最后輸出結(jié)構(gòu)。如:輸入數(shù)據(jù)總數(shù)8,間隔數(shù)4,起始位置1 ,輸入數(shù)據(jù)1 2 3 4 5 6 7 8輸出的鏈表為:4 8 5 2 1 3 7 6五、概要設(shè)計為了實現(xiàn)上述操作,應(yīng)以數(shù)組結(jié)構(gòu)。1、本程序包含二個模塊:(1)主程序模塊;3、流程圖輸入數(shù)據(jù)的總數(shù)num間隔數(shù)count起始位直start當(dāng) Start>num輸入總數(shù)num輸入起始位直start當(dāng) I<num按輸入順序?qū)⑤斎氲臄?shù)字存進a數(shù)組中設(shè)定這

4、個循環(huán)是死循環(huán)I+_I=num .一一 是否I=i%numJ" _A_i!=0 一_是否I+一 .j二count. 一, 一 一是否Bk+=aiAi=0J=0_一K=num是否跳出循環(huán)當(dāng) K<num輸出數(shù)組B六、詳細設(shè)計主函數(shù)詳解#include"stdio.hvoid main()int a10,b10,i,j,k,count,num,start;printf(" 請輸入總數(shù):");scanf("%d",&num);printf("請輸入間隔數(shù):");scanf("%d",&am

5、p;count);printf("請輸入起始位置:");scanf("%d",&start);printf("n");while(start>num)printf("請重新輸入:n");printf("請輸入總數(shù):");scanf("%d",&num);printf("請輸入起始位置:");scanf("%d",&start);printf("請輸入數(shù)據(jù):n");for (i=0;i&l

6、t;num;i+)scanf("%d”,&ai);printf("n");i=start-1;/為了保持起始條件匹配k=0;for(j=1;)/為死循環(huán)i+;if (i=num)為了實現(xiàn)每次i的循環(huán)遍歷A數(shù)組i=i%num;if (ai!=0)只有ai不為零時,才能j+j+;if (j=count)達至U間隔數(shù)bk+=ai; 將a數(shù)組的彳I賦給b數(shù)組ai=0;j=0;/使記錄間隔的重新開始計數(shù)if (k=num)/ 當(dāng)b數(shù)組有了 a數(shù)據(jù)全部數(shù)據(jù)時,結(jié)束循環(huán) break;printf(" 標(biāo)準(zhǔn)順序為:n");for(k=0;k<nu

7、m;k+)printf(" %d",bk);printf("n");3、完整的程序:#include"stdio.h"void main()int a10,b10,i,j,k,count,num,start;printf("請輸入總數(shù):");scanf("%d",&num);printf(" 請輸入間隔數(shù):");scanf("%d",&count);printf("請輸入起始位置:");scanf("%d&qu

8、ot;,&start);printf("n");while(start>num)printf("請重新輸入:n");printf("請輸入總數(shù):");scanf("%d",&num);printf("請輸入起始位置:");scanf("%d",&start);printf("請輸入數(shù)據(jù):n");for (i=0;i<num;i+)scanf("%d”,&ai);printf("n")

9、;i=start-1;k=0;for(j=1;)i+;if (i=num)i=i%num;if (ai!=0)j+;if (j=count)bk+=ai;ai=0;j=0;if (k=num)break;printf("標(biāo)準(zhǔn)順序為:n");for(k=0;k<num;k+)printf(" %d",bk);printf("n");七、程序使用說明及測試結(jié)果1、程序使用說明(1)本程序的運行環(huán)境為 VC6.0。(2)進入演示程序后即顯示提示信息:輸入一個鏈表,首先輸入數(shù)據(jù)總數(shù), 然后輸入間隔數(shù),再輸入起始位置,若起始位置大 于數(shù)據(jù)

10、總數(shù),會提示錯誤,要求重新輸入起始位置,直至起始位置不大于總數(shù)。然后開始輸 入數(shù)據(jù),數(shù)據(jù)以空格隔開,最后輸出結(jié)構(gòu)。2.數(shù)據(jù)輸入如:輸入數(shù)據(jù)總數(shù)8,間隔數(shù)4,起始位置1,輸入數(shù)據(jù)1 2 3 4 5 6 7 8輸出的鏈表為:4 8 5 2 1 3 7 63、調(diào)試中的錯誤及解決辦法。開始遇到很多問題,但是重新改善一下編程的思路,通過逐步的調(diào)試可以看到正確的結(jié) 果。數(shù)據(jù)輸入的流程如下運行界面先輸入8后,回車:XDociuent s再輸入間隔數(shù)4后回車:輸入起始位置。:Dacuen*w and 5Mtin/Adaim區(qū)teton桌面'實用二罅表表示茯 法DeL. ht輸人總市"C:D&

11、#187;cii»ents 叼口 5Mtin/'ASini品泉面'實用二'躥表表示茯 法DeL._*H:4置 ,數(shù)位二 莪隔始據(jù) 莒向起致 R人入入 二1一二* .), 鬻請胃輸入數(shù)據(jù)1 2 3 4 5 6 7 8,回車:一"C; Dacu*ents and 5近11小號人(1>1也3七工事t0工泉面實用二罅表表示津 法1Deb. . .1 2 3 4 S a 71 2 3 4 5 fc 7 師選后的結(jié)果為4 8 S 2 1 3 7Press an/ kevcont i nue篩選后的結(jié)果就如屏幕所示若中途輸入的起始位置為 9,回車,會提示如下"C: D»cii*enTs and 5Mtin/'ASini品tmtoi'泉面'實用二'罅表表示茯 法DeL總.問起啕 人入入位新t 9蜘4位置小篇髓下輸入n八、實驗小結(jié):你在編程過程中花時多少?總共用來將近2小時多少時間在紙上設(shè)計?大約有半個小時在紙上設(shè)計多少時間上機輸入和調(diào)試?45 分鐘左右多少

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論