猴子選大王課程教學(xué)設(shè)計報告_第1頁
猴子選大王課程教學(xué)設(shè)計報告_第2頁
猴子選大王課程教學(xué)設(shè)計報告_第3頁
猴子選大王課程教學(xué)設(shè)計報告_第4頁
猴子選大王課程教學(xué)設(shè)計報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-*EASr CHINA INSTITUTE OF TECHNOLOGY課程設(shè)計報告課程設(shè)計題目:猴子選大王學(xué)生姓名:吳兆專業(yè):軟件工程班級:1321813學(xué)號:201320181306指導(dǎo)教師:吳建東2015年1月9日東華理工大學(xué)目錄一:需求分析1 .問題描述2 .基本要求3 .需求分析二:概念設(shè)計三:詳細(xì)設(shè)計四:調(diào)試分析和測試結(jié)果五:總結(jié)六:源代碼一:需求分析1 .問題描述一堆猴子都有編號,編號是1, 2, 3m ,這群猴子(m個)按照1-m 的順序圍坐一圈,從第1開始數(shù),每數(shù)到第N個,該猴子就要離開此圈,這樣依 次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。2 .基本要求輸入數(shù)據(jù):

2、輸入m,n m,n為整數(shù),n<m輸出形式:中文提示按照 m個猴子,數(shù)n個數(shù)的方法,輸出為大王的 猴子是幾號,建立一個函數(shù)來實現(xiàn)此功能。3 .需求分析1. 輸入數(shù)據(jù)m,n。2. 計算出最終猴子大王的序號。3. 模擬出整個過程|4. 找到合適的數(shù)據(jù)結(jié)構(gòu)處理這個問題。5. 找到正確的方法解決這個問題。二:概念設(shè)計這個問題屬于約瑟夫環(huán)問題,根據(jù)問題描述得知,該問題中m個猴子 圍坐在一群形成首尾相接的環(huán),因此可用循環(huán)鏈表解決。從第n個猴 子開始出列相當(dāng)于從鏈表中刪除一個節(jié)點。 該程序主要有三個模塊組 成,建立循環(huán)鏈表,報數(shù)利用循環(huán)鏈表實現(xiàn)猴子的出列,最終剩下的 猴子即猴王。具體步驟如下:第一步首先

3、創(chuàng)建循環(huán)鏈表。第二步 向鏈表中填入猴子的編號。第三步 找第一個開始報數(shù)的猴子。第四步數(shù)到n讓這個猴子出列。第五步 接著開始報數(shù),重復(fù)第四步,直到剩下最后一個猴子,就是大王。*程序流程圖如下:開始進(jìn)彳1 1-m的報數(shù)刪除第n只猴子剩下的猴子 數(shù)是否為旦TH輸出猴子大王的序號:詳細(xì)設(shè)計1 .程序中使用的存儲結(jié)構(gòu)struct Lint num;struct L *next;;int n;int i=0;2 .程序中使用的循環(huán)結(jié)構(gòu)報數(shù)為m的退出.struct L *LisDelete(struct L *head,int m)/ struct L *p,*q;int j=0;p=head;i=i+1;

4、if(p->next=head) return(p);while(j<m-2)p=p->next;j=j+1;q=p->next;p->next=q->next;head=p->next;printf("%d第個猴子離開.n",i,q->num);free(q);LisDelete(head,m);3 .主函數(shù)void main()struct L *head;struct L *p;int m,N;printf("*n");printf("猴子選大王:n");printf("

5、一堆猴子都有編號,編號1,2,3m,這群猴子(m個)按照1-mn");printf("的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n(n<m)個,該猴子就要 n");printf(" 離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該n");printf(" 猴子為大王n");printf("I*n");printf("輸入n(所有猴子的總數(shù)):");scanf("%d",&N);printf("輸入m皚開的猴子所報的數(shù)):");s

6、canf("%d",&m);printf("I*n");if (m>N|m<=0|N<=0)ERROR()elseif(m=1)printf(" 結(jié)果:第個猴子為大王.n",N);elsehead=creat(N);printf(" 過程:n");p=LisDelete(head,m);printf("I*n");printf("結(jié)果:第於猴子為大王.n",p->num);printf("I*n");四:調(diào)試分析和測試結(jié)果n

