
急需如下要求的C语言程序代码
任务:一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最...
任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
输入数据:输入m,n m,n 为整数,n<m
输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能 展开
要求:
输入数据:输入m,n m,n 为整数,n<m
输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能 展开
2个回答
展开全部
#include <stdio.h>
int joseph(int a[],int m, int n)
{
int i,j,k;
i=-1;k=1;
while(1)
{
for(j=0;j<n;)
{i=(i+1)%m;
if(a[i]!=0)
j++;
}
if(k==m)break;
/* printf("%d ,", a[i]);*/
a[i]=0;
k++;
}
return a[i];
}
main()
{
int a[1000]={0};
int m,n,i;
printf("Please enter m, n:");
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
a[i]=i+1;
printf("NO. %d is the KING.\n",joseph(a,m,n));
}
int joseph(int a[],int m, int n)
{
int i,j,k;
i=-1;k=1;
while(1)
{
for(j=0;j<n;)
{i=(i+1)%m;
if(a[i]!=0)
j++;
}
if(k==m)break;
/* printf("%d ,", a[i]);*/
a[i]=0;
k++;
}
return a[i];
}
main()
{
int a[1000]={0};
int m,n,i;
printf("Please enter m, n:");
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
a[i]=i+1;
printf("NO. %d is the KING.\n",joseph(a,m,n));
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询