C语言程序设计,猴子选大王

N只猴子选大王,选举方法如下:所有猴子按1,2,3,…,N编号围坐一圈,从第1个猴子开始报数,报到M号退出圈外,如此循环报数,直到圈内只剩下一个猴子,即为大王。编程输出出... N只猴子选大王,选举方法如下:所有猴子按1,2,3,… ,N编号围坐一圈,从第1个猴子开始报数,报到M号退出圈外,如此循环报数,直到圈内只剩下一个猴子,即为大王。编程输出出列序号及大王的原始序号。N和M的值由键盘输入。
我的程序是这样的:
#include<stdio.h>
void main()
{
int a[1000],n,m,i,j,count=0;
printf( "please input the number of the monkeys:");
scanf("%d",&n);
for(i = 1; i<=n;i++)
printf("%4d",i);
putchar('\n');
printf( "please input the number of the factor :");
scanf("%d",&m);
while(count!=n-2)
{
j=1;
while(j<m)
{i=(i+1)%n;if(a[i]!=0)j++;}
a[i]=0; count++;
i=(i+1)%n;
}
printf("The King of these monkeys is number\t%d\n",i);
}

我知道最后print语句最后的的i有问题,但不知道应该是什么,麻烦大家告诉我!
还有,如果你想成为剩下的那一个,在N一定的情况下,你应该站在什么位置上?
这个怎么编程?
谢谢大家!
展开
 我来答
2010KK2010
2010-11-10 · TA获得超过386个赞
知道答主
回答量:138
采纳率:0%
帮助的人:153万
展开全部
#include<stdio.h>
#include<stdlib.h>
main()
{ int a[50];
int i,j,M,N,t=0;
printf("input two number.\n");
scanf("%d %d",&N,&M);
for(i=0;i<N;i++)
a[i]=i+1;
for(j=1,i=0;;j++,i++)
{
if(i==N)i=0;
if(a[i]==0){j--;continue;}
if(j%M==0){a[i]=0;t++;}
if(N-t==1)break;
}
for(i=0;i<N;i++)
if(a[i]!=0) printf("猴王是第%d个.\n",a[i]);
system("pause");
}
试试...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
helen_box
2010-11-15 · 超过14用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:34.8万
展开全部
printf("The King of these monkeys is number: %d\n",i);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式