我这样以为是每次退出一人后还是从原先报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,是不是要把所有出去的位置打印出来?*/
}