任务描述 题目描述:有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 ####相关知识(略) ####编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。 输入 初始人数n 输出 最后一人的初始编号 ####测试说明 样例输入: 3 样例输出: 2 开始你的任务吧,祝你成功!
时间: 2024-02-15 22:05:59 浏览: 25
```
#include <stdio.h>
#define MAXN 1000
int main()
{
int a[MAXN];
int n;
int i, j, k;
int left; // 记录剩余的人数
int next; // 记录下一个要报数的人的位置编号
scanf("%d", &n);
for(i=0;i<n;i++){
a[i]=i+1;
}
left = n;
next = 0;
while(left > 1) {
if(a[next]!=0){
k = 1;
while(k != 3){
if(a[next]!=0){
k++;
}
if(k==3){
a[next]=0;
left--;
}
next=(next+1)%n;
}
}
next = (next+1)%n;
}
for(i=0;i<n;i++){
if(a[i]!=0){
printf("%d\n",a[i]);
break;
}
}
return 0;
}
```
阅读全文