哪里错了 不知道怎么改 死循环这里怎么办
哪里错了 不知道怎么改 死循环这里怎么办

哪里错了 不知道怎么改 死循环这里怎么办
哪里错了 不知道怎么改 死循环这里怎么办

变量cnt 重置问题在每次进入循环时cnt被重置为0,这会导致计数错误
没有处理标记淘汰的逻辑

#include <stdio.h>
int a[1005];
int main() {
int n;
while (1) {
printf("请输入人数 (输入0或负数退出): ");
scanf("%d", &n);
if (n <= 0) {
printf("程序结束。\n");
break;
}
for (int i = 0; i < n; i++) {
a[i] = 1;
}
int cnt = 0;
int remaining = n;
int index = 0;
while (remaining > 1) {
if (a[index] == 1) {
cnt++;
if (cnt % 3 == 0) {
a[index] = 0;
remaining--;
printf("编号为 %d 的人被淘汰\n", index);
}
}
index = (index + 1) % n;
}
for (int i = 0; i < n; i++) {
if (a[i] == 1) {
printf("最后剩下的人是编号为 %d 的人\n", i);
break;
}
}
}
return 0;
}