C语言高手请进(回答正确给加分)

来源:百度知道 编辑:UC知道 时间:2024/07/07 05:37:43
我编了一个以辗转相除法求两个数的最大公倍数,和最小公约数的程序,调试不过去,帮忙看看哪错了!谢谢!(回答正确再给加分)
#include "stdafx.h"
#include "stdio.h"

void main()
{int n,m,a,b,h,y,g;
scanf("%d%d",n,m);
a=n;b=m;y=n%m;
while(y==0){
if(y!=0){h=n;n=m;m=y;}
y=n%m;
}
printf("最大公约数=%d",m);
g=a*b/m;
printf("最小公倍数=%d",g);}

scanf("%d%d",n,m);
应改为如下语句:
scanf("%d%d",&n,&m);

应该考虑 n,m的大小;
有如下语句
if(n<m){t=n;n=m;m=t;}

while循环有问题
应该是
while(y!=0)
{
h=n;n=m;m=y;
y=n%m;
}

有两个错误:一个是语法错误,一个是逻辑错误

scanf("%d%d",n,m);
改为:
scanf("%d%d",&n,&m);

while(y==0){
改为:
while(y!=0){

注意[scanf("%d%d",n,m); ]这句话有错误,应该是&n,&m
if(m>n) a=m; else a=n;
if(y==0)
{printf("最大公约数=%d",b);

printf("最小公倍数=%d",a);}

*/剩下的要用循环
int gyue,i,l;
l=b;

while(y!=0)
{ i=y;
y=l%i;
l=i;}
gyue=i;
g=a*b/i;

.....

}

楼主呀,我刚学的时候也爱犯这种错误!
注意[scanf("%d%d",n,m); ]这句话有错误,应该是&n,&m才对呀!