PTA基础编程题目集 7-33 有理数加法(C语言实现)
摘要本题要求计算两个分数形式有理数的和输入以a1/b1 a2/b2格式给出需通分、约分后输出最简分数若分母为 1 则仅输出分子。核心考察分数通分、辗转相除法求最大公约数及约分处理。题目描述本题要求编写程序计算两个有理数的和。输入格式输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数其中分子和分母全是整型范围内的正整数。输出格式在一行中按照 a/b 的格式输出两个有理数的和。注意必须是该有理数的最简分数形式若分母为1则只输出分子。输入样例1/3 1/64/3 2/3输出样例1/22代码部分实现#includestdio.h// 引入标准输入输出头文件intgcd(inta,intb){// 辗转相除法求最大公约数returnb0?a:gcd(b,a%b);// 递归调用直到余数为0}intmain(){inta1,b1,a2,b2;// 定义两个有理数的分子和分母scanf(%d/%d %d/%d,a1,b1,a2,b2);// 按格式读取两个分数intnumeratora1*b2a2*b1;// 计算通分后的分子a1*b2 a2*b1intdenominatorb1*b2;// 计算通分后的分母b1*b2intggcd(numerator,denominator);// 求分子和分母的最大公约数numerator/g;// 分子除以最大公约数进行约分denominator/g;// 分母除以最大公约数进行约分if(denominator1){// 如果分母为1printf(%d\n,numerator);// 只输出分子}else{printf(%d/%d\n,numerator,denominator);// 输出最简分数形式}return0;// 程序正常结束}算法流程图是否输入 a1/b1 a2/b2计算分子: a1*b2 a2*b1计算分母: b1*b2调用 gcd(分子, 分母) 求最大公约数分母 1?输出分子输出 分子/分母

相关新闻