分类：电脑/网络-程序设计
问题：c语言的一个简单问题有n个人围成一个圈顺序排号从开始报数1
有n个人围成一个圈 顺序排号 从开始报数 1-3，报到3的人退出圈子 ，问最后留下的是原来的几号?以下是我的#include<stdio.h>#define N 100int main(void){    int a[N],n,*p=a,m=0,x=0,i=0;    printf("请输入围成圈的人数:");    scanf("%d",&n);    for(i=0;i<n;i++)    *p++=i+1;    p=a;    while(m<n-1)    {  有n个人围成一个圈 顺序排号 从开始报数 1-3，报到3的人退出圈子 ，问最后留下的是原来的几号?以下是我的#include<stdio.h>#define N 100int main(void){    int a[N],n,*p=a,m=0,x=0,i=0;    printf("请输入围成圈的人数:");    scanf("%d",&n);    for(i=0;i<n;i++)    *p++=i+1;    p=a;    while(m<n-1)    {          if(*p!=0)          {                   x++;                   if(x%3==0)                   {                             *p=0;                             m++;                             }                             }    p++;    i++;    if(i==n)    {            i=0;            p=a;            }}p=a;for(;*p==0;){p++;}printf("第%d位是最后留下的。",*p);return 0;} 理论上 输入8应该输出7 为什么我的输出5 错在哪里
回答：*p++=i+1; 
p=a; 
while(m<n-1) 
{ 
if(*p!=0) 
{ 
x++; 
if(x%3==0) 
{ 
*p=0; 
m++; 
} 
} 
p++; 
i++; 
if(i==n) 
{ 
i=0; 
p=a; 
} 
} 
p=a; 
for(;*p==0;) 
{p++;} 这段里面有错的