编号为 1,2,3,…,n 的 n 个人围坐一圈,任选一个正整数 m 作为报数上限值,从第一个人开始按顺时针方向报数,报数到 m 时停止,报数为 m 的人出列。
从出列人的顺时针方向的下一个人开始又从 1 重新报数,如此下去,直到所有人都全部出列为止。
主要思路:每次找到一个就填充为零
void myfun(int *array,int size,int stop)
{
  
  int total=0;
  int step=0;
  int i;
  while(1)
  {
    int count=0;
    while(1)
    {
      i=step;
      for(;i<size;i++)
      {
        if(array[i]!=0)
        {
          count++;
          if(count==stop)
          {
            i++;
            break;
          }
        }
      }
      if(count==stop)
      {
        printf("%d\n",array[i-1]);
        array[i-1]=0;
        total++;
        step=i;
        break;
      }
      else
      {
        step=0;
      }
    }
    if(total==size)
      break;
  
  }
}int main()
{ 
  int array[100]={0};
  for(int k=0;k<100;k++)
  {
    array[k]=k+1;
  }
  myfun(array,sizeof(array)/sizeof(int),9);
  return 0;
}                
                










