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一定的情况下,你应该站在什么位置上?
这个怎么编程?
谢谢大家! 展开
我的程序是这样的:
#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一定的情况下,你应该站在什么位置上?
这个怎么编程?
谢谢大家! 展开
展开全部
#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");
}
试试...
#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");
}
试试...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询