入門 · 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);

平局不需要特殊程式碼:用 >(不是 >=)保住先到的值——而它本來就等於後到的。下一題:數位數。