简单循环无法正常工作

simple loop is not working properly

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;
}}
}

因此,如果我编辑掉 while(1),程序会正确执行一次,但我希望它循环返回,无论是 for(;;) 还是 while (1) 还是 while (x==0)终端(或 cmd)window 未打印任何内容且未终止

我卡在每个条件下的所有 printf 都没有打印出来,这意味着我的 m 和 n 满足了这些条件中的 none !!! 所以我尝试了这个 while (1){ printf("0");其余代码}

它会打印 013400000000 直到我终止
非常感谢您 我使用 kali linux gcc-4.7.2

#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