/********************************************************
题目:编写一个菜单函数:intMune()
使用puts打印菜单上的功能选项,选项如下:
1:求最大公约数.
2:求最小公倍数.
3:退出程序.
当用户选择3的时候退出菜单循环,但用户选择1时候实现求最大公约数的功能,但用户选择2时候实现求最小公倍数的功能,把实现求最大公约数,求最小公倍数的功能函数和菜单函数分别放在不同的源文件中,通过主函数来跨文件访问这些函数.
*********************************************************/
//主函数程序实现如下:
#includeiostream
usingnamespacestd;
intMune();//声明菜单函数
intmain()
{
while(Mune())
{
}
system(pause);
return0;
}
//Mune.cpp菜单源文件
#includeiostream
usingnamespacestd;
intCommon_Divisor(inta,intb);//声明求最大公约数的函数
voidCommon_Multiple(inta,intb);//声明求最小公倍数的函数
intMune()
{
cout请选择菜单如下功能:endl;
puts(1:求最大公约数);
puts(2:求最大公倍数);
puts(0:退出程序);
inti,a,b;//定义变量接受用户的输入
cini;
switch(i)
{
case1:
puts(你选择的是求最大公约数.请输入你要求的两个数:);
cinab;
couta和b的最大公约数是:Common_Divisor(a,b)endl;
break;
case2:
puts(你选择的是求最小公倍数.请输入你要求的两个数:);
cinab;
Common_Multiple(a,b);//调用求最小公倍数函数
break;
case0:
puts(你选择的是退出程序.);
break;
default:
cout你输入的选择错误,请重新输入0-2的数字endl;
}
coutendl;
returni;
}
//Common_Divisor.cpp最大公约数源文件
/************************************************
求最大公约数.
解题思路:先判断a和b哪个比较小,用最小的作为除数,同时让a和b除以它,
如果能同时整除,那么就它就是最大的公约数,如果不能满足条件,哪就不
断递减它,直到找到能满足a和b能同时整除的条件为止。
************************************************/
#includeiostream
usingnamespacestd;
intCommon_Divisor(inta,intb)
{
inttemp=ab?a:b;//把a和b中最小的赋值给temp
while(temp!=1)
{
if(a%temp==0b%temp==0)
{
break;
}
temp--;
}
returntemp;
}
//Common_Divisor.cpp最小公倍数源文件
/************************************************
求最小公倍数.
解题思路:如果是两个数a,b,最大公约数为c,只要将ab两数相乘,再除以
c即可
************************************************/
#includeiostream
usingnamespacestd;
intCommon_Divisor(inta,intb);//声明求最大公约数的函数
voidCommon_Multiple(inta,intb)
{
intMultiple=a*b/Common_Divisor(a,b);
couta和b的最小公倍数是:Multipleendl;
}
运行结果如下: