请各位高手帮忙看看这个程序有什么问题,运行的时候总出错
#include<stdio.h>void main()
{
int a,b,c,d,e;
printf("请输入两个数:");
scanf("%d,%d",&a,&b);
if(a<b)
{e=a;
a=b;
b=e;}
c=a*b;
while(b!=0)
{d=a%b;
a=b;
b=d;}
printf("最大公约数是%d\n",b);
printf("最小公倍数是%f\n",c/b);
}

程序代码:#include<stdio.h>
int _gcd(int,int);
void main()
{
int a,b,c,d,e;
printf("请输入两个数:");
scanf("%d,%d",&a,&b); //这里注意输入格式,你的是%d,%d
printf("最大公约数是%d\n",_gcd(a,b)); //辗转相除法计算最大公约数,注意你之前的循环,条件是当b==0时才退出循环,也就是说最后
//得到的b一定是0,然后再在下面输出b,就是输出0,然后又去用一个数除以了0,而0做除数是不允许的
printf("最小公倍数是%d\n",a/_gcd(a,b)*b); //最小公倍数的算法是a*b除以他们的最大公约数,为防止数据溢出,习惯先除再乘,另外此处你使用了%f
//这也是不对的,因为你的程序中c和b都是整型的,除起来的结果也一定是整型的,所以如果用%f,
//答案只会得到0.000000
}
int _gcd(int x,int y) //辗转相除法计算最大公约数
{
int z;
z = x % y;
while( z )
{
x = y;
y = z;
z = x % y;
}
return y;
}
