关于一个很简单的C语言编程,为什么总是不能输出?

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:12:54
老师要求我们不用递归的方式求两个数最大公约数及最小公倍数。我编的程序如下,可是结果总是无法输出,请各位高手指教,小弟感激不尽。请尽快,过两天就得交作业了。

#include<stdio.h>
int max(int x,int y)
{
if(x>=y)
return x;
else
return y;
}

int min(int p,int q)
{
if(p>=q)
return q;
else
return p;
}

int main()
{
int m,n,a,c;

printf("enter two integers:\n");
scanf("%d%d",&m,&n);

c=m*n;

if(m==n)
{
printf("两者的最大公约数是%d,最小公倍数是%d\n",m,m);
}

if(m>n)
{
a=m-n;
while(a>0)
{
m=max(m-n,n);
n=min(m-n,n);
a=m-n;
}
printf("两者的最大公约数是%d,最小公倍数是%d\n",m,c/m);
}

if(m<n)
{
a=n-m;
while(a>0)
{
n=max(m,n-m);
m=min(m,n-m);
a=n-m;
}
printf("两者的最大公约数是%d,最小公倍数是%d\n",

#include<stdio.h>
int max(int x,int y)
{
if(x>=y)
return x;
else
return y;
}

int min(int p,int q)
{
if(p>=q)
return q;
else
return p;
}

int main()
{
int m,n,a,c,x,y;//增加x,y这2个变量

printf("enter two integers:\n");
scanf("%d%d",&m,&n);

c=m*n;

if(m==n)
{
printf("两者的最大公约数是%d,最小公倍数是%d\n",m,m);
}

if(m>n)
{
a=m-n;
while(a>0)//原来程序的m,n值被改变导致死循环
{
x = m;
y = n;
m=max(x-y,y);
n=min(x-y,y);
a=m-n;
}
printf("两者的最大公约数是%d,最小公倍数是%d\n",m,c/m);
}

if(m<n)
{
a=n-m;
while(a>0)//原来程序的m,n值被改变导致死循环
{
x = m;
y = n;
n=max(x,y-x);
m=min(x,y-x);
a=n-m;
}
printf("两者的最大公约数是%d,最小公倍数是%d\n",n,c/n);
}

return 0;
}

m=max(m