猴子选大王课程设计说明书

合集下载

用c++编写程序猴子选大王

用c++编写程序猴子选大王

用C++编写程序猴子选大王(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--湖南人文科技学院计算机系课程设计说明书课程名称: 数据结构课程代码:题目: 猴子选大王年级/专业/班: 06级计算机科学与技术专业一班学生姓名:学号:06408109 06408102 06408107 06408122 06408103指导教师: 刘刚常开题时间: 2008 年 6 月 16 日完成时间: 2008 年 6 月 29 日目录摘要..................................................................................................................... 错误!未定义书签。

一、引言............................................................................................................. 错误!未定义书签。

二、设计目的与任务......................................................................................... 错误!未定义书签。

三、设计方案....................................................................................................... 错误!未定义书签。

1、总体设计......................................................................................................... 错误!未定义书签。

猴子选大王 数据结构课程设计

猴子选大王 数据结构课程设计
小猴VS猴王
i am the king of monkeies
问题描述
一群猴子都有编号,编号是1,2,„„m,这群猴
子按照顺序围坐成一圈,从第一个开始数,每数到第
n个,该猴子就要离开此圈,这样依次数下来,直到 圈中只剩下最后一只猴子,则该猴子为大王。
我们选择用一个循环链表来完成
该设计,设计一个猴子的结构体,
直至剩下最 后一个链表
单链表的删除
为了删除第i个猴子Mi,必须找到猴子的存储地址。 该存储地址是在其直接前趋结点Mi-1的next域中,因 此,必须首先找到Mi-1的存储位置p,然后令p– 图解 >next指向Mi的直接后继结点,即把Mi从中赶出。
算法设计与实现
1. 对每一个猴子进行编号 2. 3. 每数到n便删除该猴子,当循环单链表只剩一个时, 主函数 r=q=(listnode *)malloc(sizeof(listnode)); int main() 输出该编号 for(i=1;i<=n-1;i++) for(i=1;i<n;i++){ { { p=(listnode*)malloc(sizeof(listnode)); linklist r; for(j=1;j<=k-1;j++) p=p->next; q->data=i; int n,k; q=p->next; q->next=p; linklist initring(int n,linklist r); p->next=q->next; q=p; linklist deletedeath(int n,int k,linklist r); if(i % 10==0) } free(q); void outring(int n,linklist r); } p->data=n; printf("请输入猴子总数m:"); printf("\n"); p->next=r; scanf("%d",&n); r=p;return r; } r=p; printf("请输入n:"); void outring(int n,linklist r) scanf("%d",&k); { int i; r=initring(n,r); listnode *p; r=deletedeath(n,k,r); p=r; printf("猴子大王:"); outring(n,r); printf("%4d\n",p->data);

monkey

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),经过一些列的运 算,最后得出猴子大王的编号,及其被淘汰的猴子的编号,以上即为函数的基本功能的 实现过程。

猴子选大王数据结构课程设计报告内附详细注释

猴子选大王数据结构课程设计报告内附详细注释

1.需求分析问题定义:一堆猴子都有编号,编号是1,2,3…n,这群猴子(n个)按照1-n的顺序围坐一圈,从第1个开始数,每数到第m个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

m,n键盘输入,且m<n,输出为大王的猴子的号数。

问题分析:根据任务描述可知,编号是1,2,3…n的一群猴子按照1-n的顺序围坐一圈,因此可以用指针指向数组的方法给数组赋值,输入n值和m值,为保证m<n,用一个while( )#include<stdio.h>#include<stdlib.h> //使用calloc()函数void FindKing_pointer(int,int,int*);//移动指针法找大王void Initialize(int,int*);//初始化数组整形和指针型int main(){int m,n,*ptr;printf("输入猴子数与出局时报的数\n");scanf("%d %d",&n,&m);while(n<m){printf("输入数据有误,请重新输入!\n"); printf("输入猴子数与出局时报的数\n"); scanf("%d %d",&n,&m);}ptr=(int *)calloc(n,sizeof(int));Initialize(n,ptr);FindKing_pointer(m,n,ptr);free(ptr);return 0;if(ptr2==ptr+n)ptr2=ptr;/*指针所指元素不为0时计数器加1.*/if(*ptr2!=0)i++;/*计数器数到m时将指针所指元素设为0*/ if(i==m){*ptr2=i=0;count--; //用于终止循环}}/*最后不为0的元素的值即为大王的编号*/for(ptr2=ptr;;ptr2++){if(*ptr2!=0){printf("第%d个猴子是大王\n",*ptr2);break;}}}/*思想是猴子围坐一圈,有N个猴子,开始数数,数到第M个猴子,该猴子就出列,然后再从该猴子的下一个猴子开始数到第M个猴子,直到只剩下一个猴子时。

猴子选大王上机报告

猴子选大王上机报告

重庆交通大学信息科学与工程学院综合性设计性实验报告专业:课程名称:《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指向上一个结点,为下一次数数做准备*/}}二、猴子选大王重点及关键技术分析程序通过循环链表较好的实现了猴子选大王的功能,但是还是有许多值得思考的地方。

