修改如下程序,使用户可以同时输入两个分数,中间用加号隔开: Enter two fractions separated by a plus sign: 5/6+3/4 The sum is 38/24
时间: 2024-10-01 09:11:27 浏览: 43
Fractions-JS:一个处理分数JavaScript库
要实现这个功能,你可以使用 `scanf` 函数来读取用户输入的分数,然后进行相加。分数通常表示为两个整数,分子(numerator)和分母(denominator),所以我们需要对输入进行分割并分别处理。这里是一个简单的 C 程序示例:
```c
#include <stdio.h>
// 结构体来存储分数
typedef struct {
int numerator;
int denominator;
} Fraction;
// 将两个分数相加
Fraction addFractions(Fraction f1, Fraction f2) {
int commonDen = __gcd(f1.denominator, f2.denominator); // 获取最大公约数
int newNumerator1 = f1.numerator * (commonDen / f1.denominator);
int newNumerator2 = f2.numerator * (commonDen / f2.denominator);
return (Fraction) {newNumerator1 + newNumerator2, commonDen};
}
// 计算两个分数的最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
Fraction fraction1, fraction2;
char input[100];
printf("Enter two fractions separated by a plus sign: ");
fgets(input, sizeof(input), stdin);
// 分割输入字符串,提取分数
char* str1 = strtok(input, "+");
fraction1.numerator = atoi(strtok(NULL, "/"));
fraction1.denominator = atoi(strtok(NULL, "/"));
char* str2 = strtok(NULL, "+");
fraction2.numerator = atoi(str2);
fraction2.denominator = atoi(strtok(NULL, "/"));
// 确保分母不为零
if (fraction1.denominator == 0 || fraction2.denominator == 0) {
printf("Invalid fraction denominators.\n");
return 1;
}
// 加法操作
Fraction result = addFractions(fraction1, fraction2);
// 输出结果分数
printf("The sum is %d/%d\n", result.numerator, result.denominator);
return 0;
}
```
在这个程序中,我们定义了一个 `Fraction` 结构体,并实现了相加的函数 `addFractions`。注意,由于分数可能不是最简形式,我们在相加前先求了它们的最大公约数(GCD),以确保最终结果是简化过的。
运行此程序时,请按照提示输入分数,例如 "5/6+3/4"。程序将计算它们的和并输出结果,如 "38/24"。如果输入不符合格式要求,程序会显示错误信息。
阅读全文