第五周分数减法

/*
02.*Copyright (c)2016,烟台大学计算机与控制工程学院
03.*All rights reserved.
04.*文件名称:main.cpp
05.*作    者:李钊
06.*完成日期:2016年3月31日
07.*版 本 号:v1.0
08.*
09.*问题描述:分数可以看成是由字符'/'分割两个整数构成,可以用结构体类型表示。请用结构体类型变量计算两个分数的差。

           注意:不考虑约分,只考虑大数减小数,分母相同的情况



10.
11. 输入描述:分数
12.*输出描述:分数
13.*/


#include <stdio.h>
struct fenshu
{
    int above;
    char line;
    int below;
};
void sub(struct fenshu a,struct fenshu b)
{
    int s;
    s=a.above-b.above;
    printf("%d%c%d",s,a.line,a.below);
}

int main()
{
    struct fenshu a,b;
    void sub(struct fenshu,struct fenshu);
    scanf("%d%c%d",&a.above,&a.line,&a.below);
    scanf("%d%c%d",&b.above,&b.line,&b.below);
    sub(a,b);
    return 0;
}


运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是分数类的代码实现: ```cpp #include <iostream> #include <algorithm> using namespace std; int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } class Fraction { public: Fraction(int n = 0, int d = 1) : num(n), den(d) { if (den == 0) { throw invalid_argument("母不能为0"); } reduce(); } Fraction(const Fraction& other) : num(other.num), den(other.den) {} void display() const { cout << num << "/" << den; } Fraction add(const Fraction& other) const { int lcm = den * other.den / gcd(den, other.den); int a = lcm / den, b = lcm / other.den; return Fraction(num * a + other.num * b, lcm); } Fraction subtract(const Fraction& other) const { int lcm = den * other.den / gcd(den, other.den); int a = lcm / den, b = lcm / other.den; return Fraction(num * a - other.num * b, lcm); } Fraction multiply(const Fraction& other) const { return Fraction(num * other.num, den * other.den); } Fraction divide(const Fraction& other) const { if (other.num == 0) { throw invalid_argument("除数不能为0"); } return Fraction(num * other.den, den * other.num); } Fraction reciprocal() const { if (num == 0) { throw invalid_argument("0没有倒数"); } return Fraction(den, num); } private: int num, den; // 子和母 void reduce() { int d = gcd(num, den); num /= d; den /= d; if (den < 0) { num = -num; den = -den; } } }; int main() { int n1, d1, n2, d2; cin >> n1 >> d1 >> n2 >> d2; Fraction f1(n1, d1), f2(n2, d2); Fraction sum = f1.add(f2); Fraction diff = f1.subtract(f2); Fraction prod = f1.multiply(f2); Fraction quot = f1.divide(f2); f1.display(); cout << endl; f2.display(); cout << endl; sum.display(); cout << endl; diff.display(); cout << endl; prod.display(); cout << endl; quot.display(); cout << endl; return 0; } ``` 输入样例: ``` 1 2 1 3 ``` 输出样例: ``` 1/2 1/3 5/6 1/6 1/6 3/2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值