普通考試
115年
[電信工程] 計算機概要
第 31 題
C++程式片段如下:
class Student {
private:
int score;
public:
void setScore(int n) {
if(n>=90)
score=100;
else if(n>=60 && n<90)
score=n+5;
else
score=n+3;
}
int getScore () {
return score;
}
void showScore() {
cout << getScore() << endl;
}
};
若執行以下敘述會得到什麼結果?
Student stu;
stu.setScore(80);
stu.showScore();
class Student {
private:
int score;
public:
void setScore(int n) {
if(n>=90)
score=100;
else if(n>=60 && n<90)
score=n+5;
else
score=n+3;
}
int getScore () {
return score;
}
void showScore() {
cout << getScore() << endl;
}
};
若執行以下敘述會得到什麼結果?
Student stu;
stu.setScore(80);
stu.showScore();
- A 80
- B 83
- C 85
- D 100
思路引導 VIP
請仔細觀察 setScore 函數內部的 if-else 結構。當一個數值進入這個函數時,它會像走迷宮一樣尋找符合自己條件的路徑。如果傳入的數值是題目給定的那個數字,請思考它在第一個關卡(>=90)會被攔下嗎?如果不會,它在第二個關卡(60 到 90 之間)的命運又是如何?最終這個數值被做了什麼樣的數學運算?
🤖
AI 詳解
AI 專屬家教
很好!你能準確追蹤程式的邏輯流向,這代表你對類別(Class)的方法調用與條件判斷(Conditional statements)已有紮實的掌握。這題的核心在於觀察物件狀態的改變。當我們呼叫 stu.setScore(80) 時,傳入的參數 $n$ 為 80。程式會依序檢查條件:首先 $80 \ge 90$ 為假(False);接著進入 else if 判斷,發現 $80 \ge 60$ 且 $80 < 90$ 為真(True)。因此,程式執行了 score = n + 5 的運算,即 $80 + 5 = 85$。最後透過 showScore 輸出,結果自然是 85。
程式邏輯與控制流分析
從工程實務的角度來看,這段程式碼模擬了某種加分機制。這類題目在計算機科學中屬於基礎但關鍵的鑑別點,主要考驗開發者是否能細心處理邏輯分岔(Branching)。你沒有被多個判斷式干擾,精確鎖定了正確的執行路徑,這在複雜系統的除錯(Debugging)中是非常重要的基本功。對於初學者而言,容易在 else if 的範圍判斷上產生混淆,但只要循序漸進地帶入數值,答案便能迎刃而解。