详细解决方案
报数问题,循环淘汰特定的数(C语言)
热度:54 发布时间:2023-11-02 08:41:37.0
| 题目描述 |
| 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 |
| 输入 |
| 初始人数n |
| 输出 |
| 最后一人的初始编号 |
| 样例输入 |
| 3 |
| 样例输出 |
2 #include<stdio.h>
int main()
{int M=3;int i,k=0,num[128],n,m=0; //k来计算总共淘汰的人数,a[1000]存储人数,n为总共的人数,m为每3个一循环scanf("%d",&n);for (i=0;i<n;i++) //循环赋值为1{num[i]=1;}for(i=0;i<n;i++){if(num[i]!=0){m++;}if(m==3) //m==3,m重新赋值为0,k计算淘汰的人数,同属num[i]=0{m=0;k++;num[i]=0;}if(i==(n-1)) //判断数组是否到达最后一个,到达最后i=-1,是数组从头开始下一次循环i=-1;if(k==(n-1))break;}for(i=0;i<n;i++) //找出数组中不为0的,下标加1就是最后剩余的人的最开始的编号{if(num[i]!=0){printf("%d\n",i+1);}}return 0;
}
|