C语言求助!

这要怎么写?

#include<stdio.h>

int n,s=1,m,out,a[11];        /*n为所有人数,out为出局的人*/

void josegh( );

int main()

{ int i;

  scanf("%d%d",&n,&m);

  for (i = 1; i <= n; i++)        /*定义数组a,按顺序赋值*/

    a[i] = i;

  while (n != 0)

    josegh ( );

  return 0;

}

void josegh ( )             /*每当出局一个人,n减1,数组重新排列*/

{ out = s + m - 1;

  while (out > n)

    out-= n;

  printf ("%d ",a[out]);

  n--;

  s=out;

  for(; out <= n; out++)

    a[out] = a[out+1];

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-01
第2个回答  2020-11-02
#include <stdio.h>
int lastRem(int n, int m, int i) {
if(1==i) return (n+m-1)%n;
else return (m+lastRem(n-1,m,i-1))%n;
}
int main()
{
int n, m, i = 0;
scanf("%d %d",&n, &m);
while(i < n)
printf("%d, ",1 + lastRem(n, m, ++i));
return 0;
}
相似回答