You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按用户指定自定义顺序排序三个数字的实现需求与代码片段

实现按自定义顺序排序三个数字

要搞定这个需求,核心思路其实很简单:先把输入的三个数字里的最小值(min)、中间值(mid)和最大值(max)找出来,然后根据用户指定的顺序规则(比如ABC、CAB这类),把这三个值按对应顺序输出就可以了。

具体步骤拆解:

  • 读取用户输入的三个整数,用数组存储起来
  • 通过比较确定三个数里的最小、中间、最大值
  • 解析用户指定的顺序字符串,把每个字符映射到对应的数值(比如A对应min,B对应mid,C对应max),最后按顺序输出

完整的C语言实现代码

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

int main() {
    int i, array[3];
    // 读取三个输入数字
    for(i = 0; i < 3; i++) {
        scanf("%d", &array[i]);
    }
    
    int max, mid, min;
    // 初始化三个值为第一个元素
    max = array[0];
    mid = array[0];
    min = array[0];
    
    // 遍历数组找出最大值和最小值
    for(i = 1; i < 3; i++) {
        if(array[i] > max) {
            max = array[i];
        }
        if(array[i] < min) {
            min = array[i];
        }
    }
    
    // 通过总和减去最大、最小值快速得到中间值
    mid = array[0] + array[1] + array[2] - max - min;
    
    // 读取用户指定的排序顺序(比如ABC、CAB)
    char order[4];
    scanf("%s", order);
    
    // 根据顺序输出对应数值
    for(i = 0; i < 3; i++) {
        switch(order[i]) {
            case 'A':
                printf("%d ", min);
                break;
            case 'B':
                printf("%d ", mid);
                break;
            case 'C':
                printf("%d ", max);
                break;
            default:
                printf("无效的顺序字符!");
                return 1;
        }
    }
    printf("\n");
    
    return 0;
}

代码细节说明:

  • 找最大最小值:用一次遍历就能搞定,比嵌套判断更简洁高效
  • 计算中间值:利用三个数的总和减去max和min,省去了一堆复杂的条件判断,逻辑更清晰
  • 顺序映射:用switch语句匹配顺序字符串里的每个字符,直接对应输出对应数值,扩展性也强——如果以后要加其他顺序规则,直接加case就行

测试示例:

示例1:输入数字 1 5 3,指定顺序 ABC
输出结果:1 3 5(对应最小→中间→最大)

示例2:输入数字 1 5 3,指定顺序 CAB
输出结果:5 1 3(对应最大→最小→中间)

内容的提问来源于stack exchange,提问作者Yizhi Hu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:23:16