7、<n<ra>削依序圍湮一轡,履1 與開止滑,這璋依萩2旨為大王-*TG:EZC+ +J5ZD&bugW-FX±.exe'三族卅,三 二隹同圉大 選-隹為 子順開子 猴的高;都Kt,子這口BF 賈次 有.依X M X3cme MM KN KX,這群猴中吟>第n<nS花孩猴學(xué)就要 不下最后一只爛對該r文匚/ n 3每圈能酬撇認(rèn)n=* = =十 X * *: *1 *: *>!:* = * IK W/ /:Kb:* *< It *=*:«* 十 *將猴子順序編號為.123456787 10 11 12 13 14 15 1

8、6 17 18 1? 20過程:弄個才好®第1批、派子宣開* 英15小掾干崗開.第空個子鈔,第6個狷子帶開.第12,、強于離開.第蠅八千高開.更工3八殘子 狗拼首例入法研± =-5個猴子圖開.第唾t患子商開室冬鬼子離開.拿啖堡*的1個felSfh款的琳子離開. 密e個眼子跳開. 第加小熊于離開. 示個阿子再不 鬻戲壬雌第2個優(yōu)強E 幼”: 第交麻子離開. 籍.個福子離開.吉果,第7個猴子為大王.I'oso any key 4口 coni;iruo慳狗拼音藕人士1得到了預(yù)期的結(jié)果五:總結(jié)本次課程設(shè)計,參考了相關(guān)教科書和參考書對二分法查找與各種排序方法的 描述,對相關(guān)功

9、能所需結(jié)構(gòu)體和函數(shù)有了初步構(gòu)思之后,經(jīng)過代碼的輸入、語法 改錯,調(diào)試執(zhí)行等過程,完成了一個簡單的功能系統(tǒng)。通過一周時間,從初步思路形成到基本功能完成,對數(shù)據(jù)結(jié)構(gòu)設(shè)計實踐與應(yīng) 用部分基本了解了。從本次課程設(shè)計我覺得我應(yīng)該把所學(xué)基礎(chǔ)知識與具體問題實 踐結(jié)合,基本知識要扎實,對待問題要各方面分析。我們應(yīng)該通過多次實踐數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計是一種鍛煉人清晰思路的科目, 讓自己的知識得到鞏固。六:源代碼#include <stdio.h>#include <malloc.h>#define NULL 0#define LEN sizeof(struct L) struct Lint

10、num;struct L *next;;int n;int i=0;struct L *creat(int N)建立動態(tài)循環(huán)鏈表 |printf("將猴子順序編號為:n");struct L *head;struct L *p1,*p2;n=0;p1=p2=(struct L *)malloc(LEN);p1->num=1;printf("%d ",p1->num);head=NULL;while(p1->num<=N)n=n+1;if(n=1) head=p1;else p2->next=p1;p2=p1;p1=(stru

11、ct L *)malloc(LEN);p1->num=n+1;if(p1->num<=N)printf("%d ",p1->num); ,p2->next=head;尾指針指向頭指針.printf("n");printf("*n"); printf("n");return(head);*報數(shù)為m的退出.struct L *LisDelete(struct L *head,int m)/ struct L *p,*q;int j=0;p=head;i=i+1;if(p->next=

12、head) return(p);while(j<m-2)p=p->next;j=j+1;q=p->next;p->next=q->next;head=p->next;printf("%d第個猴子離開.n",i,q->num);free(q);LisDelete(head,m);ERROR() Iprintf("m>N 或者 m<=0或者 N<=0! ERROR!n");void main()struct L *head;struct L *p;int m,N;print*”*n");p

13、rintf("猴子選大王:n");printf("一堆猴子都有編號,編號 1,2,3m ,這群猴子(m個)按照1-mn");printf("的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n(n<m)個,該猴子就要 n");printf("離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該n");printf("猴子為大王n");printf("* n");printf("輸入n(所有猴子的總數(shù)):");scanf("%d",&N);printf("輸入m皚開的猴子所報的數(shù)):");scanf("%d",&m);printf("I*n");if (m>N|m<=0|N<=0) E

溫馨提示

  • 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

提交評論