有一个转圈的问题,10个人围成一圈。找一人开始数,数到3的走开,我的程序咋不行啊

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:03:11
代码如下
#include"stdio.h"
void main()
{int m;
int n=1,i=0,t=0;
int a[10];

while(i<9)
{ while(t<3)
{if(a[n-1]!=1)
{n++;
if(n>9)
n=n-9;

t++;
};
}
a[n-1]=1;
i++;
t=0;
}
for(m=0;m<10;m++)
{if(a[m]!=1)
printf("%d",m);
}
}
可是调试的时候并不是的啊!
实际问题是连续的转圈
直到剩下一人
可这程序
就是只循环了一遍,不转第二次了,
为什么啊?

while(i<9)
{ while(t<3)
{if(a[n-1]!=1)
{n++;
if(n>9)
n=n-9;

t++;
}; //这个分号是多余的,但不影响。
}
//上面这段程序中,当除去了3,6,9,2后,t=0,进入循环。但a[3]已经等于1乐,所以if语句里面的都不会执行,while(t<3){}中除了if语句没有别的语句了。所以就一直在空循环。

#include"stdio.h"
#include<memory>
void main()
{
int m;
int n=0,i=0,t=0; //n的初始值为0
int a[10];
memset(a,0,sizeof(a));
while(i<9)
{
while(t<3)
{
n++; //这些要放在外面,否则就死循环了
if(n>10) //
n=n-10; //
if(a[n-1]!=1)
{
t++;
}

}
printf("%d ",n);
a[n-1]=1;
i++;
t=0;
}
for(m=0;m<10;m++)
{
if(a[m]!=1)
printf("%d",m+1);
}
}

你的错误在于代码写的不规范,你t++后面多个“;”就不计了,第二次不转是因为在第二次时候a[n-1]==1了,while(t<3)是个死循环了,能出来就奇怪了