
int hef(int u,int v)
{
int t,r;
if(v>u)
t=v;
v=u;
u=t;
while((r=u/v)!=0)
{
u=v;
v=r;
}
return(v);
}
int led(int u,int v,int h)
{
return(u*v/h);
}
void main()
{
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hef(u,v);
printf("H.C.F=%d\n",h);
l=led(u,v,h);
printf("L.C.D=%d\n",l);
}
这个执行后输出结果不正确。
看了下,你的求公约数的函数算法有问题,给你改了下,源码和运行结果如下:
//求公约数和最小公倍数
#include
//求两个整数的最大公约数
int hef(int u,int v)
{
int t, r = 1, i = 2;
//让u是较大的那个数
if(v>u)
{
t=v;
v=u;
u=t;
}
/*if (0 == u % v)
return v;
else */
/*while((r=u/v)!=0)
{
u=v;
v=r;
}*/
//i最后的结果就是余迅槐最大公约数
for (i; i <= v; i ++)
{
if ((0 == u % i) && (0 == v % i))
r = i;
}
return(r);
}
//求最小公倍数
int led(int u,int v,int h)
{
return(u*v/h);
}
void main()
{
int u,v,h,l;
printf ("Please input two integers (12,8) ");
scanf("%d,%d",&u,&v);
h=hef(u,v);
printf("H.C.F=%d ",h);
l=led(u,v,h);
printf("L.C.D=%d ",l);
}
ps:一开始就要养成良好的写代竖友码的好习惯,该注释的一定要注释
友好的界面,昌盯一点小小的建议