防晒乳液什么牌子好:别人告诉我说我的全局变量有错!可是我听不懂(C语言)

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 18:34:39
#include<stdio.h>
void main()
{
int M(int x,int y);
int N(int x,int y);
int a,b;
printf("**********Please input 2 numbers**********\n");
scanf("%d%d",&a,&b);
a = M(a,b);
b = N(a,b);
printf("Do you want to know what's the common divisor is?\n**********It is %d**********\nDo you want to know what's the common multiple is?\n**********It is %d**********\n",a,b);
}

int M(int x,int y)
{
int r,z;
if(x < y)
{
r = y;
y = x;
x = r;
}
r = x % y;
while(r != 0)
{
x = y;
y = r;
r = x % y;
}
if(r == 0)
{
z = y;
}
return z;
}

int N(int x,int y)
{
int i,r,t;
if(x < y)
{
r = y;
y = x;
x = r;
}
r = x % y;
while(r != 0)
{
x = y;
y = r;
r = x % y;
}
if(r == 0)
{
t = y;
}
i = x*y/t;
return i;
}

结果中的最小公倍数有错!我自己觉得最后 i = x*y/t;中的x,y已经不是最原始的x和y了!可是我不会改!

a = M(a,b);
这句之后,a已经变成了所输入的两数的最大公约数,这时候再执行下一句:
b = N(a,b);
这里面,a已经不是原来所输入的数字,而是两数的最大公约数.
你还是改成:
A = M(a,b);
B = N(a,b);
吧,其它的你自己来改啦~!