猴子選大王數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告內(nèi)附詳細(xì)注釋_第1頁
猴子選大王數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告內(nèi)附詳細(xì)注釋_第2頁
猴子選大王數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告內(nèi)附詳細(xì)注釋_第3頁
猴子選大王數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告內(nèi)附詳細(xì)注釋_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、猴子選大王數(shù)據(jù)構(gòu)造課程設(shè)計(jì)報告內(nèi)附詳盡說明猴子選大王數(shù)據(jù)構(gòu)造課程設(shè)計(jì)報告內(nèi)附詳盡說明4/4猴子選大王數(shù)據(jù)構(gòu)造課程設(shè)計(jì)報告內(nèi)附詳盡說明1.需求剖析問題定義:一堆猴子都有編號,編號是1,2,3n,這群猴子(n個)依據(jù)1-n的次序圍坐一圈,從第1個開始數(shù),每數(shù)到第m個,該猴子就要走開此圈,這樣挨次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。m,n鍵盤輸入,且mn,輸出為大王的猴子的號數(shù)。問題分析:依據(jù)任務(wù)描繪可知,編號是1,2,3n的一群猴子依據(jù)1-n的次序圍坐一圈,所以能夠用指針指向數(shù)組的方法給數(shù)組賦值,輸入n值和m值,為保證mn,用一個while()語句實(shí)現(xiàn),假如輸錯,報錯,再輸入。用fo

2、r循環(huán)實(shí)現(xiàn)猴子編號。從1開始數(shù)到m的猴子出列,即用指針挪動查找法將計(jì)數(shù)器數(shù)到m的指針指向的內(nèi)容變成0,用for循環(huán),直到只有一個元素不為0時,最后不為0的元素的值即為大王。實(shí)現(xiàn)這個程序功能需3個模塊,一個模塊用數(shù)組指針實(shí)現(xiàn)猴子編號,一個模塊用指針挪動查找法實(shí)現(xiàn)猴子出局,最后主模塊將前兩個模塊要用到的函數(shù),數(shù)組定義。詳盡步驟以下:第一步成立數(shù)組,填入猴子編號及猴子出局時報的數(shù)第二步從第一個猴子報數(shù)第三步數(shù)到m讓指針指向元素變成0第四步連續(xù)報數(shù),重復(fù)第三步2.綱領(lǐng)設(shè)計(jì)(流程圖)開始定義構(gòu)造體,變量Calloc()分派內(nèi)存For循環(huán)成立數(shù)組賦值實(shí)現(xiàn)猴子編號指針挪動查找Count=n-1猴子數(shù)數(shù)For

3、(i=0;count!=0;ptr2+If(Ptr2=ptr+)n)Ptr2=ptr;保證猴子圍成圈N*ptr2=0?i+i+Yi=m?NY*ptr2=i=0Count-Count=0?NY輸出大王號數(shù)break3.詳盡設(shè)計(jì)#include#include/使用calloc()函數(shù)voidFindKing_pointer(int,int,int*);/voidInitialize(int,int*);/初始化數(shù)組intmain()intm,n,*ptr;printf(輸入猴子數(shù)與出局時報的數(shù)scanf(%d%d,&n,&m);while(nm)printf(輸入數(shù)占有誤,請從頭輸入printf

4、(輸入猴子數(shù)與出局時報的數(shù)scanf(%d%d,&n,&m);ptr=(int*)calloc(n,sizeof(int);Initialize(n,ptr);FindKing_pointer(m,n,ptr);free(ptr);return0;/*挪動指針法找大王整形和指針型n);!n);n);在數(shù)組中挨次填入1,2,3,4,*/voidInitialize(intn,int*ptr)inti;for(i=0;in;i+)ptri=i+1;/*循環(huán)一次指針向后移一位,所指元素不為0時計(jì)數(shù)器加1.挪動指針,當(dāng)計(jì)數(shù)器數(shù)到m時將指針?biāo)冈卦O(shè)為0.*/voidFindKing_pointer(i

5、ntm,intn,int*ptr)inti,count,*ptr2;count=n-1;/count=0時停止循環(huán)就是只剩一個猴子時ptr2=ptr;/挪動ptr2進(jìn)行查找開始時ptr為多少/calloc()為指針種類的元素分派內(nèi)存時,元素被初始化為空指針for(i=0;count!=0;ptr2+)if(ptr2=ptr+n)ptr2=ptr;/*指針?biāo)冈夭粸?時計(jì)數(shù)器加1.*/if(*ptr2!=0)i+;/*計(jì)數(shù)器數(shù)到m時將指針?biāo)冈卦O(shè)為0*/if(i=m)*ptr2=i=0;count-;/用于停止循環(huán)/*最后不為0的元素的值即為大王的編號*/for(ptr2=ptr;ptr2+

6、)if(*ptr2!=0)printf(第%d個猴子是大王n,*ptr2);break;/*思想是猴子圍坐一圈,有N個猴子,開始數(shù)數(shù),數(shù)到第M個猴子,該猴子就出列,此后再從該猴子的下一個猴子開始數(shù)到第M個猴子,直到只剩下一個猴子時。該猴子就是所要選得大王*/4.結(jié)果分析設(shè)計(jì)總結(jié)在課程設(shè)計(jì)中,第一要看清問題,將問題要求理解透辟,在構(gòu)想要怎樣實(shí)現(xiàn),要用到哪些函數(shù),要用什么算法,在課程構(gòu)想中選算法是一個很重要的見解,只有確立用這么算法后才能接下來的工作,將流程圖畫在紙上,再挨次編寫代碼,在程序設(shè)計(jì)中,編寫代碼但是一個方面,調(diào)試才是重點(diǎn)。它是一個相當(dāng)繁瑣的過程,有很多新的問題需要被解決,但同時它也是一個比較重要的過程,由于在程序調(diào)試過程中,你會學(xué)到很多新的東西,進(jìn)而增添你編程的經(jīng)驗(yàn)。經(jīng)過本次實(shí)習(xí),溫固了數(shù)據(jù)構(gòu)造的

溫馨提示

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

最新文檔

評論

0/150

提交評論