当前位置: 首页 > news >正文

PTA基础编程题目集 7-24约分最简分式(C++语言实现)

摘要:本文是PTA编程题"约分最简分式"的题解,涵盖题目描述、输入输出格式及C++语言实现,展示使用辗转相除法求最大公约数进行分数约分的算法。

题目描述

分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式:

输入在一行中给出一个分数,分子和分母中间以斜杠/分隔,如:12/34表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。

提示:

对于C语言,在scanf的格式字符串中加入/,让scanf来处理这个斜杠。
对于Python语言,用a,b=map(int, input().split(‘/’))这样的代码来处理这个斜杠。

输出格式:

在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母的形式表示分数。如
5/6表示6分之5。

输入样例:

66/120

输出样例:

11/20

解题思路

核心问题分析
将给定分数约分为最简分式,即分子和分母同时除以它们的最大公约数(GCD)。约分后分子与分母互质。

算法原理
使用欧几里得算法(辗转相除法)求两个数的最大公约数。算法核心:gcd(a, b) = gcd(b, a mod b),反复迭代直到余数为0,此时的除数即为最大公约数。然后分子分母同除以该GCD即得最简分式。

具体计算步骤

  1. 以"分子/分母"格式读取输入的两个整数
  2. 调用gcd函数计算分子和分母的最大公约数
  3. 简化分子 = 原分子 ÷ 最大公约数
  4. 简化分母 = 原分母 ÷ 最大公约数
  5. 按"分子/分母"格式输出结果

代码流程说明

  1. gcd函数定义:使用辗转相除法循环计算最大公约数
    • 当b≠0时,保存b到temp,b=a%b,a=temp继续迭代
    • b=0时返回a即为最大公约数
  2. 主函数输入:使用scanf(“%d/%d”, …)格式自动跳过斜杠读取分子分母
  3. 计算最大公约数:调用gcd(numerator, denominator)
  4. 约分计算:分子分母分别除以最大公约数
  5. 格式化输出:按"分子/分母"格式输出最简分式

代码流程图

开始

定义gcd函数参数a和b

b不等于0?

辗转相除更新a和b

返回a

主函数输入分子分母

调用gcd求最大公约数

分子除以最大公约数

分母除以最大公约数

输出最简分数

结束

解题流程图

输入分数形式的分子分母

提取分子a和分母b

调用辗转相除法求最大公约数

当b不等于0时

计算余数r

a更新为b,b更新为r

b为0时a即为GCD

新分子等于原分子除以GCD

新分母等于原分母除以GCD

输出最简分数形式

代码部分实现

#include<iostream>#include<cstdio>usingnamespacestd;// 使用辗转相除法求两个数的最大公约数// 算法原理:gcd(a, b) = gcd(b, a mod b),直到余数为0,此时的除数即为最大公约数intgcd(inta,intb){while(b!=0){inttemp=b;// 保存当前的除数b=a%b;// 用当前除数除当前被除数,得到新的余数a=temp;// 将原除数作为下一轮的被除数}returna;// 当b为0时,a即为最大公约数}intmain(){intnumerator,denominator;// 以"分子/分母"的格式输入分数,scanf中的/会被自动跳过scanf("%d/%d",&numerator,&denominator);// 求出分子和分母的最大公约数intcommon_divisor=gcd(numerator,denominator);// 分子分母同时除以最大公约数,得到最简分式intsimplified_num=numerator/common_divisor;intsimplified_den=denominator/common_divisor;// 输出最简分式cout<<simplified_num<<"/"<<simplified_den<<endl;return0;}
http://www.jsqmd.com/news/1362369/

相关文章:

  • 2026年北京故意损毁财物罪辩护律师**单:资深刑事律师团队,专业策略与实战经验深度解析 - 优企名品
  • Go 并发编程与高性能网络服务开发:流量上来前要补哪些防线
  • 网络环路与广播风暴:从交换机原理到STP防环实战
  • TCP三次握手原理深度解析:从网络不可靠性到可靠连接建立
  • 建设旅游服务类网站的可行性报告深度解析与未来趋势洞察
  • 绝区零自动化工具完整指南:5分钟快速掌握游戏解放方案
  • flutter_login_signup完全解析:如何用Flutter快速构建精美登录注册界面
  • EFCore.Visualizer完全指南:从安装到高级查询分析的终极教程
  • 电动车带电池怎么托运最便宜?2026年完整避坑指南+省钱攻略 - 快递物流资讯
  • 2026昆明GEO/SEO优化公司大盘点 正规合规服务商选型攻略+签约避坑全指南 - U渠道
  • 2026年物流比价平台哪个最便宜?一文讲透计费规则与省钱技巧 - 快递物流资讯
  • 从Blender建模到CIMPro发布:学校数字孪生实战全流程解析
  • AI音色转换实战:从《虫儿飞》到赛博合成的完整技术流程
  • 3步快速部署:Dreame扫地机器人的智能家居革命
  • 网络环路与广播风暴:从原理到实战,STP协议如何守护网络稳定
  • AI生成专业分析图:精准提示词工程全攻略
  • Qwen3-VL-8B-Instruct-w8a8-llmcompressor-v0.12.0背后的技术:LLM Compressor如何实现40%模型压缩
  • TCP三次握手原理深度解析:从协议到内核实现与工程实践
  • 生态安全格局分析实战:ArcGIS Pro、InVEST与Python自动化工作流搭建
  • 抖音去水印方法详解:合规操作、**保存与工具选择全攻略 - 耶斯去水印
  • 2026年大连全屋整装**单:一站式美学与匠心工艺深度解析,避坑指南口碑优选 - 优企名品
  • Juicy Breakout音效设计:如何用15种碰撞声效提升游戏沉浸感
  • FlowLong高级特性:并行会签、票签与超时审批功能详解
  • 石英式动态称重传感器品牌靠谱,广州聚杰适配各类治超监测系统 - 品牌速递
  • 应用商店拒审事件反转:原以为错判,实则合理!
  • AI模型部署安全:从配置错误到系统级防护的工程实践
  • 如何快速上手Bangle Editor?5分钟搭建你的第一个富文本编辑器
  • CSS实现蛇形扭动动画:原理与实战指南
  • 从Meta AI测试事件看沙盒安全:构建防逃逸的AI模型测试环境
  • 2026年大连二手房装修公司**:老房翻新,焕新海景美居口碑优选! - 优企名品