简单的循环不能正常工作

时间:2015-02-03 05:54:10

标签: loops

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

1 个答案:

答案 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 variablesany other variables将有助于更好地跟踪循环的execution flow