猴子选大王课程设计报告

猴子选大王课程设计报告
由于时间有限,本人水平有限,报告中可能存在诸多不完善之处,还望见谅。
四、参考文献
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) 尚未解决的问题或改进方向尚未解决的问题:该成绩管理系统还存在不少缺陷,而且它提供的功能也是有限的,只能实现学生成绩的输入、输出、删除、插入。

猴子选大王

猴子选大王

一. 需求分析:猴子选大王是一个小游戏,其规则是:假设n个猴子围成一堆,取数字m为将要被淘汰的数字,从第一个猴子开始数,数到数字m时,则该猴子出列,被淘汰,然后从被淘汰的猴子的下一个开始数,再数到数字m时,这个猴子也被淘汰,从下一个开始数,依次进行,直到剩下一个猴子结束。

该猴子即猴子大王。

二. 概要设计:该程序没有抽象数据类型,主要用循环和数组实现,先用数组存放猴子,假定一个猴子的最大个数,再通过参数传递一个正确的猴子(将要做游戏的猴子数),先将猴子初始化为0,用一个计数器存countone存放剩余的猴子的个数,用sum存放数字,即从1到m 的数字,当countone>0时,进行循环,先将countone记为0,当循环等于m时,一次循环结束,否则countone加1,依次进行第二次的循环,直到剩下一个猴子为止,并记下当m!sum是的猴子,为幸运猴子大王。

三. 详细设计:int choose(int num,int del) //num表示猴子总数,del表示将要被淘汰的猴子总数{for(i=0;i<num;i++)a[i]=1; //猴子初始化,为1表示还有希望被选为大王while(countOne>1) //是否进行继续淘汰的判断,其中放剩余的猴子个数{countOne=0;for(i=0;i<num;i++){sum+=a[i];if(sum==del) //del同时也记录了每次数数的结束sum=a[i]=0; //淘汰倒霉猴子;countOne+=a[i]; //是和if相匹配语句,当判断条件不成立时执行}for(i=0;i<num;i++)if(a[i]!=0)return i; //找到幸运猴子编号(从0开始的);}void main(){int num,del;cout<<"请输入猴子总数和淘汰数字:";cin>>num>>del;cout<<"第"<<choose(num,del)+1<<"个猴子为王!"<<endl;}四.调试分析:输入猴子总个数,在输入将要淘汰的猴子的个数时,能正确输出所选的大王猴子,调试正确无误。

猴子选大王 课程设计报告

猴子选大王      课程设计报告

目录一、需求分析 (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猴子选大王的课程设计

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.逐步细化,编译各个函数。

C++猴子数大王-数据结构课程设计

C++猴子数大王-数据结构课程设计

-- Array《数据结构》课程设计报告题目猴子选大王学生姓名学号专业班级指导老师方霞设计日期 2010.03.04指导老师评阅意见:一设计目的数据结构课程设计是学习计算机程序设计的一个重要环节。

它不仅能加强和加深数据结构所学内容,提高学生实际运用实践能力,培养实际作风,为学习计算机类后续课程和今后的计算机类系统开发奠定坚实而又牢固的基础。

通过课程设计,使学生熟练掌握数据结构课程中所学的理论知识,并实际应用,通过综合运用数据结构的基本知识来解决实际问题,加强学生分析和解决问题的能力。

二设计内容2.1 任务描述1)任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

2)要求:输入数据:输入m,n,m,n 为整数,n<m3)输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。

2.2 存储结构采用了建立单循环链表和monkey结构体相结合的存储方式。

以下是monkey结构体的存储结构形式,其中包括了记录了猴子号码的int 型的number数据元素,和Link List型的指针next。

typedef struct monkey{int number;struct monkey *next;}Monkey,*LinkList;2.3 基本算法这个算法的主要流程为:首先通过设置一个monkey得结构体来建立单循环链表所需要参数number,next,利用主函数main来完成链表,编号,选择猴子王的算法来完成整个程序设计,这个过程中还不断的调用for循环来求得猴子王。

