请各位高手帮忙看看这个程序有什么问题,运行的时候总出错
#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; }