#include
#define N 17 //人数
#define M 11 //出局人号码
void main()
{
int a[N], i, call_n = 0, out_n = 0;
for (i = 0; i < N; i++) a[i] = 0;
i = 0;
while (1) { //循环报数
if(a[i] == 0) { //如果健在
if (out_n == (N - 1)) break; //如果仅剩一人
call_n++; //报数
call_n %= M; //最大为M,到了M就从0开始
if(call_n == 0) {
a[i] = 1; //出局标记
out_n++;
printf("%d ", i + 1);//显示出局人号码
}
}
i++; i %= N; //循环转向下一人
}
printf("\n最后剩余者的编号是:%d\n", i + 1);
}