int f,b;
int x=0;
int m=502;
int n=3;
int r=1;
int main()
{
while(1){
if(m>n)
{
f=m/n;
b=f*n;
r=m-b;
printf("1");
}
if(m<n)
{
f=n/m;
b=f*m;
r=n-b;
printf("2");
}
if(r==0)
{
printf("m=%i n=%i b=%i f=%i",m,n,b,f);
return(1);
}
if(m>n && m>r)
{
printf("4");
m=r;
}
if(n>m && n>r)
{
printf("5");
n=r;
}}
}
因此,如果我在(1)时编辑出来,程序会正确执行一次,但我希望它循环回来,是否是(;;)或while(1)或while(x == 0)终端(或cmd)窗口没有打印任何内容而没有终止
并且打印出来的所有printf都没有打印出来,这意味着我的m和n都没有满足这些条件! 所以我尝试了这个(1){printf(&#34; 0&#34;);其余的代码}
它打印013400000000直到我终止
非常感谢你
我使用kali linux gcc-4.7.2
答案 0 :(得分:0)
#include<stdio.h>
int f,b;
int x=0;
int m=502;
int n=3;
int r=1;
int main()
{
printf("in main\n");
int loop=0;
while(1)
{
printf("in while %d %d %d\n",m,n,r);
printf("if(m>n) %d\n\n",m>n);
if(m>n)
{
f=m/n;
b=f*n;
r=m-b;
printf("m>n 1\n");
}
printf("if(m<n) %d\n\n",m<n);
if(m<n)
{
f=n/m;
b=f*m;
r=n-b;
printf("m<n 2\n");
}
printf("if(r==0) %d\n\n",r);
if(r==0)
{
printf("m=%i n=%i b=%i f=%i\n",m,n,b,f);
return(1);
}
printf("if(m>n && m>r) %d\n\n",m>n && m>r);
if(m>n && m>r)
{
printf("m>n && m>r 4\n");
m=r;
}
printf("if(n>m && n>r) %d\n\n",n>m && n>r);
if(n>m && n>r)
{
printf("n>m && n>r 5\n");
n=r;
}
if(loop++ == 10)
break;
}
}
你的循环工作正常,但是所有conditional if
语句都返回0
,这就是在循环的第一次迭代之后,条件中的printf
语句从未执行的原因。
我没有试图理解你想要达到的目标。但是,我认为,你是编程的新手。
建议之词
总是,使用printf
语句,当你遇到循环问题时,就像我一样。查看正在进行更改的loop variables
或any other variables
将有助于更好地跟踪循环的execution flow
。