直接干,细节太多!代码有点丑,但是还是留着吧!
#include<stdio.h>
//数三出局:条件很多(包括隐含的条件)
int main()
{
int num,n; //总人数和间隔
printf("总人数:\n");
scanf("%d",&num);
printf("间隔人:\n");
scanf("%d",&n);
int person[num],ren[num],t=0,i=0;
for(; i<num; i++) person[i]=i+1;
i=0;
while(t!=num-1) //剩下一个人的时候
{
static int count=0;
if(person[i]!=0) count++; //3没被数过
if(count==n)
{
ren[t++]=person[i]; //加入顺序
person[i]=0;
count=0;
}
i++;
i= i==num ?0:i; //大循环
}
for(i=0;i<num;i++) if(person[i]!=0) {ren[t++]=person[i];break;}
printf("最后一个出局的人序号:%d\n",ren[t-1]);
printf("出局顺序:");
for(i=0; i<num; i++)
{
if(i%5==0) printf("\n");
printf("%d\t",ren[i]);
}
}