#include<stdio.h>
#define n 100
int main()
{
int i,k,count;
int a[n];
for(i = 0;i < n;i++)
{
a[i] = i + 1;
}
i = 0;
k = 0; //读数
count = 0;
/*******下面一段代码呢就是!!给a[i]中被踢出的元素进行重新赋值,赋0,对整个a[i]数组进行一次又一次的遍历,直到最后有n-1个元素被重新赋值0;*********/
while(count < n-1) //当被踢出的人的个数达到n-1的时候跳出while();
{
if(a[i] != 0) //当a[i]不等于0,其实也就是只要a[i]还没有被重新赋值0,那么就要遍历他,不放过他。
{
k++;
}
if(k == 3)
{
k = 0;
count++;
a[i] = 0;
}
i++;
if(i == n) //!!遍历到a[n]之后,重新给i赋值0,也就是从a[0]继续进行又一次的遍历;也就是上面注释中说的进行一次又一次的遍历
{
i = 0;
}
}
for(i = 0;i < n;i++)
{
if(a[i] != 0)
{
printf("%d\n",a[i]);
}
}
return 0;
}
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
最新推荐文章于 2023-11-19 10:54:10 发布