怎样去掉这个程序的警告?
题目是:求两自然数,其和是667,最小公倍数与最大公约数之比是120:1#include <stdio.h>
int gcd(int a,int b);
int lcm(int a,int b);
int main()
{
int m, l, g;
for(m = 2; m <= 333; m++)
{
l = lcm(m, 667-m); /*求最小公倍数*/
g = gcd(m, 667-m); /*求最大公约数*/
if(l == g * 120 && l % g == 0)
printf("%d %d\n", m, 667-m);
}
return 0;
}
int gcd(int a, int b)
{
int i;
for(i = a; i >= 1; i--)
if(a % i == 0 && b % i == 0)
return i;
}
int lcm(int a, int b)
{
int i;
i = b;
while(i % a != 0) i += b;
return i;
}
[此贴子已经被作者于2007-10-19 21:55:27编辑过]
搜索更多相关的解决方案:
警告
----------------解决方案--------------------------------------------------------
在gcd函数末尾添加一个return语句,应该考虑到有意外结果出现的可能性。
----------------解决方案--------------------------------------------------------
不错,函数gcd可能没有返回值
----------------解决方案--------------------------------------------------------
呵呵 这样就会了
#include <stdio.h>
int gcd(int a,int b);
int lcm(int a,int b);
main()
{
int m, l, g;
for(m = 2; m <= 333; m++)
{
l = lcm(m, 667-m); /*求最小公倍数*/
g = gcd(m, 667-m); /*求最大公约数*/
if(l == g * 120 && l % g == 0)
printf("%d %d\n", m, 667-m);
}
return 0;
}
int gcd(int a, int b)
{
int i;
for(i = a; i >= 1; i--)
if(a % i == 0 && b % i == 0)
return i;
return 0;
}
int lcm(int a, int b)
{
int i;
i = b;
while(i % a != 0) i += b;
return i;
}
----------------解决方案--------------------------------------------------------