这个题哪错了?为什么运行结果是负数呢?

来源:百度知道 编辑:UC知道 时间:2024/06/16 12:27:46
#include <stdio.h>
void main()
{
int p,r,n,m,t;
printf("please input two numbers:");
scanf("%d,%d",&n,&m);
if(n<m)
{
t=n;
n=m;
m=t;
}
p=m*n;
while(m!=0)
{r=n%m;
n=m;
m=r;
}
printf("最大公约数:%d/n",n);
printf("最小公倍数:%d/n",p/n);
}
不管输出什么值,答案都为:最大公约数:-4,最小公倍数:-214748360

#include<stdio.h>
void main()
{
int A(int x,int y);
int S(int n,int m);
int a,b,t,k;
scanf("%d%d",&a,&b);
t=S(a,b);
k=A(a,b);
printf("%d\n",t);
printf("%d\n",k);

}
int A(int x,int y)
{

int j;
j=x*y/S(x,y);

return(j);

}
int S(int n,int m)
{
int i;
while(n%m!=0)
{
i=n%m;
n=m;
m=i;
}
return(m);
}

是负数吗 稍稍修改一下输出的一行
#include <stdio.h>
void main()
{
int p,r,n,m,t;
printf("please input two numbers:");
scanf("%d,%d",&n,&m);
if(n<m)
{
t=n;
n=m;
m=t;
}
p=m*n;
while(m!=0)
{r=n%m;
n=m;
m=r;
}
printf("%d\n",n); /*最大公约数*/
printf("%d\n",p/n);/*最小公倍数*/
getch();<