C语言-报数
题目描述
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
输入
初始人数n
输出
最后一人的初始编号
# include<stdio.h>
int main()
{
int m,n,i,j=0,array[100];
scanf("%d",&m);
for(n=0;n<m;n++)
array[n]=1; //在位的人的标志是1
while(n!=1)
{
for(i=0;i<m;i++)
{
if(array[i]!=0) //人在位没有退出
{
if(j==2) //报数字,从1到3跟从0到2,效果一样
{
array[i]=0; //退出
n--;
}
j++; //继续报数
j%=3; //让j在0到2上面循环
}
}
}
for(i=0;i<m;i++)
if(array[i])
printf("%d",i+1);
return 0;
}