跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C算法

C 语言实战:比较两个分数的大小

利用最小公倍数通分比较分数大小。程序定义函数计算最小公倍数,主函数读取两个分数格式,通过通分后分子对比得出结果,并记录运行耗时。适合初学者理解分数运算与基础算法逻辑。

Eee_123发布于 2013/5/14更新于 2026/6/417 浏览
C 语言实战:比较两个分数的大小

比较两个分数的大小

在数学中,比较两个分数的大小最常用的方法是通分,即找到分母的最小公倍数,将分子扩大相同倍数后再进行比较。我们可以用 C 语言来模拟这个过程。

核心思路

程序主要依赖两个步骤:

  1. 计算两个分母的最小公倍数(LCM)。
  2. 将两个分数转换为同分母形式,直接比较分子大小。

为了更直观地展示算法效率,代码中还加入了简单的计时功能。

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 求最小公倍数
// 原理:LCM(a, b) = (a * b) / GCD(a, b)
long int gongbeishu(int a, int b) {
    int temp;
    int k1 = a, k2 = b;
    // 使用欧几里得算法求最大公约数
    while (a % b != 0) {
        temp = a;
        a = b;
        b = temp % b;
    }
    return k1 * k2 / b;
}

int main() {
    long int start, finish;
    int a, b, c, d;
    
    // 输入格式:a/b,c/d (例如 1/2,3/4)
    printf("请输入两个分数 (格式:a/b,c/d): ");
    scanf("%d/%d,%d/%d", &a, &b, &c, &d);
    
    start = clock();
    
    // 通分后比较分子
    // 第一个分数变为:a * (LCM/b)
    // 第二个分数变为:c * (LCM/d)
    if (a * (gongbeishu(d, b) / b) - c * (gongbeishu(b, d) / d) > 0) {
        printf("\n%d/%d > %d/%d\n", a, b, c, d);
    } else if (a * (gongbeishu(d, b) / b) - c * (gongbeishu(b, d) / d) < 0) {
        printf("\n%d/%d < %d/%d\n", a, b, c, d);
    } else {
        printf("\n%d/%d = %d/%d\n", a, b, c, d);
    }
    
    finish = clock();
    printf("\n运行耗时:%lfs\n", (finish - start) / 1000.0);
    
    return 0;
}

几点说明

  1. 关于最小公倍数函数:这里复用了最大公约数的计算逻辑(辗转相除法),最后通过公式 (a*b)/gcd 得到最小公倍数。注意变量 k1, k2 保存了原始值,因为循环中 a, b 会被修改。
  2. 输入格式:scanf 中的 / 和 , 是字面量,输入时必须严格匹配,比如 1/2,3/4。
  3. 性能优化:对于简单的分数比较,其实可以直接交叉相乘(a*d vs c*b),避免计算公倍数带来的开销。但在教学或特定场景下,通分法更能体现分数的本质。

这段代码结构清晰,适合用来练习基本的输入输出、函数调用以及算法逻辑的实现。

目录

  1. 比较两个分数的大小
  2. 核心思路
  3. 代码实现
  4. 几点说明
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 图形管线与渲染引擎的 C++ 架构:模块化与跨平台实践
  • 基于 Milvus 向量数据库实现 GraphRAG 技术详解
  • 基于蓝耘智算平台部署通义万相 2.1 文生图技术解析
  • 英伟达GTC 2026:发布新推理芯片与Rubin架构,AI智能体时代开启
  • 飞算 JavaAI 深度体验与功能测评
  • 基于 VoxCPM-1.5 的红外相机智能语音驱赶系统实战
  • 利用 AI 助手将自然语言转换为 SQL 的实战经验
  • AI Agent 架构:基础组成模块深度解析
  • 攻防世界 Web 题解 (八): 加密解密、反序列化、RCE 及文件包含
  • 深入解析 CGraph:高性能 C++ DAG 并行计算框架的架构设计与实战应用
  • Windows 环境 Claude Code Git Bash 依赖修复方案
  • Docker 部署 AI 量化分析平台:环境配置与波浪理论实战
  • Cursor 辅助开发 Web 背单词应用实战
  • 单点登录(SSO)架构设计与核心原理解析
  • 使用 AI 快速验证 GIT 环境配置方案
  • C++ 实现 WAV 与 MP3 音频播放功能
  • C++物理引擎中连续碰撞检测的陷阱与解决方案
  • LeetCode 子集问题:Java 位运算与回溯法解析
  • 基于 minimind 从零训练 26M 微型语言模型指南
  • RabbitMQ 事务机制与消息限流实战:Spring AMQP 高级应用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online