学了一年的c,这道题还是不会(sad)
有n个学生围城一圈,顺序排号,从第1个学生开始报数(从1到3报数),凡报到3的学生退出圈子,到最后只留下一名学生,问最后留下来的是原来第几号学生?
程序代码:#include <stdio.h>
#define n 100
int main()
{
int array[n] = {};
int quitNum = 0;
int nCount = 0;
for(int i = 0; quitNum < n - 1; ++i)
{
if(i >= n)
i = 0;
if(array[i] == 1)
continue;
++nCount;
if(nCount == 3)
{
array[i] = 1;
nCount = 0;
++quitNum;
}
}
for(int i = 0; i < n; ++i)
{
if(array[i] == 0)
{
printf("最后留下来的是原来第%d号学生", i + 1);
break;
}
}
return 0;
}