猴子选王问题-(c语言编程)

来源:百度知道 编辑:UC知道 时间:2024/05/11 14:10:48
有100个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?

main()
{
void left(int *p, int n);
int i, num[100], n;
printf("How many monkey?");
scanf("%d",&n);
for(i=0;i<n;i++)
num[i]=i+1;
left(num, n);
for(i=0;i<n;i++)
if(num[i]!=0)
printf("No.which left last is :%d",num[i]);
}

void left(int *p, int n)
{
int i=0, out=0, count=0;
while(out<n-1)
{
if(*(p+i)!=0)
count++;
if(count==3)
{
*(p+i)=0;
count=0;
out++;
}
i++;