用C语言写程序:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **输入格式要求:"%d" 提示信息:"please input the total of numbers:" **输出格式要求:"%d is left\n" 程序运行示例如下: please input the total of numbers:30 29 is left
时间: 2023-12-03 14:05:05 浏览: 126
python 有n个人围成一圈,顺序排号,问最后留下的是原来第几号的那位。(示例)
5星 · 资源好评率100%
好的,我可以帮你写这个程序。以下是代码:
```c
#include<stdio.h>
int main(){
int n,i,k,m,num[100]={0},count=0; //定义变量
printf("please input the total of numbers:");
scanf("%d",&n); //读入n
m=n; //将n赋值给m
for(i=0;i<n;i++){
num[i]=i+1; //用数组存储每个人的编号
}
i=0; //从第一个人开始
k=0; //报数从1开始
while(m>0){
if(num[i]!=0){
k++; //报数加1
}
if(k==3){ //如果报到3
num[i]=0; //将这个人的编号设为0
k=0; //报数重新从1开始
count++; //记录已经出圈的人数
m--; //总人数减1
}
i++; //继续报数
if(i==n){ //如果已经报到最后一个人,从头开始
i=0;
}
if(count==n-1){ //如果只剩下一个人,跳出循环
break;
}
}
for(i=0;i<n;i++){ //找到剩下的那个人的编号
if(num[i]!=0){
printf("%d is left\n",num[i]); //输出结果
break;
}
}
return 0;
}
```
你可以将上面的代码复制到本地编译运行,输入任意正整数n即可得到最后留下的人的编号。
阅读全文