文章目录
1 分数表示和简化1.1 表示1.2 分数化简
2 分数的计算2.1 分数加法2.2分数减法2.3 分数的乘法2.4 分数的除法
3 分数输出3 完整示例
1 分数表示和简化
1.1 表示
写成假分数的形式,无论分子比分母大或者小,都保留其原数。
struct Fraction//分数
{
int up, down;//分子、分母
};
用Fraction类型表示分数,或者定义数组表示一堆分数。
制定表示的规则:
1 使down为非负数。如果分数为负数,up为负数即可;2 如果该分数恰为0,那么规定其分子为0,分母为1;3 约分:求出分子或分母的最大公约数d,然后令分子、分母同时除以d。
1.2 分数化简
规则:
1 如果分数为负数,分子、分母都变为相反数;2 如果分子up为0,令分母为1;3 约分:求出分子绝对值和分母绝对值的最大公约数,然后令分子分母同时除以d。
Fraction reduction(Fraction result){
if(result.down r.down){//假分数
printf("%d %d/%d\n", r.up/r.down, abs(r.up)%r.down, r.down);
}else{//真分数
printf("%d/%d\n", r.up, r.down);
}
}
由于分数的乘法或除法的过程中可能会使分子或分母超过int型表示的范围,因此一般情况下,分子和分母应该使用long long型来存储。
3 完整示例
#include
#include
struct Fraction
{
int up;
int down;
};
//求最大公约数
int gcd(int a, int b){
return !b ? a : gcd(b, a%b);
}
//化简
Fraction reduction(Fraction result){
if(result.down r.down){//假分数
printf("%d %d/%d\n", r.up/r.down, abs(r.up)%r.down, r.down);
}else{//真分数
printf("%d/%d\n", r.up, r.down);
}
}
int main(int argc, char const *argv[])
{
Fraction f1, f2, res;
f1.up = 1;
f1.down = 3;
f2.up = 1;
f2.down = 3;
// res = add(f1, f2);
res = minu(f1, f2);
// res = multi(f1,f2);
// res = divide(f1, f2);
showResult(res);
return 0;
}
|