c语言将三个整数数按从大到小输出

本代码通过比较交换的方式,将输入的三个整数按从大到小的顺序排序并输出,逻辑直观易懂,适配空格分隔的输入格式,满足题目要求。

完整代码

cpp 复制代码
#include <stdio.h>

int main()
{
    int a, b, c, temp;  // 定义三个存储输入值的变量,temp作为交换临时变量
    
    // 读取三个整数,支持空格分隔输入(如:2 3 1)
    scanf("%d %d %d", &a, &b, &c);
    
    // 第一步:确保a是a和b中的较大值
    if (a < b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    
    // 第二步:确保a是三个数中的最大值(与c比较)
    if (a < c)
    {
        temp = a;
        a = c;
        c = temp;
    }
    
    // 第三步:确保b是剩余两个数中的较大值(此时a已确定为最大值,只需比较b和c)
    if (b < c)
    {
        temp = b;
        b = c;
        c = temp;
    }
    
    // 按从大到小顺序输出,空格分隔
    printf("%d %d %d\n", a, b, c);
    
    return 0;
}

核心逻辑说明

采用"逐步确定最大值"的思路,通过三次条件判断和值交换,依次锁定三个数中的最大值、中间值和最小值:

  1. 首先比较a和b,通过交换让a ≥ b,此时a是前两个数的较大值;

  2. 再将a与c比较,通过交换让a ≥ c,此时a确定为三个数中的最大值;

  3. 最后比较剩余的b和c,通过交换让b ≥ c,此时a、b、c已按从大到小排序。

使用说明

  1. 编译运行代码后,在控制台输入三个整数,整数之间用空格分隔(例如:2 3 1);

  2. 输入完成后按下回车,程序会直接输出排序后的结果(例如:3 2 1)。

关键知识点

  • 变量交换:必须借助临时变量temp,避免直接赋值导致数据丢失(如直接a = b会覆盖a的原始值);

  • scanf输入格式:%d %d %d 支持以空格、回车等分隔符读取多个整数,适配题目要求的输入格式;

  • 条件判断:通过if语句比较变量大小,是排序逻辑的核心,此处仅需三次判断即可完成三个数的排序。

相关推荐
小白学大数据20 分钟前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel
旧梦952730 分钟前
Java SortedMap 接口详解:从入门到实战
java·开发语言
莫陌尛.34 分钟前
Java_this构造方法
java·开发语言
Persistent的粽子!1 小时前
C++:类与对象(二)
开发语言·c++
Dreams°1231 小时前
【Java后端+Vue前后端分离:内网正常、公网访问异常|5个高频经典踩坑完整复盘】
java·开发语言·vue.js
思麟呀1 小时前
嵌入式入门(一)宏观生态到首次烧录
c语言·嵌入式硬件
小雪崩1 小时前
嵌入式学习 day39:TCP并发服务器模型
linux·服务器·c语言·网络·学习·tcp/ip
.YM.Z2 小时前
C++ STL 容器深度剖析:vector 与 list 的模拟实现及对比
开发语言·c++·vector·list
lsylalalala2 小时前
多线程(4)
java·开发语言·多线程
小白不想画工图2 小时前
银河麒麟V10系统安装QT5.12
linux·开发语言·qt·银河麒麟