版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版校企合作數(shù)字內(nèi)容制作與傳播技能培訓(xùn)協(xié)議2篇
- 二零二五年度股權(quán)代持資產(chǎn)監(jiān)管委托協(xié)議3篇
- 2025版金屬礦床探礦權(quán)轉(zhuǎn)讓合同協(xié)議3篇
- 2025版消防技術(shù)服務(wù)與咨詢合同3篇
- 二零二五年度人工智能教育平臺個人技術(shù)入股合同2篇
- 垃圾食品我不吃安全教育
- 二零二五年度智能家居系統(tǒng)定制個人房屋裝修合同范本2篇
- 二零二五版物業(yè)服務(wù)行業(yè)員工保密協(xié)議規(guī)范3篇
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)股權(quán)投資及投資合同規(guī)范3篇
- 二零二五版現(xiàn)代學(xué)徒制協(xié)議書-新能源電動汽車研發(fā)與制造3篇
- 簡易三方換地協(xié)議書范本
- 2025屆廣東省深圳羅湖區(qū)四校聯(lián)考九上數(shù)學(xué)期末綜合測試試題含解析
- 飛鼠養(yǎng)殖技術(shù)指導(dǎo)
- 2024輸血相關(guān)知識培訓(xùn)
- 2023年四川省綿陽市中考初中學(xué)業(yè)水平考試語文試題【含答案】
- 正大天虹方矩管鍍鋅方矩管材質(zhì)書
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 受賄案例心得體會
- 人教A版高中數(shù)學(xué)選擇性必修第一冊第二章直線和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 圖書館學(xué)基礎(chǔ)簡明教程
- 畢業(yè)設(shè)計(論文)-液體藥品灌裝機的設(shè)計與制造
評論
0/150
提交評論