分数加法(Fraction Addition) 修改如下程序,使用户可以同时输入两个分数,中间用加号隔开: Enter two fractions separated by a plus sign: 5/6+3/4 The sum is 38/24
时间: 2024-10-02 07:02:08 浏览: 42
利用标准库fractions模块让Python支持分数类型的方法详解
在C语言中,我们可以使用结构体来表示分数,然后编写一个函数来进行分数的相加。这里是一个简单的示例程序,首先定义一个分数结构,然后提供一个函数用于计算分数的和:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义分数结构
typedef struct {
int numerator; // 分子
int denominator; // 分母
} Fraction;
// 计算两个分数的和
Fraction addFractions(Fraction f1, Fraction f2) {
int commonDenominator = __gcd(f1.denominator, f2.denominator);
Fraction result = {0};
result.numerator = (f1.numerator * commonDenominator + f2.numerator * commonDenominator) / commonDenominator;
result.denominator = commonDenominator;
return result;
}
// 辅助函数:计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 主函数:获取用户输入并显示结果
int main() {
char input[100];
scanf("%s", input);
// 解析输入字符串
char* parts[] = {"", "", ""};
sscanf(input, "%[^+]+%*[+]%d/%d", parts[0], parts[1], &parts[2].numerator, &parts[2].denominator);
// 检查输入是否有效
if(parts[1][0] == '\0' || parts[2][0] == '\0') {
printf("Invalid input. Please enter two fractions separated by '+' and without spaces.\n");
return 1;
}
// 创建分数对象并进行加法
Fraction first = {atoi(parts[1]), atoi(parts[0])};
Fraction second = {atoi(parts[2].numerator), atoi(parts[2].denominator)};
Fraction sum = addFractions(first, second);
// 输出结果
printf("The sum is %d/%d\n", sum.numerator, sum.denominator);
return 0;
}
```
在这个程序中,我们首先从用户那里接收两个分数的输入,然后解析成分子和分母。`addFractions`函数处理分数相加,确保它们有相同的分母以便于加法。`gcd`函数用来找到两个分数的最小公倍数。最后,我们将结果输出给用户。
运行这个程序时,请按照提示输入两个分数,例如:"5/6+3/4",然后它会计算并显示结果 "38/24"。
如果你想要尝试运行这段代码,记得保存到一个`.c`文件中,然后用gcc编译并执行。如果有其他关于C语言或分数运算的问题,随时告诉我。
阅读全文