猴子选大王——课程设计
monkey

课程设计说明书
2.1.4 2.1.4.创建单向基本链表基本算法
创建循环单链表函数 采用头插法创建单向循环链表 Status CreateList(elemtype m) { List head, p; head = (List)malloc(sizeof(struct Node)); //*为头指针申请两个空间*// head->next = head; //*一共有 m 个猴子,所以建立含有 m 个结点的单向循环链表*// for (i = 1; i < m; ++i) { p = (List)malloc(sizeof(struct Node)); / /*为结点申请两个空间*// p->next = head->next; head->next = p; }//*利用 for 循环实现链表的创建*// p = head; //*将指针 p 指向表头*//
No.8
沈阳大学
课程设计说明书
2.1.6 2.1.6 主函数方案设计
No.9
在主函数中首先设计程序的登陆界面信息,用户可以根据界面的提示,完成猴子选大 王的基本操作过程,为了使操作更加人性化,使输入猴子的数目 m 和决定要淘汰的猴子 编号 n,通过键盘输入,若输入错误是(m<n),界面将用英文提示输入错误请重新输入, ,若输入正确,程序将显示运行后的结果,显示最后猴子大王的编号,并显示被淘汰猴子 的编号,程序运行完毕。 在主函数中,在用户输入结束后,分别调用创建链表函数 CreateList(elemtype m)和猴 子选大王参数 LinkedList(elemtype num_monkey, elemtype number),经过一些列的运 算,最后得出猴子大王的编号,及其被淘汰的猴子的编号,以上即为函数的基本功能的 实现过程。
猴子选大王上机报告

重庆交通大学信息科学与工程学院综合性设计性实验报告专业:课程名称:《C语言程序设计》题目:数组和链表的操作班级:设计者:学号:指导教师:完成时间:2014年6月16日重庆交通大学信息科学与工程学院综合性设计性实验任务书重庆交通大学信息学院综合性设计性实验评分表数组和链表的操作——猴子选大王程序设计报告一、系统的功能需求及分析功能:一群猴子共有m只,编号为1,2,……m,围坐一圈,从第1号猴子开始依次报数,数到n的猴子退出,然后从退出的下一只猴子继续从1开始报数,依次循环,直到圈内剩下一只猴子为止,该编号的猴子就是所选出的大王。
分析:用数组实现:先对数组进行初始化,然后将报到要删除的那个数字的猴子编号赋值为-1,每赋值一次,猴子数减一,再重新报数。
当猴子数只有一只的时候,输出猴子编号不为-1的那个编号。
用链表实现:先建立一个无头节点的单向循环的链表,然后将报到要删除的那个数字的猴子编号删除,以此循环,直到一个节点的下一个指向自己,最后输出猴子编号。
二、设计说明(一) 用数组实现1、数组的初始化for(i=0;i<m;i++)a[i]=i+1;2、算法流程图及说明(二) 用链表实现1、节点的定义struct monkey{int a;struct monkey *next;}*p,*q,*p1,*q1,*p2;2、链表的建立for (int i=0;i<m;i++){p=(struct monkey *)malloc(sizeof(struct monkey));p->a=i+1;p->next=NULL;if (i==0){head=p;q=head;}else{q->next=p;q=q->next;}}q->next=head;p2=head;p1=head;3、算法流程图及说明三、主要代码(一) 用数组实现#include<stdio.h>void main(){int a[10000];int m,n,x,b,i;printf("请输入猴子的只数:");scanf("%d",&m);printf("请输入要删除的猴子编号:");scanf("%d",&n);for(i=0;i<m;i++)a[i]=i+1;b=m;x=0;for(i=0;b!=1;i++){if(a[i%m+1]!=-1){x++;}if(x==n && a[i%m+1]!=-1){a[i%m+1]=-1;b--;x=0;}}for(i=1;i<=m;i++)if(a[i]!=-1)printf("猴子大王编号为:%d\n",i);}(二) 用链表实现#include <stdio.h>#include <stdlib.h>struct monkey{int a;struct monkey *next;}*p,*q,*p1,*q1,*p2;void main(){struct monkey *head;int m,n;printf("请输入猴子的只数:");scanf("%d",&m);printf("请输入想删除猴子的编号:");scanf("%d",&n);for (int i=0;i<m;i++){p=(struct monkey *)malloc(sizeof(struct monkey));p->a=i+1;p->next=NULL;if (i==0){head=p;q=head;}else{q->next=p;q=q->next;}}q->next=head;p2=head;p1=head;for (i=1;;i++){if (i==n-1){q1=p1->next;p1->next=q1->next;free(q1);i=0;}p1=p1->next;if (p1->next==p1) break;}printf("猴子大王的编号为%d\n",p1->a);}四、系统功能测试功能:一群猴子共有m只,编号为1,2,……m,围坐一圈,从第1号猴子开始依次报数,数到n的猴子退出,然后从退出的下一只猴子继续从1开始报数,依次循环,直到圈内剩下一只猴子为止,该编号的猴子就是所选出的大王。
猴子选大王

一、猴子选大王课题描述一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
猴子选大王系统设计1、猴子选大王总体设计结构图2、系统数据的数据结构设计猴子的存放采用链式存储结构,利用循环链表来实现建立的,其表示方法是递归定义的.(1)、变量说明程序中使用的存储结构:ListNode结构体Struct ListNode{Int data; //数据域Struct ListNode *nextPtr; //指向后继结点的指针域};Int monkeys,count //分别为猴子的个数和猴子的报数HeadPtr,tailPtr,currentPtr //分别为链表的头结点,尾结点和结点HeadPtr1,headPtr2 //分别为选大王的单循环链表和由淘汰的猴子所构成的链表(2)、函数说明DestroyList (LISTNODEPTR headPtr) //用destroylist函数来释放选大王链表的各个结点CreateList (int n) //创建循环链表,容纳n个猴子Printf(“input the amount of monkeys:”) //用printf函数来提示输入的内容Scanf(“%d”,&monkeys) //用scanf函数来输入猴子的个数Printf(“input the count number:”) //用printf函数来提示报数的数Scanf(“%d”,&count) //用scanf函数来输入每次数到的猴子就出局(3)、while循环说明while(currentPtr1!=currentPtr1->nextPtr){/*往后数一个猴子*/prePtr1=currentPtr1;currentPtr1=currentPtr1->nextPtr;count++;/*若数到n,则淘汰currentPtr指向的猴子*/if(count%n==0){/*从headPtr1指向链表中拆下currentPtr指向的结点*/prePtr1->nextPtr=currentPtr1->nextPtr;currentPtr1->nextPtr=NULL;/*将currentPtr1指向的结点插入到headPtr2指向链表中*/if(headPtr2==NULL){/*若headPtr2指向的为空链表*/headPtr2=currentPtr1;tailPtr2=currentPtr1;}else{ /*将拆下来的结点组装到headPtr2指向的链表上*/ tailPtr2->nextPtr=currentPtr1;tailPtr2=tailPtr2->nextPtr;}currentPtr1=prePtr1; /*currentPtr1指向上一个结点,为下一次数数做准备*/}}二、猴子选大王重点及关键技术分析程序通过循环链表较好的实现了猴子选大王的功能,但是还是有许多值得思考的地方。
猴子选大王课程设计说明书

数学与计算机学院课程设计说明书课程名称: 数据结构课程设计课程代码: 6014389题目: 猴子选大王年级/专业/班: 2010级软件工程2班学生姓名: 蒋童学号:开始时间: 2011 年11 月9 日完成时间: 2011 年12 月30 日课程设计成绩:指导教师签名:年月日数据结构课程设计任务书学院名称:数学与计算机学院课程代码:__ 6014389______ 专业:软件工程年级:2班一、设计题目猴子选大王二、主要内容一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
三、具体要求及应提交的材料要求:使用数组和循环链表等两种以上的存储方式来做输入数据:输入m,n m,n 为整数,n<m输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能用C/C++语言编程实现上述内容,对每个问题写出一个算法实现,并按数学与计算机学院对课程设计说明书规范化要求,写出课程设计说明书,并提交下列材料:1)课程设计说明书打印稿一份2)课程设计说明书电子稿一份;3)源程序电子文档一份。
四、主要技术路线提示可采用数组、链表数据结构实现。
在此基础上用C/C++实现其操作。
五、进度安排按教学计划规定,数据结构课程设计为2周,其进度及时间大致分配如下:六、推荐参考资料[1] 严蔚敏,吴伟民.数据结构.清华大学出版社出版。
[2] 严蔚敏,吴伟民. 数据结构题集(C语言版) .清华大学出版社.2003年5月。
[3] 唐策善,李龙澎.数据结构(作C语言描述) .高等教育出版社.2001年9月[4] 朱战立.数据结构(C++语言描述)(第二版本).高等出版社出版.2004年4月[5] 胡学钢.数据结构(C语言版) .高等教育出版社.2004年8月[6] 徐孝凯等著.数据结构(C语言描述).清华大学出版社.2004指导教师签名日期年月日系主任审核日期年月日目录摘要................................. 错误!未定义书签。
猴子选大王课程设计报告

