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

C++求三个数最大值代码输入小数值时无输出问题求助

问题原因
  • 代码的分支判断逻辑存在大量覆盖盲区,只有同时满足num1>num2且num1>num3、num2>num1且num2>num3、num1==num2三种场景时才会输出内容,其余场景没有任何输出逻辑:
    1. 例如输入1 2 3时,num2>num1成立,但num2>num3不成立,不会进入任何cout分支,程序直接结束无输出,这就是你遇到故障的核心原因
    2. 最后一个else分支的逻辑完全错误,仅当num1和num2相等时就直接判定第三个数最大,完全没有和第三个数做大小比较
解决方法

你可以选择任意一种方案修改代码:

方案1:修正原有嵌套判断逻辑

先逐步比较得出最大值,再匹配对应的输出内容,覆盖所有大小、相等场景:

#include <iostream>
using namespace std;

int main()
{
   int num1, num2, num3;
   cout << "Enter First Number" << endl;
   cin >> num1;
   cout << "Enter Second Number" << endl;
   cin >> num2;
   cout << "Enter Third Number" << endl;
   cin >> num3;
   int largest;
   // 先比较前两个数的最大值
   if (num1 >= num2) {
       largest = num1;
   } else {
       largest = num2;
   }
   // 再和第三个数比较
   if (num3 > largest) {
       largest = num3;
   }
   // 匹配输出
   if (largest == num1) {
       cout << "First Number Is The Largest";
   } else if (largest == num2) {
       cout << "Second Number Is The Largest";
   } else {
       cout << "Third Number Is The Largest";
   }
   return 0;
}

方案2:使用C标准库简化逻辑(C11及以上版本支持)

直接调用std::max的初始化列表重载,一行代码即可求出三个数的最大值,代码更简洁不易出错:

#include <iostream>
#include <algorithm> // 引入max函数所需头文件
using namespace std;

int main()
{
   int num1, num2, num3;
   cout << "Enter First Number" << endl;
   cin >> num1;
   cout << "Enter Second Number" << endl;
   cin >> num2;
   cout << "Enter Third Number" << endl;
   cin >> num3;
   int largest = max({num1, num2, num3});
   if (largest == num1) {
       cout << "First Number Is The Largest";
   } else if (largest == num2) {
       cout << "Second Number Is The Largest";
   } else {
       cout << "Third Number Is The Largest";
   }
   return 0;
}

内容的提问来源于stack exchange,提问作者Rudraksha Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:02