普通
int NSf(int *arr, int m)
{
int number=0,d = 10;
int loop = 1;
for (int i = 0; i < 10; i++)
{
if (arr[i]>0)
{
loop++;//不为0说明未出列可以报数
if (loop==m)
{
printf("GETout""%d\n", arr[i]);
arr[i] = 0;//报到3了出局
number++;//统计个数
loop = 0;//下一个人继续从0开始报数
}
if (number==9)
{
for (int j = 0; j < 10; j++)
{
if (arr[i]>0)
{
printf("%d\n", arr[i]);
}
break;
}
}
}
if (i==9)
{
i = -1;
}
}
}
优化写法(原理相同)
while (k < n - 1)
{
if (a[i] != 0)
m++;
if (m == 3)
{
a[i] = 0;
m = 0;
k++;
}
i++;
if (i == n)
i = 0;
}
while (a[i] == 0) i++; printf("%d is left\n", a[i]);