[PTA]7-33 有理数加法

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]7-33 有理数加法相关的知识,希望对你有一定的参考价值。

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6
结尾无空行

输出样例1:

1/2
结尾无空行

输入样例2:

4/3 2/3

输出样例2:

2
  • 提交结果:

  • 源码:
#include<stdio.h>
int main(void)
{
	int a1, b1, a2, b2;
	int numerator, denominator;

	scanf("%d/%d %d/%d", &a1, &b1, &a2, &b2);

	// 通分
	denominator = b1 * b2;
	numerator = a1 * b2 + a2 * b1;

	// 化为最简分式
	for (int i = numerator; i > 1; i--)
	{
		if (denominator % i == 0 && numerator % i == 0)
		{
			denominator /= i;
			numerator /= i;
			i = numerator;
		}
	}

	// 按题目要求格式输出
	if (denominator != 1)
	{
		printf("%d/%d", numerator, denominator);
	}
	else
	{
		printf("%d", numerator);
	}

	return 0;
}

以上是关于[PTA]7-33 有理数加法的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验9-9 有理数比较

[PTA]7-35 有理数均值

一个小题,有理数加法

题解PTA团体程序设计天梯赛L1-009 N个数求和 (20 分) Go语言|Golang

PTA乙级 (1049 数列的片段和 (20分))

[PTA]习题9-3 平面向量加法