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

C++仅使用条件语句实现3个输入数字升序排序的中间值问题修复

C++三数升序排序代码修复方案

问题根因

  • 中间值判断逻辑错误:你编写的(n1 >= n2 && n1 >= n3) && (n1 <= n2 && n1 <= n3)条件要求变量同时是最大值和最小值,仅当三个输入完全相等时才会命中,其余场景下middle变量未初始化,输出的是内存随机值,你测试案例中输出的0就是该原因导致。
  • 最小、最大值的判断条件未处理相等边界:如果输入存在相等数值(如2 2 3),现有判断分支也无法命中,同样会出现变量未初始化的问题。

修复代码

修正判断逻辑,补全边界场景后的可运行代码如下:

#include <iostream>
using namespace std;

int main()
{
    int n1, n2, n3;
    int largest, middle, smallest;

    cin >> n1 >> n2 >> n3;

    // 计算最小值
    if (n1 <= n2 && n1 <= n3)
    {
        smallest = n1;
    }
    else if (n2 <= n1 && n2 <= n3)
    {
        smallest = n2;
    }
    else
    {
        smallest = n3;
    }
        
    // 计算中间值:满足大于等于其中一个数且小于等于另一个数
    if ((n1 >= n2 && n1 <= n3) || (n1 <= n2 && n1 >= n3))
    {
        middle = n1;
    }
    else if ((n2 >= n1 && n2 <= n3) || (n2 <= n1 && n2 >= n3))
    {
        middle = n2;
    }
    else
    {
        middle = n3;
    }

    // 计算最大值
    if (n1 >= n2 && n1 >= n3)
    {
        largest = n1;
    }
    else if (n2 >= n1 && n2 >= n3)
    {
        largest = n2;
    }
    else
    {
        largest = n3;
    }
    
    cout << smallest << " " << middle << " " << largest;
    return 0;
}

修复后输入6 1 3会输出预期结果1 3 6,同时支持存在相等值的输入场景。

内容的提问来源于stack exchange,提问作者Julian Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:27:02