这个程序是一组人循环报数,报到3的退出,求最后剩下的那个人是第几号,改了好多次都调试不成功。所以来请教各位前辈们。谢谢。
//报数,报到3的退出,求最后剩下的成员序数
#include
void function(int *a, int n)
{
int i = 0, k = 1;
while (n > 1)
{
while (1)
{
if ( (a[i] != '\0') && (k != 3) && (a[i] != 0) )
{
i++;
k++;
}//end-if
else break;
}//end-while
if (a[i] == '\0') i = 0;
else if (a[i] == n+1) i++;
else if (k == 3)
{
a[i] = n;
k = 1;
i++;
n--;
}
}
}
/*-----------------------------------------------------------*/
int main(void)
{
int a[100];
int i, n;
printf("amount : ");
scanf("%d", &n);
for (i = 0; i < n; i++) a[i] = 1;
function(a, n);
for (i = 0; i < n; i++)
{
printf("The remaining amount is %d.\n", a[i]);
}
return 0;
}