当前位置: 代码迷 >> 综合 >> 报数问题,循环淘汰特定的数(C语言)
  详细解决方案

报数问题,循环淘汰特定的数(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;
}

 

 

  相关解决方案