对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。 输入: 分数1 操作符 分数2 输出: 计算结果 要求: 计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3
时间: 2023-03-31 22:01:00 浏览: 267
好的,我可以回答这个问题。以下是C语言实现两个分数进行加、减、乘、除等运算的示例代码:
#include <stdio.h>
// 定义分数结构体
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 辗转相除法求最大公约数
int gcd(int a, int b) {
if (b == ) {
return a;
} else {
return gcd(b, a % b);
}
}
// 约分函数
void simplify(struct Fraction *f) {
int g = gcd(f->numerator, f->denominator);
f->numerator /= g;
f->denominator /= g;
}
// 加法函数
struct Fraction add(struct Fraction f1, struct Fraction f2) {
struct Fraction result;
result.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
simplify(&result);
return result;
}
// 减法函数
struct Fraction subtract(struct Fraction f1, struct Fraction f2) {
struct Fraction result;
result.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
simplify(&result);
return result;
}
// 乘法函数
struct Fraction multiply(struct Fraction f1, struct Fraction f2) {
struct Fraction result;
result.numerator = f1.numerator * f2.numerator;
result.denominator = f1.denominator * f2.denominator;
simplify(&result);
return result;
}
// 除法函数
struct Fraction divide(struct Fraction f1, struct Fraction f2) {
struct Fraction result;
result.numerator = f1.numerator * f2.denominator;
result.denominator = f1.denominator * f2.numerator;
simplify(&result);
return result;
}
int main() {
struct Fraction f1, f2, result;
char op;
// 输入两个分数和操作符
printf("请输入两个分数和操作符(+、-、*、/):\n");
scanf("%d/%d %c %d/%d", &f1.numerator, &f1.denominator, &op, &f2.numerator, &f2.denominator);
// 根据操作符进行相应的运算
switch (op) {
case '+':
result = add(f1, f2);
break;
case '-':
result = subtract(f1, f2);
break;
case '*':
result = multiply(f1, f2);
break;
case '/':
result = divide(f1, f2);
break;
default:
printf("无效的操作符!\n");
return 1;
}
// 输出计算结果
printf("计算结果为:%d/%d\n", result.numerator, result.denominator);
return ;
}
阅读全文