c语言高手come on~!~!~~!

来源:百度知道 编辑:UC知道 时间:2024/06/07 14:38:22
#include<stdio.h>
void main()
{ int mag(int a,int b);
int mig(int a,int b);
int a,b,c,d;
scanf("%d,%d",&a,&b);
c=mag(a,b);
d=mig(a,b);
printf("%d,%d\n",c,d);
}
int mag(int a,int b)
{ int i,m;
for(i=1;i<=a&&i<=b;i++);
{ if(a%i==0&&b%i==0)
m=i;
}
return(m);
}
int mig(int a,int b)
{ int j;
for(j=a;j>=a;j++)
{ if(j%a==0&&j%b==0)break;}
return(j);
}
要求编2个求最大公约及最小公倍数,第一个函数为何输出结果是错的,这个函数直接写入主函数输出结果又正确,是return出了问题,哪位高手指教下
是不是return出问题啊?

int mag(int a,int b)
{ int i,m;
for(i=1;i<=a&&i<=b;i++);
{ if(a%i==0&&b%i==0)
m=i;
}
return(m);
}
是不是因为你这个函数里的for语句后面的分号问题?

for(i=1;i<=a&&i<=b;i++);
{ if(a%i==0&&b%i==0)
m=i;
}
for后面多加了“;”去掉“;”就对了

不过你的求最大公约数的算法不好,如果两个数都比较大就效率比较低。

大一的?我大一的时候也遇到这种问题的- -
第一个函数错的,第二个函数对的?我不知道是不是这个意思

你把这个
int mag(int a,int b);
int mig(int a,int b);
改成
int mag(int a,int b);
int mig(int e,int f); 试试
我也不是C语言高手,我C语言勉强过的- -