入门 · if/else + 边界
三数取最大
读入三个整数,打印最大的那个。听着简单——有意思的是边界情况:全负输入和平局。
题目
输入:一行,三个整数 a b c(−10⁹ ≤ 每个 ≤ 10⁹)。
输出:一行,三个数的最大值。
样例:
| 输入 | 输出 |
|---|---|
3 9 5 | 9 |
-7 -2 -9 | -2 |
4 4 4 | 4 |
你的解答
"用我的输入试跑"的自定义输入
判题完全在你的浏览器里对隐藏测试运行。代码随打随存(本地)。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);
平局不需要特殊代码:用 >(不是 >=)保住先到的值——而它本来就等于后到的。下一题:数位数。