C语言函数问题 请看看
//输入两个整数,输出它们的最大公约数和最小公倍数。#include "stdio.h"
int yue,bei,a,b; //定义全局变量,yue为最大公约数,bei为最小公倍数
void huhuan(int a,int b)
{
int t;
t=a;
a=b; //进行a和b两值的交换
b=t;
return;
}
void panduanyue(int a,int b) //求a,b两值的最大公约数的被调函数
{
if(a<b)
huhuan(a,b); //当a<b时,进行a和b两值的交换
//分为下列几种情况
if(a%b==0) //如a=15,b=5
yue=b;
if(a%(a%b)==0) //如a=8,b=6
yue=(a%b);
if(a%(a%b)!=0) //如a=7,b=5
yue=1;
return;
}
void panduanbei(int a,int b) //求a,b两值的最小公倍数的被调函数
{ //情况同求最大公约数
if(a%b==0)
bei=a;
if(a%(a%b)==0)
bei=((a*b)/(a%b));
if(a%(a%b)!=0)
bei=a*b;
return;
}
int main(void)
{
scanf("%d%d",&a,&b);
panduanyue(a,b);
panduanbei(a,b);
printf("yue=%d,bei=%d",yue,bei);
return 0;
}
/*
问题一:
当输入的值a<b时
panduanbei(int a,int b)函数这里不需要进行a,b两值的交换。
本人认为是由于 全 局 变 量 的关系,因为main主函数中先调用了
panduanyue(a,b)函数,而panduanyue(a,b)函数调用了huhuan(int a,int b)函数,
使a,b两值互换,此时a,b两值已经互换,所以panduanbei(int a,int b)函数不再需要
huhuan(int a,int b)函数来进行a,b两值的互换
请问 我说的对吗?
问题二:
请问
为什么我的编程得不到正确的结果?
请指教。。。