用c语言编一个有n个人围成一圈,顺序排好。从第一个人开始报数(从1到3报数)凡报到3的人退出圈子,问最后留下的是院的第几号人)
时间: 2023-12-23 15:47:44 浏览: 32
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入人数:");
scanf("%d", &n);
// 定义一个数组表示圈子中的人,1表示还在圈子中,0表示已经退出
int circle[n];
for (int i = 0; i < n; i++) {
circle[i] = 1;
}
// 定义变量表示当前报数的人和已经退出的人数
int count = 0;
int exitCount = 0;
// 重复报数直到只剩下一个人
while (exitCount < n - 1) {
for (int i = 0; i < n; i++) {
if (circle[i] == 1) { // 如果这个人还在圈子中
count++;
if (count == 3) { // 报到3,退出圈子
circle[i] = 0;
count = 0;
exitCount++;
}
}
}
}
// 找到最后留下的人的编号
int result = 0;
for (int i = 0; i < n; i++) {
if (circle[i] == 1) {
result = i + 1;
break;
}
}
printf("最后留下的人的编号是:%d\n", result);
return 0;
}
```
运行程序后,输入人数,即可得到最后留下的人的编号。