分数加法(c++)

小学我们都学过分数。分数的加法是小学课程中比较重要的一环。现在我们就教计算机来学会分数加法吧。

为了简单起见,a/b+c/d 中 a,b,c,d 都是正整数,计算结果必须是最简分数哦。

【输入描述】:

只有一行,四个整数。用空格隔开的 a,b,c,d。(所给分数不一定是最简分数)

【输出描述】:

一行,两个整数用空格隔开,表示结果中的分子和分母。(计算结果必须是最简分数)

【样例输入】:

4 7 6 9

【样例输出】:

26 21

【时间限制、数据范围及描述】:

时间:1s 空间:64M

100% 的数据:1<=a,b,c,d<=100

分析与解:

这题没什么好说的,直接上代码:

#include<stdio.h>
int gcd(int a,int b){
	if(!b) return a;
	return gcd(b,a%b);
}
int main(){
//	freopen("fractadd.in","r",stdin);
//	freopen("fractadd.out","w",stdout);
	int a,b,c,d;
	scanf("%d%d%d%d",&a,&b,&c,&d);
	int ans1=a*d+b*c,ans2=b*d;
	printf("%d %d",ans1/gcd(ans1,ans2),ans2/gcd(ans1,ans2));
	return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
分数计算器C是一种大家都常用的小型软件,主要功能是支持分数的四则运算和求最大公约数。以下是一份分数计算器C的程序代码: #include <stdio.h> #include <stdlib.h> // 分数结构体 typedef struct Fraction{ int numerator; // 分子 int denominator; // 分母 }Fraction; // 求最大公约数 int gcd(int a, int b){ return b == 0 ? a : gcd(b, a % b); } // 约分 Fraction reduce(Fraction f){ if(f.numerator == 0){ // 如果分子为0,分母置为1 f.denominator = 1; }else{ int d = gcd(abs(f.numerator), abs(f.denominator)); f.numerator /= d; f.denominator /= d; } return f; } // 加法 Fraction add(Fraction f1, Fraction f2){ Fraction sum; sum.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator; sum.denominator = f1.denominator * f2.denominator; return reduce(sum); } // 减法 Fraction substract(Fraction f1, Fraction f2){ Fraction diff; diff.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator; diff.denominator = f1.denominator * f2.denominator; return reduce(diff); } // 乘法 Fraction multiply(Fraction f1, Fraction f2){ Fraction product; product.numerator = f1.numerator * f2.numerator; product.denominator = f1.denominator * f2.denominator; return reduce(product); } // 除法 Fraction divide(Fraction f1, Fraction f2){ Fraction quotient; quotient.numerator = f1.numerator * f2.denominator; quotient.denominator = f1.denominator * f2.numerator; return reduce(quotient); } int main(){ Fraction f1 = {1, 2}; Fraction f2 = {2, 3}; // 加法 Fraction f3 = add(f1, f2); printf("%d/%d + %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f3.numerator, f3.denominator); // 减法 Fraction f4 = substract(f1, f2); printf("%d/%d - %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f4.numerator, f4.denominator); // 乘法 Fraction f5 = multiply(f1, f2); printf("%d/%d * %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f5.numerator, f5.denominator); // 除法 Fraction f6 = divide(f1, f2); printf("%d/%d ÷ %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f6.numerator, f6.denominator); return 0; } 以上是分数计算器C的程序代码,通过运行该程序可以实现分数的加减乘除运算,并且支持自动约分和求最大公约数功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值