我这样以为是每次退出一人后还是从原先报1的人那里开始报数
但如果按你意思好像是每退出一人后从下一人开始报1,如果这样的话你可以直接输出sum,不用加1后输出。
#define N 100 main() {int i,k,m,num[N],n; scanf("%d",&n); if(n>N) return 0; for(i=0;i<n;i++) num[i]=i+1; k=0; m=0; i=0; while(m<n-1) {if(num[i]!=0) k++; if(k==3) { num[i]==0; /*问题在这一句吧,修改为num[i]=0赋值语句就可以了*/ k=0; m++;} i=(i+1)%n; } i=0; while(num[i]==0) i++; printf("\n%d",i); /*最后这几句是想打印出什么东西,我想按你的意思的话应该不是while,是不是要把所有出去的位置打印出来?*/ }