2.4 算法或程序模块在程序中以下代码是用来给猴子编号和数数选择是留下还是离开的:for(i=1;i<m;i++){p=(LinkList)malloc(sizeof(Monkey));q->next=p;q=p;}q->next=head;//建立单循环链表p=head;//p指向了链表头结点printf("对%d只猴子进行编号如下:\n",m);for(i=1;i<=m;i++){p->count=i;//依顺序对15只猴子进行编号printf("%d号猴子编号为:%d\n",p->count,p->count);p=p->next;}i=0;p=head;printf("\n");while(1){i++;printf("%d号猴子报数:%d\n",p->count,i);if(p->next==p)break;if(i==n){i=0;printf("%d号猴出局离开\n",p->count);printf("\n");q->next=p->next;p=q->next;}下面的代码是用主函数main来完成的,其中这个过程汇总,设计了一个单循环链表LinkList,使用了几个for循环来编号,数数出局离开来选择猴子王的。

数据结构猴子选大王课程设计

数据结构猴子选大王课程设计

《数据结构》课程设计题目:猴子选大王一、需求分析:猴子选大王是一个很古老经典的题目,融知识性、娱乐性与一体,能让人产生较大的兴趣,因此,编写程序实现之是意见很有意思的事情。

猴子选大王的问题可以归结为筛选和排序的问题,筛选主要是从一群猴子中,比如M 个中每次选出一只猴子,该猴子离开;排序主要是第N只猴子离开后,剩下的猴子要重新编号,继续上面的过程,知道选出猴子大王。

为了增强与用户的交互,程序需要一个比较好的操作界面,用户在其中输入猴子总数M 和被淘汰猴子数目(游戏规则数字)N,输入要符合要求,即M>N,否则要提示错误信息;在点了确定以后要弹出信息提示对话框,告知使用者猴子大王的编号。

二、概要设计:1.程序中使用的存储结构:Node结构体struct node{int num;struct node *link;} node;结构体指针变量node *head,*p,*q;2.由于本题数据元素的个数不可预知,同时对于报完一次之后对于下一次的报数,由于已经排除了一部分猴子,猴子的顺序被打乱,所以使用链表。

链表是动态的,可以在需要的时候增长和减少其长度,而静态数据结构数组是在编译时分派内存的,其大小是不可改变的,而且会出现内存浪费的情况。

我认为单循环链表能较好的解决问题,在建立循环链表时,因为链表的大小由输入决定,因此与匹配的结点数也是变化的,所以要进行动态内存分配。

假设猴子的个数是n,m是要淘汰的编号,那么建立一个n长的链表,链表最后一个元素的next指针指向第一个元素,这样就形成一个循环链表,而链表的数据域储存的就是猴子的编号。

