我的出圈问题解决了!我找到错误并已经修改好程序了,再次感谢lqflyc的帮助!
哈哈哈哈哈哈!c语言不负有心人!
在我临睡前我一步步检查我的程序,重新思考,终于找到了我的程序错误的地方
修改后,第2天一试,顺利输出正确结果!!!
我的程序可能是这个问题用数组解决最简洁的一种,现在发出来让大家指点下我的代码!!!
#define M 8
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[M],b[M];
int m=0,n,q,i,p;
for(q=0;q <M;q++)
a[q]=1;
printf( "n= ");
scanf( "%d ",&n);
for(i=0;i <M;i++)
{ for(p=1;p <n;)/*出圈标记为0,不出时为1*/
{ if(a[m]==1)
{ m++;
if(m> =M)
m=0;
p++;
}
else{
m++;
if(m> =M)m=0;
}
}
if(a[m]==0){do{/*这段代码保证数够人数之后下一个出来的是人,而不是一个空位置,懂了吗,我以前就是没有这段程序才错的*/
m++;
if(m> =M)m=0;
}while(a[m]==0);
}
a[m]=0,b[i]=m+1;
}
for(q=0;q <M;q++)
printf( "%d\t ",b[q]);
system( "pause ");
return(0);
}
另外说下尽管lqflyc指出的错误并不正确,其实是错在了别的地方,以前的程序是
数够人就把下一个可能已经出过圈的人又出圈才出错的,不过lqflyc给了我提示!!
[解决办法]
问题是什么?上来就是代码,看的莫名其妙