四、参考文献
1.H M Peitel,P J Deitei.C How to progrom,second Edition.蒋才鹏等译,C程序设计教程,北京:机械工业出版社,2000
2.Herbert Schild著,王曦若,李沛译,ANSIC标准详解,北京:学院出版社,1994
3、程序的设计思想:
(1)问题分析:“猴子选大王”问题是约瑟夫环问题的一个特例。由于本题目的数据元素个数不可知,所以可使用链表来动态的分配内存空间。而该问题又是一个不断的循环问题所以用循环链表来实现。
(2)总体设计:首先生成一个空链表,并给n个结点分配空间,让单链表的表尾指针指向头结点则生成一个带有n个结点的循环单链表。给每只猴子建立顺序的编号。机型筛选,最后剩下1个猴子时停止运行,得到的结点即为猴子选出大王的编号。
7号猴子报:2
8号猴子报:3 8号猴被淘汰
4号猴子报:1
7号猴子报:2
4号猴子报:3 4号猴被淘汰
7号猴子报:1
胜出:7号猴子Press any key to continue
程序初始状态如下图:
下一组数据:m = 21,n = 2;
运行结果如下:
得到了预期结果
6:程序源代码
#include<stdio.h>
北京化工大学北方学院
课程设计报告
课程名称数据结构课程设计
设计题目猴子选大王
专业、班级软件工程0902班
学号090203
姓名
指导教师周建敏
设计时间2012年9月17日—2012年10月14日
2012年10月10日
一、引言(简要说明设计题目的目的、意义、内容、主要任务等)
猴子选大王课程设计

