PTA基础编程题目集 7-33 有理数加法(C语言实现)
2026/8/2 3:27:13 网站建设 项目流程

摘要:本题要求计算两个分数形式有理数的和,输入以a1/b1 a2/b2格式给出,需通分、约分后输出最简分数;若分母为 1 则仅输出分子。核心考察分数通分、辗转相除法求最大公约数及约分处理。

题目描述

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

输入格式:

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

输出格式:

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

输入样例:

1/3 1/6
4/3 2/3

输出样例:

1/2
2

代码部分实现

#include<stdio.h>// 引入标准输入输出头文件intgcd(inta,intb){// 辗转相除法求最大公约数returnb==0?a:gcd(b,a%b);// 递归调用,直到余数为0}intmain(){inta1,b1,a2,b2;// 定义两个有理数的分子和分母scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);// 按格式读取两个分数intnumerator=a1*b2+a2*b1;// 计算通分后的分子:a1*b2 + a2*b1intdenominator=b1*b2;// 计算通分后的分母:b1*b2intg=gcd(numerator,denominator);// 求分子和分母的最大公约数numerator/=g;// 分子除以最大公约数进行约分denominator/=g;// 分母除以最大公约数进行约分if(denominator==1){// 如果分母为1printf("%d\n",numerator);// 只输出分子}else{printf("%d/%d\n",numerator,denominator);// 输出最简分数形式}return0;// 程序正常结束}

算法流程图

输入 a1/b1 a2/b2

计算分子: a1*b2 + a2*b1

计算分母: b1*b2

调用 gcd(分子, 分母) 求最大公约数

分母 == 1?

输出分子

输出 分子/分母

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询