分数的四则运算及化简(C语言实现)
2017-06-27 16:35
597 查看
下面这个程序使用C语言的结构体实现了分数的加减乘除四则运算,同时将结果最简化。这里为了简化,将输入值固定了,如果需要根据输入进行计算,将main函数内的相应部分稍作修改即可。
#include <stdio.h> struct fraction { int numerator; int denominator; }; // 求解最大公约数 int find_gcd(int n1, int n2); // 将分数化为最简形式 struct fraction reduce_fraction(struct fraction f); // 分数的四则运算 struct fraction add_fractions(struct fraction f1, struct fraction f2); struct fraction subtract_fractions(struct fraction f1, struct fraction f2); struct fraction multiply_fractions(struct fraction f1, struct fraction f2); struct fraction divide_fractions(struct fraction f1, struct fraction f2); int main(void) { struct fraction f = { 21, 3 }; struct fraction f1 = { 8, 64 }; struct fraction f2 = { 9, 711 }; struct fraction reducedf = reduce_fraction(f); printf("%d/%d reduced to simplest terms: %d/%d\n", f.numerator, f.denominator, reducedf.numerator, reducedf.denominator); struct fraction addedf = add_fractions(f1, f2); printf("%d/%d + %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, addedf.numerator, addedf.denominator); struct fraction subtractedf = subtract_fractions(f1, f2); printf("%d/%d - %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, subtractedf.numerator, subtractedf.denominator); struct fraction multipliedf = multiply_fractions(f1, f2); printf("%d/%d * %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, multipliedf.numerator, multipliedf.denominator); struct fraction dividedf = divide_fractions(f1, f2); printf("%d/%d / %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, dividedf.numerator, dividedf.denominator); return 0; } int find_gcd(int n1, int n2) { int temp; while (n1 != 0) { temp = n2 % n1; n2 = n1; n1 = temp; } return n2; } struct fraction reduce_fraction(struct fraction f) { int gcd = find_gcd(f.numerator, f.denominator); f.numerator /= gcd; f.denominator /= gcd; return f; } struct fraction add_fractions(struct fraction f1, struct fraction f2) { f1.numerator *= f2.denominator; f2.numerator *= f1.denominator; struct fraction result = { f1.numerator + f2.numerator, f1.denominator * f2.denominator }; result = reduce_fraction(result); return result; } struct fraction subtract_fractions(struct fraction f1, struct fraction f2) { f1.numerator *= f2.denominator; f2.numerator *= f1.denominator; struct fraction result = { f1.numerator - f2.numerator, f1.denominator * f2.denominator }; result = reduce_fraction(result); return result; } struct fraction multiply_fractions(struct fraction f1, struct fraction f2) { struct fraction result = { f1.numerator * f2.numerator, f1.denominator * f2.denominator }; result = reduce_fraction(result); return result; } struct fraction divide_fractions(struct fraction f1, struct fraction f2) { struct fraction result = { f1.numerator * f2.denominator, f1.denominator * f2.numerator }; result = reduce_fraction(result); return result; }
相关文章推荐
- C语言 两个分数的四则运算,用函数调用实现
- c++实现重载分数的四则运算
- java小练习(实现分数的四则运算)
- 《C++第八周实验报告3-1》---实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算
- java第二周作业--实现分数的四则运算
- 数据结构——c语言描述 第三章 (2)栈的练习(四则运算的实现)
- 一个简单的四则运算程序C语言实现--实现处理括号
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- C语言实现整数四则运算表达式的计算
- C语言实现四则混合运算
- java小练习(实现分数的四则运算)
- 第八周任务三实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 一个简单的四则运算程序C语言实现--无法处理括号
- 计算器C#代码(实现整数的四则运算)
- 实数四则运算表达式的计算,C++ 实现
- Javascript中实现分数运算
- 一个逆波兰表达式实现的四则混合运算计算器
- 实现复数的加减乘除四则运算的C#类(已测成功)