猴子选大王课程设计一、课程目标知识目标:1. 学生能够理解故事《猴子选大王》的主要情节,掌握故事中出现的生词和关键句型。
2. 学生能够运用一般现在时和一般过去时描述故事中猴子的行为和动作。
3. 学生了解并掌握故事中所传达的公平、公正和团队合作的重要性。
技能目标:1. 学生能够通过听力训练,提高对英语语音、语调的辨识能力。
2. 学生能够通过角色扮演,锻炼口语表达和沟通能力。
3. 学生能够运用创意思维,编写属于自己的猴子选大王故事。
情感态度价值观目标:1. 学生通过学习故事,培养公平竞争、尊重他人的价值观。
2. 学生在小组合作中,学会倾听、关心和帮助同伴,培养团队协作精神。
3. 学生在课堂活动中,树立自信、勇敢表达自己观点的态度。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够复述故事《猴子选大王》的主要情节,正确使用故事中的生词和关键句型进行描述。
2. 学生能够在角色扮演活动中,运用一般现在时和一般过去时表达猴子的行为和动作。
3. 学生能够通过小组合作,编写并表演一个关于猴子选大王的故事,展现公平、公正和团队合作的重要性。
4. 学生在课程学习中,积极参与课堂活动,展示良好的倾听、沟通和协作能力,体现出自信、尊重和关心他人的态度。
二、教学内容本节课以《猴子选大王》故事为主线,结合英语课程标准和学生实际情况,组织以下教学内容:1. 故事导入:通过图片、视频等教学资源,引导学生了解故事背景,激发学生的学习兴趣。
2. 故事学习:详细讲解故事《猴子选大王》的情节,重点讲解生词、关键句型和语法知识点。
- 生词:选举、候选、公平、公正、竞争、团队等。
- 句型:一般现在时、一般过去时的陈述句、疑问句和否定句。
- 语法:比较级、最高级的运用。
3. 角色扮演:学生分组进行角色扮演,运用所学知识进行对话练习,锻炼口语表达能力。
4. 小组合作:以小组为单位,编写一个关于猴子选大王的故事,要求运用所学生词、句型和语法。
数据结构课程设计(附代码)-数据结构设计

上海应用技术学院课程设计报告课程名称《数据结构课程设计》设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级姓名学号指导教师日期一.目的与要求1. 巩固和加深对常见数据结构的理解和掌握2. 掌握基于数据结构进行算法设计的基本方法3. 掌握用高级语言实现算法的基本技能4. 掌握书写程序设计说明文档的能力5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力表。
3、输出功能:void print(LinkList *head);通过一个while的循环控制语句,在指针p!=NULL时,完成全部学生记录的显示。
知道不满足循环语句,程序再次回到菜单选择功能界面。
4、删除功能:LinkList *Delete(LinkList *head);按想要删除的学生的学号首先进行查找,通过指针所指向结点的下移来完成,如果找到该记录,则完成前后结点的连接,同时对以查找到的结点进行空间的释放,最后完成对某个学生记录进行删除,并重新存储。
5、插入功能:LinkList *Insert(LinkList *head);输入你想插入的位置,通过指针所指向结点的下移,找到该位置,将该新的学生记录插入到该结点,并对该结点后面的指针下移。
链表长度加一,重新存储。
(5) 程序的输入与输出描述输入:调用LinkList *create()函数,输入学生的姓名、学号、三门功课的成绩;输出:调用void print(LinkList *head)函数,输出学生的记录。
(6) 程序测试主菜单:成绩管理系统的主界面:学生成绩记录的输入:输出学生成绩记录:学生成绩记录的删除(删除学号是1101的学生记录)插入新的学生成绩记录(插入学号为1103的学生记录)(7) 尚未解决的问题或改进方向尚未解决的问题:该成绩管理系统还存在不少缺陷,而且它提供的功能也是有限的,只能实现学生成绩的输入、输出、删除、插入。
猴子选大王问题

