题目:用C语言、java语言实现有理数的四则运算,输入整数或小数,输出结果用分数和小数两种形式输出。
首先想到的是:有理数如何表示?
拼命、拼命回忆到了初中的数学知识——任何有理数都可以表示为分数的形式,2个整数,一个分子,一个分母。
所以表示为
//结构体 用于存储一个有理数 包含分子和分母
typedef struct Rational{
int fenzi;
int fenmu;
}Rat
还有一个问题是如何将舒服的分数或小数转化为有理数结构Rat?
如下方法getRat():
/**
* 接收一个整数或小数,转化为分数形式返回
*/
Rat getRat()
{
float num ;
Rat f;
scanf("%f",&num);
f.fenzi = (int)num;
f.fenmu = 1;
while(num != (int)num)
{
f.fenmu *= 10;
num *= 10;
f.fenzi = (int)num;
}
return f;
}
getRat()的作用是接受一个从键盘键入的float数值,然后将其转化为一个Rat结构返回,但不会进行化简,如输入0.5会返回的结构体分子为5分母为10.
在中间计算过程中可以有5/10这样的分数存在,但最后输出结果时肯定是要输入最简结果的,所以还必须有一个用于化简的函数——
Rat huajian(Rat n