题目如下
代码
#include <stdio.h>
int main(void) {
/*********Begin*********/
int i, k, m, n, s[50];
int *p;
p = s;
scanf("%d", &n);
for (i = 0; i < n; i++) {
*(p + i) = i + 1; //编号
}
i = 0; //正在报数的人的编号
k = 0; //报数时的计数变量
m = 0; //退出的人数
while (m < n - 1) {
if (*(p + i) != 0) //跳过退出的人
k++;
if (k == 3) { //对退出的人编号为0;
*(p + i) = 0; //改变地址
k = 0;
m++;
}
i++;
if (i == n)
i = 0; //一轮结束,重新开始报数
}
while (*p == 0)
p++;
printf("%d\n", *p);
/*********End**********/
return 0;
}
while (*p == 0)
p++;
printf("%d\n", *p);
这几行是什么意思可以解释一下吗?