一堆人报数问题退出问题,问题代码求指点迷津
20. n个人围成一圈,1,2,3循环报数,报到3的人退出。到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。若n=6,则输出1;若n=10,则输出4;若n=100,则输出91。函数int fun(int n)实现上述功能,返回n个人中最后余的1人的起始序号。
#include<stdio.h>
#include<stdlib.h>
{
int i,t,b;
int *a=(int *)malloc(sizeof(int)*(n+1));
for(i=1;i<=n;i++)
a[i]=1;
for(i=1,b=0,t=0;;i++)
{
if(a[i]==1)
{
b++;
if(b==3)
{
b=0;
t++;a[i]=0;
}
}
if(t==n-1) break;
if(i==n) i=0;
}
for(i=1;;i++)
if(a[i]==1) break;
free(a);
return(i);
}
void main()
{int m;
scanf("%d",&m);
printf("n=%d\n",fun(m));
}
旧得快烂掉的题,以前用静态数组做可以正常输出结果,但是现在用动态数组运行都不通过,报错Declaration syntax error,并且提示在定义和#include<stdio.h>之间,就是不知道怎么修正错误,希望诸位高手指点下,第一次发帖,谢谢了