为什么在循环里用了无意义printf才能得到正确结果?

来源:百度知道 编辑:UC知道 时间:2024/09/20 13:39:57
/*如果N除以2到10都余1,求其最小值*/
int lcm(int a,int b)/*最小公倍数*/
{
int tmp,a1,b1;
if(a<b){tmp=a;a=b;b=tmp;}
a1=a;b1=b;
while(tmp)
{
tmp=a%b;
a=b;
b=tmp;
}
return a1*b1/a;
}
main()
{
int i,all_lcm;
for(i=2,all_lcm=2;i<10;i++)
{all_lcm=lcm(all_lcm,i+1);printf("\n");}/*这里我加上printf("\n")才能得到正确的结果2519,不然得到的值为9为什么?*/
printf("The number is:%d",all_lcm-1);
getch();
}

这程序没一点问题
在Visual C++6.0中运行没有一点问题
#include<stdio.h>
#include<conio.h>
int lcm(int a,int b)/*最小公倍数*/
{
int tmp,a1,b1;
if(a<b){tmp=a;a=b;b=tmp;}
a1=a;b1=b;
while(tmp)
{
tmp=a%b;
a=b;
b=tmp;
}
return a1*b1/a;
}

void main()
{
int i,all_lcm;
for(i=2,all_lcm=2;i<10;i++)
all_lcm=lcm(all_lcm,i+1 ); // printf("\n");
/*这里我加上printf("\n")才能得到正确的结果2519,不然得到的值为9为什么?*/
printf("The number is:%d",all_lcm-1);
getch();
}

这个代码没有错误的
你可以再试一试