当前位置:首页 > 行业动态 > 正文

c语言中怎么表示分数

在C语言中,表示分数可以使用结构体(struct)来实现,结构体是一种自定义的数据类型,可以包含多个不同类型的变量,为了表示一个分数,我们可以创建一个名为Fraction的结构体,其中包含两个整型变量numerator(分子)和denominator(分母),我们可以为这个结构体定义一些操作方法,如加法、减法、乘法等。

以下是一个简单的C语言分数类实现:

#include <stdio.h>
// 定义分数结构体
typedef struct {
    int numerator;  // 分子
    int denominator;  // 分母
} Fraction;
// 创建一个新的分数对象
Fraction create_fraction(int numerator, int denominator) {
    Fraction fraction;
    fraction.numerator = numerator;
    fraction.denominator = denominator;
    return fraction;
}
// 分数相加
Fraction add_fractions(Fraction a, Fraction b) {
    int new_numerator = a.numerator * b.denominator + b.numerator * a.denominator;
    int new_denominator = a.denominator * b.denominator;
    return create_fraction(new_numerator, new_denominator);
}
// 分数相减
Fraction subtract_fractions(Fraction a, Fraction b) {
    int new_numerator = a.numerator * b.denominator b.numerator * a.denominator;
    int new_denominator = a.denominator * b.denominator;
    return create_fraction(new_numerator, new_denominator);
}
// 分数相乘
Fraction multiply_fractions(Fraction a, Fraction b) {
    int new_numerator = a.numerator * b.numerator;
    int new_denominator = a.denominator * b.denominator;
    return create_fraction(new_numerator, new_denominator);
}
// 分数化简(最大公约数算法)
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}
// 分数化简函数(约分)
void simplify_fraction(Fraction *fraction) {
    int greatest_common_divisor = gcd(fraction>numerator, fraction>denominator);
    fraction>numerator /= greatest_common_divisor;
    fraction>denominator /= greatest_common_divisor;
}
int main() {
    Fraction a = create_fraction(1, 2);  // 1/2
    Fraction b = create_fraction(1, 3);  // 1/3
    Fraction sum = add_fractions(a, b);  // 1/2 + 1/3 = 5/6
    Fraction difference = subtract_fractions(a, b);  // 1/2 1/3 = 1/6
    Fraction product = multiply_fractions(a, b);  // 1/2 * 1/3 = 1/6
    simplify_fraction(&sum);  // 5/6 > 5/6 (已是最简形式)
    simplify_fraction(&difference);  // 1/6 > 1/6 (已是最简形式)
    simplify_fraction(&product);  // 1/6 > 1/6 (已是最简形式)
    printf("Sum: %d/%d
", sum.numerator, sum.denominator);
    printf("Difference: %d/%d
", difference.numerator, difference.denominator);
    printf("Product: %d/%d
", product.numerator, product.denominator);
    return 0;
}

在这个示例中,我们首先定义了一个名为Fraction的结构体,用于存储分数的分子和分母,我们定义了一些操作方法,如创建分数、加法、减法、乘法和化简分数,在main函数中,我们创建了两个分数对象,并使用这些操作方法对它们进行了一系列运算,注意,我们在每次化简分数后都调用了simplify_fraction函数。

0