#include<stdio.h> int main() { int i=0; int j = 0; int count=0; int count2 = 99; int pop[100] = { 0 }; while (count2 != 0) { for (int j = 0; j < 100; j++) { if (pop[j] != 1) { i = j; break; } } for ( i=j; i < 100; i++) { if(pop[i]==0) count++; if (count == 5) { pop[i] = 1; count2--; } if (count > 5) count = 1; } } for (int k = 0; k < 100; k++) { if (pop[k] == 0) printf("%d\n", k + 1); } return 0; }输出没结果
时间: 2023-12-05 10:04:47 浏览: 85
这段代码的输出语句是在一个for循环中的,用来输出最后剩下的那个人的编号。但是,这段代码中的输出语句在最后一个for循环中,用于输出还在圈内的人的编号。但是,在这段代码中,1表示已经出圈,0表示还在圈内,所以需要将代码中的输出语句中的判断条件从`if (pop[k] == 0)`改为`if (pop[k] == 1)`,这样才能输出已经出圈的人的编号。同时,由于输出语句应该在出圈的时候输出,所以需要将输出语句放到出圈的if语句中。
修改后的代码如下所示:
```
#include<stdio.h>
int main() {
int i = 0;
int count = 0;
int count2 = 99;
int pop[100] = { 0 };
while (count2 != 0)
{
for (int j = 0; j < 100; j++)
{
if (pop[j] != 1)
{
i = j;
break;
}
}
for (; count2 != 0 && i < 100; i++)
{
if (pop[i] == 0)
count++;
if (count == 5)
{
pop[i] = 1;
count2--;
printf("%d\n", i + 1); // 出圈时输出编号
}
if (count > 5)
count = 1;
}
}
for (int k = 0; k < 100; k++)
{
if (pop[k] == 1) // 输出已经出圈的人的编号
printf("%d\n", k + 1);
}
return 0;
}
```
现在程序可以正确输出最后剩下的那个人的编号和已经出圈的人的编号。
阅读全文