C语言,用结构体比较分数大小

请问怎么用结构体比较分数大小呢?在C语言中是不是不可以直接分子除以分母再比较小数啊……


```c
#include"stdio.h"
#include"math.h"
int main(void)
{
    struct
    {
        int a;
        int b;
        double z;
    }f1,f2;
    scanf("%d %d",&f1.a,&f1.b);
    scanf("%d %d",&f2.a,&f2.b);
    f1.z = 1.0 * f1.a / f1.b;
    f2.z = 1.0 * f2.b / f2.b;
    if(f1.z < f2.z)
    printf("%d/%d < %d/%d",f1.a,f1.b,f2.a,f2.b);
    if(f1.z == f2.z)
    printf("%d/%d = %d/%d",f1.a,f1.b,f2.a,f2.b);
    if(f1.z > f2.z)
    printf("%d/%d > %d/%d",f1.a,f1.b,f2.a,f2.b);
    return 0;
}

```

望采纳。用结构体比较分数大小的一种方法是定义一个结构体,用来存储分数信息,包括分子和分母。然后你可以写一个函数,用来比较两个分数的大小。在 C 语言中,你可以这样定义结构体:

struct fraction {
    int numerator;
    int denominator;
};

下面是一个示例函数,它比较两个分数的大小,并返回它们的差值:

int compare_fractions(struct fraction f1, struct fraction f2) {
    // 先将两个分数都化为同类型的分数,即分子和分母都是整数
    f1.numerator *= f2.denominator;
    f2.numerator *= f1.denominator;

    // 然后比较分子的大小,返回它们的差值
    return f1.numerator - f2.numerator;
}

你可以调用这个函数来比较两个分数,比如:

struct fraction f1 = {1, 2};
struct fraction f2 = {2, 3};

int diff = compare_fractions(f1, f2);
if (diff > 0) {
    printf("f1 is greater than f2\n");
} else if (diff < 0) {
    printf("f1 is less than f2\n");
} else {
    printf("f1 is equal to f2\n");
}