一道有趣的编程题,大家都来做一做撒
将班里的 n 个人围成一圈,顺序编号。从第一个人开始报数(从 1 到 3 报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人就被选为班长。请问按照这个规则,选出的班长是原来编号为第几号的那位.
看别人做的有什么意思撒,自己做才过瘾,我做了一下,大家看看对不对撒???????
#include<stdio.h>
void main()
{
int i,n,a[100],m,j,k;
printf("请输入全班的人数:");
scanf("%d",&n);
k=n;
for(j=0;j<n;j++)
{
a[j]=j+1;
}
k=0; //要淘汰的计数器
m=0; //1~3
i=0;
while(k<n-1)
{
if(a[i]!=0)
{
m++;
}
if(m==3)
{
a[i]=0;
k++;
m=0;
}
i++;
if(i==n)
{
i=0;
}
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
printf("%3d",a[i]);
}
}
printf("\n");
}