这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。
问怎样排法,才能使每次投入大海的都是非教徒。
*问题分析与算法设计约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。
这里给出一种实现方法。
题目中30个人围成一圈,因而启发我们用一个循环的链来表示。
可以使用结构数组来构成一个循环链。
结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该人是否被扔下海的标记,为1表示还在船上。
从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。
这样循环计数直到有15个人被扔下海为止。
[编辑本段]约瑟夫问题的一般形式:约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。
例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。
最后剩下1号。
假定在圈子里前K个为好人,后K个为坏人,你的任务是确定这样的最少M,使得所有的坏人在第一个好人之前被杀掉。
C++代码示例:#include<iostream>usingnamespacestd;voidmain(){intn,m,a[101],k,i,j,num;.n-2,n-1,0,1,2,...k-2并且从k开始报0。
现在我们把他们的编号做一下转换:k-->0k+1-->1k+2-->2......k-2-->n-2k-1-->n-1变换后就完完全全成为了(n-1)个人报数的子问题,假如我们知道这个子问题的解:例如x是最终的胜利者,那么根据上面这个表把这个x变回去不刚好就是n 个人情况的解吗?!!变回去的公式很简单,相信大家都可以推出来:x'=(x+k)modn 如何知道(n-1)个人报数的问题的解?对,只要知道(n-2)个人的解就行了。
猴子选大王 课程设计报告

目录一、需求分析 (1)1、问题描述: (1)2、基本要求: (1)3、需求分析: (1)二、概要设计 (2)三、详细设计 (3)1、循环队列 (3)2、循环链表 (4)3、伪代码 (5)4、具体函数分析及变量分析 (6)四、调试分析和测试结果 (6)五、总结 (9)六、参考文献 (10)七、附录 (11)一、需求分析1、问题描述:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
2、基本要求:输入数据:输入m,n。
m,n 为整数,n<m。
输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。
3、需求分析:①输入数据m,n②计算出最终猴子大王的序号。
③模拟出整个过程。
④找到合适的数据结构处理这个问题。
⑤找到正确的方法解决这个问题。
二、概要设计对题意进行分析后,可以画出整个过程的流程图。
具体流程图:这个问题属于约瑟夫环问题,我们对这个题目进行具体分析:假如现在m=5,n=2,即有5只猴子,按照循环数2的方法,我们演变这个过程:第一次:1 2 3 4 5× 2号出局第二次:1 2 3 4 5×× 4号出局第三次:1 2 3 4 5××× 1号出局第四次:1 2 3 4 5×××× 5号出局最后得到猴子大王的序号是3号。
那么一般化,对于m猴子,n只猴子我们该怎么做?三、详细设计1、循环队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列中没有元素时,称为空队列。
仔细分析整个过程,我发现这个过程和学过的循环队列特别像,在学习循环队列的时候,如果采取数组来存储队列,那么在front端弹出元素就执行front=(front+1)%MAX,在rear端进入队列的时候就执行rear=(rear+1)%MAX,以实现绕圈的操作。
课程设计猴子选大王

猴子选大王1、课程设计目的:(1)有利于基础知识的理解通过对数据结构的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
(2)有利于逻辑思维的锻炼自主创作程序并写出思路及运行报告,能够较熟练地掌握在系统上编辑、编译、连接和运行C程序的方法。
并通过设计一个完整程序,掌握数据结构的算法编写、类C语言算法转换成C程序并上机调试的基本方法。
(3)有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输错一个标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计要求人的严谨性,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼2、课程设计方案论证:2.1课程设计题目及简介:内容:一堆猴子(m个)每一只都有编号,编号为1,2,3,4...m 这群猴子按照1-m的顺序排列从第一个开始数,没数到第N个,该猴子就要离开。
这样一次下来,直到剩下最后一只猴子,则这只猴子为大王。
2.1.1设计说明:本设计通过循环链表建立约瑟夫环。
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
这种方式非常类似于猴子选大王。
由于本题目的数据元素个数不可知,所以可使用链表来动态的分配内存空间。
而该问题又是一个不断的循环问题所以用循环链表来实现。
总体设计:首先生成一个空链表,并给n 个结点分配空间,让单链表的表尾指针指向头结点则生成一个带有n 个结点的循环单链表。
再给每只猴子建立顺序的编号。
现从第一个结点开始报数,依次顺序查找出报数为i 的待出列的结点(猴子)通过p->next = pass->next;。
c猴子选大王的课程设计

