1. 简介
分数相加是初等数学中经常涉及的计算,通过C语言编写程序实现分数的加法可提高程序设计能力和编码水平,为日后更高阶的软件开发打下基础。
2. 分数的基本概念
2.1 分数的表示
分数由两个整数表示,一个表示分子,另一个表示分母。分母不能为0。通常表示为:$$\frac{a}{b}$$
2.2 分数的加法
分数相加时,只需使两个分数的分母相等后,将分子相加即可。加法计算公式如下:
$$\frac{a}{b} + \frac{c}{d} = \frac{ad+bc}{bd}$$
3. C语言程序实现
在C语言中,我们可以通过定义结构体类型来表示分数,其中分子和分母均为整数类型。
struct Fraction{
int numerator;
int denominator;
};
接下来让我们来实现分数相加的C语言程序:
#include <stdio.h>
#include <stdlib.h>
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 求两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 分数相加
struct Fraction add(struct Fraction a, struct Fraction b) {
struct Fraction res;
res.denominator = a.denominator * b.denominator / gcd(a.denominator, b.denominator); // 公倍数
res.numerator = a.numerator * (res.denominator / a.denominator) + b.numerator * (res.denominator / b.denominator); // 求和
// 约分
int t = gcd(res.numerator, res.denominator);
res.numerator /= t;
res.denominator /= t;
return res;
}
int main() {
struct Fraction a, b;
printf("请输入第1个分数的分子和分母:\n");
scanf("%d%d", &a.numerator, &a.denominator);
printf("请输入第2个分数的分子和分母:\n");
scanf("%d%d", &b.numerator, &b.denominator);
struct Fraction c = add(a, b);
printf("两个分数的和为:%d/%d\n", c.numerator, c.denominator);
return 0;
}
4. 测试运行
我们来测试一下上述程序的运行结果:
$ gcc main.c -o main
$ ./main
请输入第1个分数的分子和分母:
1 2
请输入第2个分数的分子和分母:
1 3
两个分数的和为:5/6
5. 总结
在本篇文章中,我们简单介绍了分数的基本概念,并通过C语言编写程序实现了两个分数相加。需要注意的是,在实现分数相加时,我们需要先求出两个分数的公倍数,然后再将分子相加,在约分后得到最终结果。