有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。
要求:
- n大于30;
- 输出每次退出人的编号
- 输出最后留下人的编号
#include<stdio.h> #define MAXLINE 200 int main() { int a[MAXLINE]; int i,n,count=0,index; printf("Input a number:"); scanf("%d",&n); index=n; for(i=0;i<n;i++){ a[i]=0; } i=0; while(n>1){ if(a[i]==0){ count++; if(count==3){ a[i]=1; printf("%d号退出 ",i); n--; count=0; } } i++; if(i==index) i=0; } for(i=0;i<index;i++){ if(a[i]==0) printf("最后留下人的编号:%d",i); } return 0; }