c 猴子选大王的课程设计一、课程目标知识目标:1. 学生能理解并掌握猴子选大王问题中的数学原理,包括排序和比较大小。
2. 学生能够运用所学知识解决类似猴子选大王的问题,如排序不同数字或物品。
技能目标:1. 学生培养观察、分析问题的能力,通过小组讨论与合作,提高问题解决技巧。
2. 学生通过实际操作,加强运用逻辑思维和数学方法解决问题的技能。
情感态度价值观目标:1. 学生培养对数学学习的兴趣,增强自信心,认识到数学与日常生活的紧密联系。
2. 学生在小组活动中,学会尊重他人意见,培养团队合作精神和公平竞争的意识。
3. 学生通过猴子选大王的故事,理解公平、公正的价值观,并能够在生活中践行。
课程性质:本课程为数学学科的一节实践活动课,结合二年级学生的认知水平和兴趣特点,设计富有情境性和趣味性的教学内容。
学生特点:二年级学生对数学有好奇心,喜欢通过故事和游戏学习。
他们具备一定的观察、比较和逻辑思维能力,但需要进一步培养和提高。
教学要求:教师需以学生为主体,关注个体差异,采用情境教学法和合作学习法,激发学生兴趣,引导他们主动参与。
同时,注重培养学生的逻辑思维和问题解决能力,将情感态度价值观的培养贯穿于教学过程中。
通过具体的学习成果评估,确保学生达到预设的课程目标。
二、教学内容本节教学内容以《数学》二年级教材中“比较大小”章节为基础,结合“猴子选大王”的故事情境,组织以下教学活动:1. 引入:通过讲述“猴子选大王”的故事,激发学生兴趣,引导学生关注故事中的数学问题。
2. 新课导入:a. 教学内容:比较大小,理解数字顺序。
b. 教学方法:采用直观演示、小组讨论等形式,让学生掌握比较大小的方法。
3. 教学主体:a. 教学内容:猴子选大王问题,运用比较大小的方法进行排序。
b. 教学方法:分组合作,让学生在活动中体验数学原理,培养问题解决能力。
4. 巩固练习:a. 教学内容:设计不同难度的练习题,让学生巩固比较大小的方法。
猴子选大王

云南大学物理实验教学中心实验报告课程名称:计算机软件技术基础实验项目:线性链表的应用(猴子选大王)学生姓名:吴莹盈学号:20101050040物理科学技术学院物理系2010 级电子科学与技术专业指导教师:马琳实验时间:2012 年12 月 1 日至12 月15 日实验地点:力行楼4202实验类型:教学(演示□验证□综合□设计□)学生科研□课外开放□测试□其它□云南大学物理实验教学中心实验预习报告一.实验名称:线性链表的应用(猴子选大王)二.实验目的:在实习三的基础上,用线性链表解决一个应用问题。
三.实验所需解决问题:问题:约瑟夫问题(Joseph)的求解。
问题描述:n只猴子要选大王,选举方法是:所有猴子按1、2、3、……、n编号顺时针方向围坐一圈,从第1号开始按1、2、3、……、m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。
试设计一个C程序,输出猴子出列顺序。
基本要求:利用单循环链表存储结构模拟此过程,n和m值由键盘输入,按照出列的顺序打印各个猴子的编号。
四.实验程序设计:#include <iostream>#include <string>#include <iomanip>using namespace std;struct monkey{ int num;int d;monkey *head;monkey *next;};class linked_CList //定义循环链表类{private:monkey *head;monkey *tail;public:linked_CList(); //建立循环链表int del_linked_CList(int); //删除选中的猴子int sel_linked_CList(int);};linked_CList::linked_CList() //建立空循环链表{monkey *p;p=new monkey;p->d=0;p->next=p;head=p;return;}int linked_CList::del_linked_CList(int nn) //删除选中的猴子{ int i;monkey *p,*q; //声明monkey结构指针p,qp=new monkey;p->num=1;p->next=NULL;head=p;q=p;for(i=2;i<=nn;i=i+1){ p=new monkey;p->num=i;q->next=p;q=p;p->next=NULL; }tail=q;tail->next=head;return nn;}int linked_CList::sel_linked_CList(int mm) // mm表示结点删除间隔{ int x=0;monkey *p,*q;q=tail;do{ p=q->next;x=x+1;if(x%mm==0) //x是否整除mm{ cout<<"被删除的猴子号为"<<p->num<<"号\n";q->next=p->next; //删除此结点delete p;p=NULL;}elseq=p; //q指向相邻的下一个结点p}while(q!=q->next); //剩余结点数不为1,则继续循环head=q; //head指向结点q,q为链表中剩余的一个结点cout<<"猴王是"<<head->num<<"号\n"; //输出猴王return mm;}//////////////////////////////////////////////////////////////////////////////////////////主函数int main(){ int mx;linked_CList s;label1:while(1){ cout<<"0.退出程序"<<endl;cout<<"1.猴子选大王"<<endl;cout<<"请输入0—1:";cin>>mx;switch(mx){ case 1:int n,m;monkey *head;head=NULL;cout<<"请输入猴子的总数\n";cin>>n;cout<<"请输入间隔\n";cin>>m;s.del_linked_CList(n);s.sel_linked_CList(m);delete head; //删除循环中最后一个结点break;return 0;case 0:cout<<"安全退出程序";return 0;}}}五.实验步骤:1.根据线性链表的特性和实验三的步骤,将猴子选大王这个程序的基本步骤,即整体结构先编译完成2.逐步细化,编译各个函数。
中大班表演游戏动物王国选大王教案

