提问:可以帮我看看这段代码出了什么问题吗
补充 : 谢谢大家的帮助!已解决其实问题就是没有调用函数,另外还要把int gcd(int a,int b,int c) 和int gcd(int a,int b,int temp)改成如下形式最重要的是!!!没有调用函数!!把printf("%d\n",c);改成printf("%d\n",lcm(a,b));就可以了#include<stdio.h> int gcd(int a,int b) { int temp; while(b!=0) { temp=b; b=a%b; a=temp; } } int lcm(int a,int b) { int c; c=a/gcd(a,b)*b; } void main() { int temp; int a,b,c; while(~scanf("%d%d",&a,&b)) { printf("the minnest common factor of %d and %d is ",a,b); printf("%d\n",lcm(a,b)); getchar(); } }
网友回答:
在你程序基础上改好的
#include <stdio.h>
int gcd(int a, int b)
{
int temp; //临时变量放入函数中定义
///网上的公倍数算法都是互相抄的
///辗转相除法不用交换大小值的
while(b != 0)
{
temp = a % b;
a=b;
b = temp;
}
return a;
}
int lcm(int a, int b)
{
int c; //非指针变量作为参数是不能改变其值的
c = a / gcd(a, b) * b;
return c; //所以必须用return返回
}
int main() //ISO C从未有过void main()的写法,也是相互抄的结果
{
// int temp;
int a, b; //, c;
while(~scanf("%d%d", &a, &b))
{
printf("the minnest common factor of %d and %d is ", a,b);
printf("%d\n", lcm(a,b));
// getchar(); 这里不用也不能有getchar()的
// getchar();
}
getchar(); //可放在这里
return 0;
}
测试结果(你程序支持多组输入,直到EOF)