入門 · 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);
平局不需要特殊程式碼:用 >(不是 >=)保住先到的值——而它本來就等於後到的。下一題:數位數。