求大神编一段C程序,猴子当大王.
最佳回答
最新回答共有2条回答
-
2026-04-01 07:03:04幽默的酸奶
回复用链表写的话比较好,资源占用少;用数组的话也行,如下:这是一种关于约瑟夫循环的问题,所以一般用的循环单链表数据结构,具体细节参照我百度空间的一篇文章#include "stdio。h"#include <stdlib。h>void main(void){\x05int result(int *p,int n,int limit);\x05int n=0;//总人数\x05int m=0;//报数截止号\x05int *p;\x05for(;;)\x05{\x05\x05printf("input number of n and m :");\x05\x05scanf("%d%d",&n,&m);\x05\x05if (m<=0 || n<=0)\x05\x05{\x05\x05\x05exit(0);\x05\x05}\x05\x05p=(int *)malloc(n*sizeof(int));\x05\x05printf("The king is NO。%d\n",result(p,n,m));\x05\x05delete [] p;\x05}}int result(int *p,int n,int limit){\x05int i=0;\x05for(i=0;i<n;i++)\x05\x05p[i]=i+1;\x05i=0; // i为每次循环时计数变量 \x05int k=0; // k为按1,2,3。。。limit报数时的计数变量 \x05int m=0; // m为退出人数 \x05while (m<n-1) // 当退出人数比n-1少时(即未退出人数大于1时)执行循环体\x05{\x05\x05if (p[i]!=0) k++; //如果编号为0,就不报数;如果编号不为0,报数加1\x05\x05if (k==limit) // 将退出的人的编号置为0 \x05\x05{\x05\x05\x05p[i]=0;\x05\x05\x05k=0;//重新开始报数\x05\x05\x05m++;//退出人数加1\x05\x05}\x05\x05i++;\x05\x05if (i==n) i=0; // 报数到尾后,i恢复为0 \x05}\x05i=0;\x05while(p[i]==0) i++;\x05return p[i];}测试结果:
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
