入门 · if/else + 边界

三数取最大

读入三个整数,打印最大的那个。听着简单——有意思的是边界情况:全负输入和平局。

题目

输入:一行,三个整数 a b c(−10⁹ ≤ 每个 ≤ 10⁹)。

输出:一行,三个数的最大值。

样例:

输入输出
3 9 59
-7 -2 -9-2
4 4 44

你的解答

Program.cs — 你的解答
"用我的输入试跑"的自定义输入

判题完全在你的浏览器里对隐藏测试运行。代码随打随存(本地)。Ctrl+Enter 判题。

卡住了?提示

提示 1 —— 一个诱人的错误起点

把 int max = 0; 初始化,全负测试就挂了:真答案 −2 比 0 小。要从数据初始化(max = a;),永远别用魔法数字。

提示 2 —— 运行最大值模式

max = a; 起步,然后 if (b > max) max = b; 和 if (c > max) max = c;。这个模式能扩展到一百万个数——所以值得内化。

解答(先自己试!)
string[] parts = Console.ReadLine().Split(' ');
int a = int.Parse(parts[0]);
int b = int.Parse(parts[1]);
int c = int.Parse(parts[2]);

int max = a;
if (b > max) max = b;
if (c > max) max = c;

Console.WriteLine(max);
// 一行版:Math.Max 可以嵌套,平局天然没问题
string[] parts = Console.ReadLine().Split(' ');
int max = Math.Max(int.Parse(parts[0]), Math.Max(int.Parse(parts[1]), int.Parse(parts[2])));
Console.WriteLine(max);

平局不需要特殊代码:用 >(不是 >=)保住先到的值——而它本来就等于后到的。下一题:数位数。