中大班表演游戏动物王国选大王教案第一篇:中大班表演游戏动物王国选大王教案2013级学前教育专业《幼儿园活动设计与组织》课程作业单游戏设计方案设计者:陈钰婕熊莉粟润王雅婧刘梦洁游戏名称:动物王国选大王适宜年龄:5~6岁游戏类别:表演游戏游戏玩法:按故事情节表演游戏;轮流表演不同角色游戏规则:按照故事情节及动物的出场顺序,开展表演;在其他幼儿表演时,安静认真的观看,不随意打断;在表演结束后,分享自己的经验、感受。
游戏道具:狮子、老鼠、小猫、小白兔、牛、狐狸、小鸭子、小羊、小鸟等动物的头饰教育意义:让幼儿在表演中加强对故事的理解,表演出不同动物的不同特征,认识秩序的重要性;在表演中提高幼儿的合作意识,学会和同伴协商,轮流扮演不同角色;鼓励幼儿思考如何更好地设计和布置表演场地,学会正确使用和替代游戏材料;增强幼儿爱护游戏材料的意识,学会收拾和整理游戏材料。
第二篇:大班表演游戏学期目标1、根据自己对文学作品的理解,激发幼儿积极的参加游戏表演。
2、通过参与表演游戏活动和扮演角色,加深对文学作品的理解,并激发幼儿对文学作品的兴趣。
3、让幼儿主动参与表演游戏活动,在语言、动作、情节表演上增色或更生动,从而提高幼儿的想象力、创造力和表演能力。
4、让幼儿学会与同伴协商分配角色,协调配合,合作游戏,正确处理游戏中的纠纷,提高幼儿解决问题的能力。
5、会用连贯的语言(包括体态语言)进行表演6、培养幼儿处理事物的正确态度和良好的学习品质。
7、让幼儿学会正确使用自制和替代的游戏材料。
8、学会有调理地归类收拾玩具、整理场地9月份游戏主题:《金鸡冠的公鸡》一、活动目标1、通过对作品的理解,能在角色对话、动作、表情等方面有所创新,积极地参与表演。
2、能正确处理游戏中的纠纷,会较正确地评价自己和别人。
二、活动准备:头饰:公鸡、画眉鸟、猫、小蝌蚪、青蛙、鸭妈妈、小鸭、大鱼、鹅、乌龟道具:荷叶、房子、六弦琴,池塘。
知识经验准备:幼儿已能复述故事四游戏指导:第一次指导:1、教师出示头饰:“上次老师给你们讲了《金鸡冠的公鸡》,你们还记得里面有哪些人物吗?讲了哪些对话?”请幼儿一起来复习故事里的对话。
猴子选大王C语言课程设计

猴子选大王一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2、提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。
4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。
二、设计内容1、系统名称:猴子选大王按照规定的要求,选出最后的一只猴子,为大王。
2、要求:一堆有编号的猴子,编号为1,2,3……m,这群猴子(m个)按照1-m的顺序围坐一圈,从第一开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中剩下最后一只猴子,则该猴子为大王。
三、程序设计步骤1)采用主要的数据结构类型。
采用了链表的存储方式,属于链接存储结构。
for(i=1;i<n;i++) //建立链表的存储结构{p=(LINK)malloc(sizeof(Monkey));p2->next=p;p2=p;}以下是用于存储结点的结构体的定义:typedef struct monkey{int num;struct monkey *next;} Monkey,*LINK;基本算法:这个算法的主要流程为:从控制台读取猴子的数量和报数的最大数——>对猴子进行编号,并用链表来存储——>让链表中的猴子进行报数,对于报数为m的猴子则从链表中删除——>当链表中只剩下一个报数后则停止这个过程,这最后一个猴子即选出来的大王。
以下为为猴子建立链表:for(i=1;i<n;i++) //建立链表的存储结构{p=(LINK)malloc(sizeof(Monkey));p2->next=p;p2=p;}以下为猴子进行编号:for(i=1;i<=n;i++) //对猴子进行编号{p->num=i;//printf("%d号猴子:%d\n",p->num,p->num);p=p->next;}以下为最主要的算法过程,是通过一个While循环来控制的,是让猴子报数的过程,并删除报数为m的猴子:while(1){i++;//当链表只剩最后一个元素了则跳出循环,此时报数已完成printf("%d号猴子报:%d\n",p->num,i);if(p->next==p) break;if(i==m){i=0;printf("%d号猴被淘汰\n",p->num);printf("\n");p2->next=p->next;p=p2->next;continue;}else{if(i==m-1) p2=p;p=p->next;}}2)详细设计:#include <stdio.h>#include <stdlib.h>int n=2;int m=1;typedef struct monkey{int num;struct monkey *next;} Monkey,*LINK;void main(){printf("请输入一个整数(猴子数量):");scanf("%d",&n);printf("请输入一个小于猴子数量的整数(报数的最大数):");scanf("%d",&m);LINK p,head,p2;int i;head=p=p2=(LINK)malloc(sizeof(Monkey));for(i=1;i<n;i++) //建立链表的存储结构{p=(LINK)malloc(sizeof(Monkey));p2->next=p;p2=p;}p2->next=head;p=head;//printf("对猴子进行编号!\n");for(i=1;i<=n;i++) //对猴子进行编号{p->num=i;//printf("%d号猴子:%d\n",p->num,p->num);p=p->next;}i=0;p=head;while(1){i++;//当链表只剩最后一个元素了则跳出循环,此时报数已完成printf("%d号猴子报:%d\n",p->num,i);if(p->next==p) break;if(i==m){i=0;printf("%d号猴被淘汰\n",p->num);printf("\n");p2->next=p->next;p=p2->next;continue;}else{if(i==m-1) p2=p;p=p->next;}}printf("胜出:%d",p->num);}四、调试分析调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查。
数据结构课程设计

