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

仅用3个IF语句(无else)找出三个数的最大值和最小值

问题修正与解决方案

你的代码存在两个关键错误:

  1. 逻辑覆盖不全:仅处理了三种严格递增的数字排列,剩余5种排列(递减、乱序、存在相等值)完全未覆盖,导致这些场景下biggest和smallest未初始化,运行时会抛出未赋值的错误。
  2. 赋值逻辑颠倒:比如当n1 < n2 < n3时,最小值应为n1、最大值应为n3,但你的代码错误地将smallest设为n3、biggest设为n1,完全搞反了结果。

以下是符合要求的代码(仅用3个IF语句,无else、无数组):

double n1, n2, n3, biggest, smallest;
Console.Write("First number:  ");
n1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Second number: ");
n2 = Convert.ToDouble(Console.ReadLine());
Console.Write("Third number: ");
n3 = Convert.ToDouble(Console.ReadLine());

// 初始化最大最小值为第一个数,处理n2等于n1的情况
biggest = n1;
smallest = n1;

// 第一个IF:n2大于n1时更新最大最小值
if (n2 > n1)
{
    biggest = n2;
    smallest = n1;
}

// 第二个IF:n2小于n1时更新最大最小值
if (n2 < n1)
{
    biggest = n1;
    smallest = n2;
}

// 第三个IF:用n3更新当前的最大或最小值
if (n3 > biggest || n3 < smallest)
{
    biggest = n3 > biggest ? n3 : biggest;
    smallest = n3 < smallest ? n3 : smallest;
}

Console.WriteLine("	Max: {0}", biggest);
Console.WriteLine("	Min: {0}", smallest);

代码说明

  • 先初始化biggest和smallest为第一个数,处理n2等于n1的场景(此时前两个IF不触发,最大最小值保持为n1)。
  • 前两个IF分别处理n2大于或小于n1的情况,确定前两个数的最大最小值。
  • 第三个IF通过三元运算符,在n3比当前最大值大或比当前最小值小时,更新对应的变量,无需额外的IF语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:50:25