猿问

最大公约数和最小公倍数哪里错,谢大神

 

#include<stdio.h>
int main()
{  int max(int m,int n);
   int min(int m,int n,int p );
   int m,n,p,q;
   scanf("%d%d",&m,&n);
   p=max(m,n);
   printf("最大公约数是%d\n",p);
   q=min(m,n,p);
   printf("最小公倍数是%d\n",q);


 return 0;
}

 


int max(int m,int n)
{
 int t,z;


 if(n>m)
 {
  t=n;n=m;m=t;
 }
   while((z=m%n)!=0)
   {
    m=n;
 n=z;
 
   }

}

 

int min(int m,int n,int p)
{


return((m*n)/p);
}

liangmin
浏览 1171回答 1
1回答

denmushi

你这个问题非常多啊。子函数算法我没看,首先函数声明要在主函数外部,写在全局,其次,你的max函数没有写返回值,还有,求最小公倍数的函数不要传入3个参数,只要传入两个就行,虽然你这样写也可以实现,但是不符合函数设计低耦合的原则,你可以在最小公倍数函数中调用最大公约数函数来解决,结果是一样的。
随时随地看视频慕课网APP
我要回答