数据结构课程设计----个人设计报告专业:班级:姓名:学号:指导教师:日期: 2016年X月XX日至XX日目录1 课程设计目的 (3)2 课程设计内容和要求 (3)3 任务完成情况 (3)4 设计报告 (4)4.1顺序表应用 (4)4.1.1 设计目的 (4)4.1.2 设计内容及要求 (4)4.1.3 需求分析 (5)4.1.4 概要设计 (7)4.1.5 详细代码 (8)4.1.6 使用说明 (8)4.1.7 测试结果与分析 (8)4.1.8 参考文献 (10)4.2链表应用 (10)4.2.1 设计目的 (10)4.2.2 设计内容及要求 (11)4.2.3 需求分析 (12)4.2.4 概要设计 (14)4.2.5 详细代码 (16)4.2.6 使用说明 (16)4.2.7 测试结果与分析 (16)4.2.8 参考文献 (18)4.3树和二叉树 (19)4.3.1 设计目的 (19)4.3.2 设计内容及要求 (19)4.3.3 需求分析 (19)4.3.4 概要设计 (20)4.3.5 详细代码 (21)4.3.6 使用说明 (21)4.3.7 测试结果与分析 (22)4.3.8 参考文献 (22)5 体会与感想 (23)附录: (24)设计一(顺序表应用)的代码 (24)设计二(链表的应用)的代码 (35)设计三(二叉树应用)的代码 (47)1 课程设计目的1、学习获取知识的方法;2、提高发现问题、分析问题和解决实际问题的能力;3、加强创新意识和创新精神;4、加强团队的分工与合作;5、掌握面向实际背景思考问题的方法。
2 课程设计内容和要求内容:(仅供参考,请根据实际完成情况填写)第一章前言第二章顺序表与链表的应用第三章树结构的应用第四章图结构的应用第五章赫夫曼编码的应用要求:完成第2章、第3章中每章的比作必做任务。
在完成个人任务的基础上,完成第4章第5章的小组任务。
每人必须在完成个人任务的基础上提交个人任务的设计报告,内容包括:任务名称、目的、具体内容、需求分析、概要设计、主要代码分析、测试结果、收获与体会。
课程设计猴子选大王

