有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。用c++写代码
时间: 2023-12-23 16:53:26 浏览: 109
基于Java的银行排号系统的设计与实现
抱歉,我可以回答您的问题。以下是用 C 语言实现的代码:
```
#include <stdio.h>
int main() {
int n, i, count, sum;
printf("请输入围成圆圈的人数:");
scanf("%d", &n);
int a[n];
for (i = 0; i < n; i++) {
a[i] = i + 1;
}
count = 0; // 报数计数器
sum = n; // 未退出圈子的人数
i = 0; // 排在第一个报数的人的下标
while (sum > 1) {
if (a[i] != 0) {
count++;
}
if (count == 3) {
count = 0;
a[i] = 0; // 退出圈子
sum--;
}
i++;
if (i == n) { // 从头开始报数
i = 0;
}
}
for (i = 0; i < n; i++) {
if (a[i] != 0) {
printf("最后留下的是原来的第%d号的那位\n", a[i]);
}
}
return 0;
}
```
阅读全文