猴子选大王课程教学设计kok电子竞技_第1页
猴子选大王课程教学设计kok电子竞技_第2页
猴子选大王课程教学设计kok电子竞技_第3页
猴子选大王课程教学设计kok电子竞技_第4页
猴子选大王课程教学设计kok电子竞技_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

1、-*EASr CHINA INSTITUTE OF TECHNOLOGY课程设计kok电子竞技课程设计题目:猴子选大王学生姓名:吴兆专业:软件工程班级:1321813学号:201320181306指导教师:吴建东2015年1月9日东华理工大学目录一:需求分析1 .问题描述2 .基本要求3 .需求分析二:概念设计三:详细设计四:调试分析和测试结果五:总结六:源代码一:需求分析1 .问题描述一堆猴子都有编号,编号是1, 2, 3m ,这群猴子(m个)按照1-m 的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依 次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。2 .基本要求输入数据:

2、输入m,n m,n为整数,n<m输出形式:中文提示按照 m个猴子,数n个数的方法,输出为大王的 猴子是几号,建立一个函数来实现此功能。3 .需求分析1. 输入数据m,n。2. 计算出最终猴子大王的序号。3. 模拟出整个过程|4. 找到合适的数据结构处理这个问题。5. 找到正确的方法解决这个问题。二:概念设计这个问题属于约瑟夫环问题,根据问题描述得知,该问题中m个猴子 围坐在一群形成首尾相接的环,因此可用循环链表解决。从第n个猴 子开始出列相当于从链表中删除一个节点。 该程序主要有三个模块组 成,建立循环链表,报数利用循环链表实现猴子的出列,最终剩下的 猴子即猴王。具体步骤如下:第一步首先

3、创建循环链表。第二步 向链表中填入猴子的编号。第三步 找第一个开始报数的猴子。第四步数到n让这个猴子出列。第五步 接着开始报数,重复第四步,直到剩下最后一个猴子,就是大王。*程序流程图如下:开始进彳1 1-m的报数删除第n只猴子剩下的猴子 数是否为旦TH输出猴子大王的序号:详细设计1 .程序中使用的存储结构struct Lint num;struct L *next;;int n;int i=0;2 .程序中使用的循环结构报数为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 .主函数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开始数,每数到第n(n<m)个,该猴子就要 n");printf(" 离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该n");printf(" 猴子为大王n");printf("I*n");printf("输入n(所有猴子的总数):");scanf("%d",&N);printf("输入m皑开的猴子所报的数):");s

6、canf("%d",&m);printf("I*n");if (m>N|m<=0|N<=0)ERROR()elseif(m=1)printf(" 结果:第个猴子为大王.n",N);elsehead=creat(N);printf(" 过程:n");p=LisDelete(head,m);printf("I*n");printf("结果:第於猴子为大王.n",p->num);printf("I*n");四:调试分析和测试结果n

7、<n<ra>削依序围湮一辔,履1 与开止滑,这璋依萩2旨为大王-*TG:EZC+ +J5ZD&bugW-FX±.exe'三族卅,三 二隹同圉大 选-隹为 子顺开子 猴的高;都Kt,子这口BF 贾次 有.依X M X3cme MM KN KX,这群猴中吟>第n<nS花孩猴学就要 不下最后一只烂对该r文匚/ n 3每圈能酬撇认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个优强E 幼”: 第交麻子离开. 籍.个福子离开.吉果,第7个猴子为大王.I'oso any key 4口 coni;iruo悭狗拼音藕人士1得到了预期的结果五:总结本次课程设计,参考了相关教科书和参考书对二分法查找与各种排序方法的 描述,对相关功

9、能所需结构体和函数有了初步构思之后,经过代码的输入、语法 改错,调试执行等过程,完成了一个简单的功能系统。通过一周时间,从初步思路形成到基本功能完成,对数据结构设计实践与应 用部分基本了解了。从本次课程设计我觉得我应该把所学基础知识与具体问题实 践结合,基本知识要扎实,对待问题要各方面分析。我们应该通过多次实践数据结构与算法设计是一种锻炼人清晰思路的科目, 让自己的知识得到巩固。六:源代码#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)建立动态循环链表 |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);*报数为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开始数,每数到第n(n<m)个,该猴子就要 n");printf("离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该n");printf("猴子为大王n");printf("* n");printf("输入n(所有猴子的总数):");scanf("%d",&

14、;N);printf("输入m皑开的猴子所报的数):");scanf("%d",&m);printf("I*n");if (m>N|m<=0|N<=0) ERROR(); elseif(m=1) printf("结果:第个猴子为大王.n",N); elsehead=creat(N);printf("过程:n");p=LisDelete(head,m);printf("I*n");printf(" 结果:第个猴子为大王.n",p->num);printf("I*n");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论