C语言 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整

我写的 但是答案错误 求大神教#include<stdio.h>int gys(int x,int y);int gbs(int x,int y);int main(){ int a,b,j,i; scanf("%d%d",&a,&b); j = gys(a,b); i = gbs(a,b); printf("%d %d\n",j,i); return 0;}int gys(int x,int y){ int z; while(z!=0) { z = x % y; x = y; y = z; } return x;}int gbs(int x,int y){ int m,n; m = gys(x,y); n = x*y/m; return n;}
#include<stdio.h>
int gys(int x,int y);
int gbs(int x,int y);
int main()
{ int a,b,j,i;
scanf("%d%d",&a,&b);
j = gys(a,b);
i = gbs(a,b);
printf("%d %d\n",j,i);
return 0;}
int gys(int x,int y)
{ int z;
while(z!=0) {
z = x % y; x = y; y = z; }
return x;}
int gbs(int x,int y){
int m,n; m = gys(x,y); n = x*y/m;
return n;}

#include&lt;stdio.h&gt;//0和任意的一个数的最大公约数就是那个数(最小公倍数就是0)

int yue(int x,int y)

{

int m,t;

if(y&gt;x)

{

t=x;//将x与y的值交换

x=y;

y=t;

}

while(y!=0)

{

m=x%y;

x=y;

y=m;

}

return x;

}

int bei(int x,int y,int p)

{

return(x*y/p);

}

int main()

{

int yue(int,int);

int bei(int,int,int);

int p,q,a,b;

printf("请输入两个整数:");

scanf("%d%d",&a,&b);

q=yue(a,b);

p=bei(a,b,q);//最小公倍数=两数的乘积除以它们的最大公约数

printf("最大公约数是:%d\n最小公倍数是:%d\n",q,p);

}

扩展资料:

#include&lt;iostream&gt;

using namespace std;

int i;

int max(int a,int b)

{

//cout&lt;&lt;"max";

int s;s=i=2;

//cout&lt;&lt;s&lt;&lt;endl;

if(a&gt;b)

{

i=b;

}

else

i=a;

do{

if(a%i==0&&b%i==0)

{

//cout&lt;&lt;"do里面的s!"&lt;&lt;s&lt;&lt;endl;

//cout&lt;&lt;"do里面的i!"&lt;&lt;i&lt;&lt;endl;

s=i;

break;

}

i--;

}while(i&lt;a&&i&lt;b);

//cout&lt;&lt;"end的s!"&lt;&lt;s&lt;&lt;endl;

//cout&lt;&lt;"end的i!"&lt;&lt;i&lt;&lt;endl;

return s;

}

int min(int a,int b)

{

//cout&lt;&lt;"min";

int s;s=1;i=2;

do{

if(i%a==0&&i%b==0)

{

//cout&lt;&lt;"do里面的s!"&lt;&lt;s&lt;&lt;endl;

//cout&lt;&lt;"do里面的i!"&lt;&lt;i&lt;&lt;endl;

s=i;break;

}

i++;

}while(i&lt;=a*b);

//cout&lt;&lt;"end的s!"&lt;&lt;s&lt;&lt;endl;

//cout&lt;&lt;"end的i!"&lt;&lt;i&lt;&lt;endl;

return s;

}

int main()

{

int x,y,m,n;

cin&gt;&gt;x&gt;&gt;y;

m=max(x,y);n=min(x,y);

cout&lt;&lt;m&lt;&lt;""&lt;&lt;n;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-02-15
#include <stdio.h>

int yue(int m,int n)
{
int i;
for(i=n;i>=1;i--)
if(m%i==0&&n%i==0)
break;
return i;
}

int bei(int m,int n)
{
int i,j;
for(i=n;i>=1;i--)
if(m%i==0&&n%i==0)
break;
j=m*n/i;
return j;
}

int main()
{
int m,n,d,e,t;
printf("请输入两个正整数:   ");
scanf("%d,%d",&m,&n);
if(m<n)
{t=m;m=n;n=t;}
d=yue(m,n);
e=bei(m,n);
printf("\n%d和%d的最大公约数是%d,%d和%d的最小公倍数是%d。\n\n",m,n,d,m,n,e);
return 0;
}

运行示例:

追问

没看懂啊!!

追答

你写得太乱了:

实在没法看。因此直接把我的程序代码写出来了。

哪里看不懂?

追问

我在补充那里 重新写了 应该不乱吧 你帮看下我的哪里错呗

追答

还是非常乱,而且不全。

按能看到的说吧,看不到的,就假设你都写对了。

函数gys中,z没有初始化。 z=1,不为零即可。

#include <stdio.h>
#include <math.h>

int gys(int x,int y);
int gbs(int x,int y);

void main()
{
int a,b,j,i;
scanf("%d%d",&a,&b);
j=gys(a,b);
i=gbs(a,b);
printf("%d %d\n",j,i);
}

int gys(int x,int y)
{
int z=1;
while(z!=0)
{z=x%y;x=y;y=z;}
return x;
}

int gbs(int x,int y)
{
int m,n;
m=gys(x,y);
n=x*y/m;
return n;
}

本回答被提问者采纳
第2个回答  2017-02-15
int gys(int x,int y)
{
int z;
while(z!=0)
{
z = x % y;
x = y;
y = z;
}
你这个函数 z没有初始化是个随机值 第一轮循环没法判断的
第3个回答  2020-05-27
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int f(int a,int b)
{
int t,min;
min=a<b?a:b;
t=min;
while(a%t!=0||b%t!=0)
t=t-1;
return(t);
}
int g(int a,int b)
{
int i,max;
max=a>b?a:b;
i=max;
while(i%a!=0||i%b!=0)
i=i+1;
return(i);
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",f(a,b));
printf("%d",g(a,b));
return 0;
}
第4个回答  2019-12-21
C语言 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整
相似回答