學習軌道
/
C++
C++
/
練習
/
購買車輛
購買車輛

購買車輛

學習練習

簡介

比較

在 C++ 中,你可以使用比較運算子來比較值。

比較 運算子
等於 ==
不等於 !=
小於 <
小於或等於 <=
大於 >
大於或等於 >=

這些比較的結果一律是布林值:

int a{3};

bool eq1 = a != 4; // true

bool eq2 = a > 5;  // false

運算子==和!=會分別檢查一個值是否等於另一個值,以及是否不等於另一個值。 以下是一些常見的例子:

bool eq3 = 2 == 3; // false, integer comparison

bool eq4 = 2.1 != 2.2; // true, float comparison

bool eq5 = "hello" == "hello"; // true, string comparison

其他運算子則檢查某個值是否大於(>)、大於或等於(>=)、小於(<)、或小於或等於(<=)另一個值。 這類比較適用於數字和字串。 比較字串時,會依字典順序(又稱字典序)進行。

bool eq6 = 2 > 3; // false, integer comparison

bool eq7 = 1.2 < 1.3; // true, float comparison

bool eq8 = "Hello" < "World"; // true, string comparison

if敘述

C++ 的條件判斷和其他語言很像。 任何條件運算的底層型別都是bool型別,它的值可以是true或false。 條件判斷經常被當成流程控制機制,用來檢查各種條件。

你可以使用if敘述,當底層條件為true時,它便會執行其中的程式碼,就像這樣:

std::string value{"val"};

if (value == "val") {
    return "was val";
}

如果需要處理多於一種情況,可以用else if和else敘述把多個if敘述串接起來。

int number{33};

if (number > 0) {
   return "positive";
} else if (number < 0) {
    return "negative";
} else {
   return "zero";
}

從 C++17 開始,if敘述還可以包含一段簡短的初始化敘述,用來為這個if敘述初始化一個或多個變數。 例如:

int num{7};
if (int v{2 * num}; v > 10) {
    return v;
} else {
    return num;
}
// => 14

注意:在初始化中建立的任何變數,都無法在if敘述結束之後存取。

說明

在這道練習中,你會寫一些程式碼,幫助自己準備買一輛車。

你有三個任務:判斷自己需不需要駕照、在兩輛車之間做選擇,以及估算一輛二手車的合理價格。

1. 判斷你是否需要駕照

有些車輛種類需要駕照才能操作。 假設只有"car"和"truck"這兩種需要駕照,其他種類都可以在沒有駕照的情況下操作。

實作needs_license(kind)函式,它接收車輛種類作為字串,並回傳一個布林值,指出你是否需要那種車輛的駕照。

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

2. 在兩輛可能購買的車之間做選擇

你先評估手邊可選的車輛。 你成功把選項縮小到兩輛,但還需要幫忙做出最後決定。 為此,請實作choose_vehicle(option1, option2)函式,它接受兩輛車作為引數,並回傳一個決定,其中包含依字典序排在最前面的選項。

choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

回傳的字串應該遵循「<CHOSEN_VEHICLE> is clearly the better choice.」的形式,其中<CHOSEN_VEHICLE>是從傳入的引數中選出的那個選項。

3. 估算一輛二手車的價格

既然做完了決定,你會想確保自己在車商那裡拿到合理的價格。 由於你想買的是二手車,價格取決於車齡。 粗略估算的話,假設車齡未滿 3 年,價格是全新時原價的 80%。 如果車齡至少 10 年,價格是 50%。 如果車齡至少 3 年但未滿 10 年,價格是原價的 70%。

實作calculate_resell_price(original_price, age)函式,用if、else if和else套用這套邏輯(如果你想練習,也有其他寫法)。 它接受原價和車齡作為引數,並回傳車商估算的價格。

calculate_resell_price(1000, 1)
// => 800

calculate_resell_price(1000, 5)
// => 700

calculate_resell_price(1000.0, 15)
// => 500

注意:回傳值的型別是double。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C++ Exercism

準備好開始 購買車輛 了嗎?

註冊 Exercism,透過 19 個概念100 個練習 和真人引導來學習並精通 C++,全部免費。