简单循环无法正常工作
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 variables
或 any other variables
将有助于更好地跟踪循环的 execution flow
。
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 variables
或 any other variables
将有助于更好地跟踪循环的 execution flow
。