课程设计猴子选大王一、教学目标本课程旨在通过《猴子选大王》的故事,让学生掌握成语“猴子选大王”的含义和用法,了解中国传统文化中的成语故事,培养学生的阅读兴趣和语言表达能力。
1.学生能够理解并正确使用成语“猴子选大王”。
2.学生能够讲述《猴子选大王》的故事内容。
3.学生能够了解成语背后的中国传统文化。
4.学生能够通过阅读和讨论,提高自己的语言表达能力。
5.学生能够运用成语“猴子选大王”进行句子创作。
情感态度价值观目标:1.学生能够培养对中国传统文化的兴趣和认同感。
2.学生能够通过学习成语故事,培养正确的价值观和道德观念。
二、教学内容本课程的教学内容以《猴子选大王》的故事为主线,通过讲解成语的含义和用法,引导学生了解中国传统文化中的成语故事。
1.导入:介绍成语“猴子选大王”的由来和含义。
2.新课内容:讲解《猴子选大王》的故事情节,分析成语的用法。
3.练习:学生进行成语接龙游戏,巩固所学内容。
4.拓展:引导学生思考成语在现实生活中的应用,进行案例分析。
教材章节:《猴子选大王》故事及相关练习。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师讲解成语的含义和用法,引导学生理解故事内容。
2.讨论法:学生分组讨论成语的用法和现实生活中的应用。
3.案例分析法:教师提供案例,引导学生分析成语在案例中的作用。
4.实验法:学生进行成语接龙游戏,提高语言表达能力。
四、教学资源本课程所需教学资源包括:1.教材:《猴子选大王》故事及相关练习。
2.参考书:提供有关成语和中国传统文化的参考资料。
3.多媒体资料:图片、视频等辅助教学资料。
4.实验设备:成语接龙游戏所需道具。
教学资源的选择和准备应充分支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业和考试,以全面客观地反映学生的学习成果。
1.平时表现:通过观察学生在课堂上的参与度、讨论和提问,评估学生的学习态度和理解程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
邮电与信息工程学院课程设计说明书课题名称:猴子选大王学生学号:专业班级:学生姓名:学生成绩:指导教师:课题工作时间:2010-6-22至2010-6-25目录摘要............................................................................................, (6)Abstract ......................................................................................, (7)第一章课题背景.................................................................................,.. (8)1.1课程设计的目的 (8)1.2 课程设计的要求.............................................................................., (8)1.3 课程设计的实验环境......................................................................,. (8)第二章课程设计详细内容...................................................................,, (9)2.1 问题描述......................................................................................,, (9)2.2 程序代码精解.................................................................................,, (9)2.3 程序结果运行...............................................................................,. (13)总结......................................................................................., (15)致谢.........................................................................................,.. (16)参考文献.....................................................................................,.. (17)附录主要程序代码....................................................................., (18)摘要本次程序程序设计的主要目的是解决变相的“约瑟夫环”问题---猴子选大王。
从而使复杂的选举工作变得明朗化。
全程序以数据结构(C语言)中的循环单链表为主要的设计支柱,利用了C语言简洁紧凑、灵活方便,语法限制不太严格,程序设计自由度大,生成目标代码质量高,程序执行效率高等方面的优点。
循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环,基于这样的特点,它适合处理具有环形结构的数据元素序列。
在程序代码的编写中,运用了结构体类型(struct Node),动态申请内存空间函数malloc(),释放动态申请内存空间函数free()等类型,同时也具有多种循环、条件语句控制程序流向,如:嵌套if else语句,多重for循环语句,还有链表中结点指针(p->next),从而使程序完全结构化。
这样编写出的完整程序代码可以实现“猴子选大王”功能,输入猴子的数目m,循环数n,对m个猴子进行编号,通过嵌套if else语句,for 语句,一遍一遍的循环,判断,删除,直到只剩下最后一个猴子,即大王。
这样就可以实现所需的基本功能了。
关键词:数据结构;循环;单链表AbstractThe main purpose of the program design process to solve the form of "Joseph Ring" in the election --- monkey king. So complex it became clear the election.All procedures for data structures (C language) in single-cycle design of the main pillars of the list, using the C language simple and compact, flexible and convenient, the syntax is not strictly limited, program design flexibility to produce high quality object code, program execution the advantages of higher efficiency. Single-loop single-linked list is another form of list, its structural features is the last node list pointer field is no longer the end of the tag, but point to the list the first node, so that form a ring list, based on Such features, it has a ring structure for the data processing sequence of elements.The preparation of the program code, the use of a structure type (struct Node), dynamic application memory function malloc (), the release of dynamic memory functions for free () and other types, but also with a variety of loop, conditional statements control program flow such as: nested if else statements, multiple for loop, there is a linked list node pointer (p-> next), to make the program fully structured.Write such a complete program code can have a "monkey king selected" feature, enter the number of monkeys m, cycles n, m were monkeys on the number, by nested if else statements, for statement, the cycle over and over again, judge, removed until there are only a monkey, or king. This can achieve the required basic function.Keywords: data structures; circulation; single linked list第一章课题背景1.1课程设计目的本次程序程序设计的主要目的是解决变相的“约瑟夫环”问题---猴子选大王。
从而使复杂的甄选工作变得明朗简单化。
同样,这种解决问题的思想还可以运用到其他具有类似问题的领域,达到一点窥面的效果。
1.2课程设计要求针对本次猴子数为m,循环数为n的猴子选大王问题,要求如下:1、基本要求:输入数据m,n 为整数。
2、输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子几号,建立一个函数来实现此功能。
3、实现方案:使用循环单链表。
1.3课程设计实验环境本次课程设计使用的是以C语言为基础的数据结构,C语言作为一种最基本简单的程序设计语言,C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
同时数据结构中的循环单链表适用于解决具有环形结构的数据元素序列。
许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。
用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。
1.3.1 C语言和循环单链表所具有的特点归纳起来C 语言具有下列特点1.C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
2.C语言功能齐全。
具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
另外C语言也具有强大的图形功能,支持多种显示器和驱动器。
3.C语言适用范围大。
适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
4.C语言文件由数据序列组成,可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code:: Blocks,Borland C++,Watcom C++ ,Borland C++ Builder,GNU DJGPP C++ ,Lc cwin32 C Compiler 3.1,High C,Turbo C,C-Free, win-tc等等……循环单链表具有的特点:1.操作灵活。
单链表中的每个结点,是在需要时才向系统申请,即动态内存申请,节省了大量内存空间。
2.循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环,基于这样的特点,它适合处理具有环形结构的数据元素序列。