3.整体流程图如下:开始输入M的值输入N的值M > N提示输入错误信息要求重新输入输出猴子大王的编号结束三、详细设计:1.程序首先定义一个结构体如下,其中num用来指示猴子的编号;结构体类型的指针link放在链表中操作;以及一个结构体变量node;struct node{int num;struct node *next;};2.用链表实现课题功能、程序中的异常处理主要放在“确定”事件响应中实现:typedef struct node NODE;NODE *create_link_list(int m){int i;NODE *head, *p, *q;//if (m==0) return NULL;head = (NODE *) malloc(sizeof(NODE));p = head;for (i=1; i<m; i++){p->num=i;q=(NODE *)malloc(sizeof(NODE));p->next=q;p=q;}p->num=m;p->next=head;return (head);}NODE *select_king(NODE **head,int m,int n){NODE *p,*q,*u;int i,d;p=*head;// printf("The header of the list is %d\n",p->num); //指向创建动态链的表头for(i=m;i>1;i--){// printf("Now,the number of monkey is %d\n",i); //检测当前还有多少只猴子for(d=1;d<n;d++){q=p;p=q->next;// printf("Monkey %d\n",q->num); //显示此次参与循环的猴子的编号}u=p->next;q->next=p->next;free(p);p=u;// printf("the next number is %d\n",p->num); //显示下一次循环中的第一个猴子编号}return(p); //容易出错点,长返回值不能清楚}3.该程序的主程序如下:void main(){int a,b;NODE *my_head,*k;printf("请输入猴子个数:\n");scanf("%d",&a);printf("请输入游戏规则中的数字:\n");scanf("%d",&b);if(a<1||b<1)printf("您输入的数字超出了规定的范围!\n");else if(b>=a)printf("输入游戏中的数字只能小于猴子个数!\n");else{my_head=create_link_list(a);k=select_king(&my_head,a,b);printf("按照这种规则,猴王的编号是%d\n",k->num);}}四、调试分析:1.程序运行将会出现如下的界面:2.程序输入数据运行后又将会出现如下的界面:2.测试数据3.结果分析通过以上数据对程序的测试分析可知,本程序很好地完成了题目的要求,并且增加了许多有趣的功能,对意外情况也处理得比较到位。

课程设计猴子选大王

课程设计猴子选大王

课程设计猴子选大王一、教学目标本课程旨在通过《猴子选大王》的故事,让学生掌握成语“猴子选大王”的含义和用法,了解中国传统文化中的成语故事,培养学生的阅读兴趣和语言表达能力。

1.学生能够理解并正确使用成语“猴子选大王”。

2.学生能够讲述《猴子选大王》的故事内容。

3.学生能够了解成语背后的中国传统文化。

4.学生能够通过阅读和讨论,提高自己的语言表达能力。

5.学生能够运用成语“猴子选大王”进行句子创作。

情感态度价值观目标:1.学生能够培养对中国传统文化的兴趣和认同感。

2.学生能够通过学习成语故事,培养正确的价值观和道德观念。

二、教学内容本课程的教学内容以《猴子选大王》的故事为主线,通过讲解成语的含义和用法,引导学生了解中国传统文化中的成语故事。

1.导入:介绍成语“猴子选大王”的由来和含义。

2.新课内容:讲解《猴子选大王》的故事情节,分析成语的用法。

3.练习:学生进行成语接龙游戏,巩固所学内容。

4.拓展:引导学生思考成语在现实生活中的应用,进行案例分析。

教材章节:《猴子选大王》故事及相关练习。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解成语的含义和用法,引导学生理解故事内容。

2.讨论法:学生分组讨论成语的用法和现实生活中的应用。

3.案例分析法:教师提供案例,引导学生分析成语在案例中的作用。

4.实验法:学生进行成语接龙游戏,提高语言表达能力。

四、教学资源本课程所需教学资源包括:1.教材:《猴子选大王》故事及相关练习。

2.参考书:提供有关成语和中国传统文化的参考资料。

3.多媒体资料:图片、视频等辅助教学资料。

4.实验设备:成语接龙游戏所需道具。

教学资源的选择和准备应充分支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本课程的评估方式包括平时表现、作业和考试,以全面客观地反映学生的学习成果。

1.平时表现:通过观察学生在课堂上的参与度、讨论和提问,评估学生的学习态度和理解程度。

funcode实验报告范例

funcode实验报告范例

源代码
在Main.cpp文件中
//----------------------------------------------------------------------------// //----------------------------------------------------------------------------#include "CommonAPI.h" #include<stdio.h> #include<time.h> float g_fDelayTime; int int int int int int int g_iMonkeys[6] = {1,2,3,4,5,6}; g_iNumMokeys=6; g_iNumLoseMonkeys=0; g_iMoveMonkey = 0; g_iChooseMonkey; g_flocation[6]; g_iGameState=0;
x = -40+i*16; y = -3; dSetSpritePosition(szName,x,y); g_flocation[i] = x; } // 引擎主循环,处理屏幕图像刷新等工作 while( dEngineMainLoop() ) { // 获取两次调用之间的时间差,传递给游戏逻辑处理 float fTimeDelta = dGetTimeDelta(); if(g_iMoveMonkey > 0) { g_fDelayTime -= fTimeDelta; if(g_fDelayTime<0) { g_fDelayTime = 1; char *szName dMakeSpriteName("monkey",g_iMonkeys[g_iChooseMonkey]); dSetSpritePosition(szName, g_flocation[g_iChooseMonkey],-3); g_iChooseMonkey++; g_iMoveMonkey--; } } else if(g_iNumMokeys > 1 && g_iGameState != 0) { g_iGameState = 1; } else if(g_iGameState != 0) { g_iGameState = 0; dSetSpriteVisible("start",true); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学与计算机学院
课程设计说明书课程名称: 数据结构课程设计
课程代码: 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 需求分析.............................. 错误!未定义书签。

1.1任务与分析..................................... 错误!未定义书签。

1.2测试数据....................................... 错误!未定义书签。

2 概要设计.............................. 错误!未定义书签。

2.1 ADT描述....................................... 错误!未定义书签。

2.2程序模块结构................................... 错误!未定义书签。

2.21 结构体定义................................... 错误!未定义书签。

2.3 各功能模块.................................... 错误!未定义书签。

3 详细设计............................. 错误!未定义书签。

相关文档
最新文档