例题 分数的

思路
1、通分;
2、实现四则运算;
3、利用 “辗转相除法 ”思想构造求最大公约数的算法;
4、利用最大公约数进行月份简化;
5、输出; 另外需要注意的是,尽量减少分数简化(约分)次数,我之前几次超时,原因是构造分数时就进行一次约分。实际上只需要在 输出前 约分 就行;
#include
#include
#include using namespace std;
long long gcd(long long a, long long b)
{return b == 0 ? a : gcd(b, a % b);}
int main()
{
int a, b, c, d;
char e;
int g, h;
while (~scanf("%d/%d %d/%d %c", &a, &b, &c, &d, &e))
{
switch(e){
case ‘+’: {h = b * d; g = a * d + c * b; break;}
case ‘-’: {h = b * d; g = a * d - c * b; break;}
case ‘*’:{h = b * d ; g = a * c; break;}
case ‘/’:{h = b * c; g = a * d; break;}
}
int gcdvalue =(g0||h0)? 1:gcd(abs(g),abs(h));
printf("%d/%d\n",g/=gcdvalue,h/=gcdvalue);

}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43719397/article/details/84386309