用结构体求两个分数之差

img


结构体中还有整型的分子分母变量 输入不明白 图片中有题目和要求 谢谢

结构体含有两个成员分子和分母,定义结构体后,在主函数里面定义两个结构体变量。同时要求新求得的分数进行化简。代码如下:

#include<stdio.h>
struct fraction
{
    int Numerator;
    int Denominator;
};
int divi_1(int a, int b)
{
    int divi = 0;
    while (a%b)
    {
        divi = a % b;
        a = b;
        b = divi;
    }
    divi = b;
 
    return divi;
}
int main()
{
    struct fraction f1;
    struct fraction f2;
    int a,b;
    scanf("%d/%d %d/%d",&f1.Numerator,&f1.Denominator,&f2.Numerator,&f2.Denominator);
    a = f1.Numerator*f2.Denominator-f2.Numerator*f1.Denominator;
    b = f1.Denominator*f2.Denominator;
    if(a%b==0)
        printf("%d\n",a/b);
    else
        printf("%d/%d\n",a/divi_1(a,b),b/divi_1(a,b));    
    return 0;
}

该回答引用ChatGPT
请参考:

#include <stdio.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 reduceFraction(struct fraction f) {
    int common = gcd(f.numerator, f.denominator);
    f.numerator /= common;
    f.denominator /= common;
    return f;
}

struct fraction subtractFractions(struct fraction a, struct fraction b) {
    struct fraction result;
    result.numerator = a.numerator * b.denominator - b.numerator * a.denominator;
    result.denominator = a.denominator * b.denominator;
    return reduceFraction(result);
}

int main() {
    struct fraction fraction1, fraction2;

    printf("Enter the first fraction: ");
    scanf("%d/%d", &fraction1.numerator, &fraction1.denominator);

    printf("Enter the second fraction: ");
    scanf("%d/%d", &fraction2.numerator, &fraction2.denominator);

    fraction1 = reduceFraction(fraction1);
    fraction2 = reduceFraction(fraction2);

    struct fraction result = subtractFractions(fraction1, fraction2);

    if (result.denominator == 1) {
        printf("The difference is: %d\n", result.numerator);
    } else {
        printf("The difference is: %d/%d\n", result.numerator, result.denominator);
    }

    return 0;
}


以下答案引用自GPT-3大模型,请合理使用:
#include #include using namespace std; int main() { vector v; int a, b, c, d, e, f; cin >> a >> b >> c >> d >> e >> f; v.push_back(a); v.push_back(b); v.push_back(c); v.push_back(d); v.push_back(e); v.push_back(f); cout << endl; for (size_t i = 0; i < v.size(); ++i) cout << v[i] << " "; cout << endl; }

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^