只加偶數
L2|進階JSL01-P02看題目內容
- 輸入
- 第一行:一個整數 N。 第二行:N 個整數,以空白分隔。
- 輸出
- 輸出所有偶數的總和。若沒有偶數,輸出 0。
輸入
5 1 2 3 4 5
6
輸入
3 1 3 5
0
邊讀邊統計:總和、平均、符合條件的數量
老師拿到全班的成績單,最常問的問題是:總分多少?平均幾分?有幾個人及格?及格率多少?
這些問題看起來不一樣,做法卻有同一個骨架:一筆一筆看資料,每看一筆,就更新一個「記錄用的變數」。看完全部資料,記錄變數裡存的就是答案。
依照你想知道的事,記錄變數有兩種常見的用法:
| 你想知道 | 記錄變數 | 初始值 | 每讀到一筆資料要做的事 |
|---|---|---|---|
| 全部加起來是多少 | 總和 | 0 | 總和 = 總和 + 這筆資料 |
| 有幾筆符合條件 | 數量 | 0 | 如果這筆資料符合條件:數量 = 數量 + 1 |
把它寫成步驟,就是這個知識點每一題都會用到的骨架:
讀入 N(總共有幾筆資料)
記錄變數 設為 初始值
重複 N 次:
讀入一筆資料
(需要的話,先判斷這筆資料符不符合條件)
更新記錄變數
說出答案
題目常把 N 個數字放在同一行、用空白隔開,例如「30 60 50 80 45 90」。平台的「詢問並等待」每次會依序拿到一個數字,所以只要重複「詢問並等待」N 次,就能照順序讀完這一行。
因為這些問題的每一筆資料只需要看一次:讀到就處理,處理完就可以不管它了。只有當你需要回頭再看資料時,才需要先把資料存進清單。最後的延伸挑戰就是這種情況。
先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。
3 10 20 30
60 20
4 1 2 3 4
10 2
讀入 N
總和 設為 0
重複 N 次:
讀入 數字
總和 設為 總和 + 數字
說出 總和
說出 (總和 ÷ N)無條件捨去輸入「3」和「10 20 30」時,每一輪迴圈結束後,變數會變成這樣:
| 第幾輪 | 讀到的數字 | 總和 |
|---|---|---|
| 開始前 | - | 0 |
| 第 1 輪 | 10 | 10 |
| 第 2 輪 | 20 | 30 |
| 第 3 輪 | 30 | 60 |
最後說出總和 60,平均是 60 ÷ 3 = 20。和範例輸出一樣。
像上面這樣列表追蹤變數,是找出錯誤最有效的方法。程式跑出來的答案不對時,也可以用同樣的方法一輪一輪檢查。
寫完之後,可以在平台上按「載入範例」,看看範例答案和你的寫法哪裡不同。請特別注意這三個地方:
6 50 30 60 50 80 45 90
3
骨架完全一樣,只改了兩個地方:
讀入 N
讀入 K
數量 設為 0
重複 N 次:
讀入 數字
如果 數字 > K:
數量 設為 數量 + 1
說出 數量輸入 N=6、K=50,資料是「30 60 50 80 45 90」:
| 讀到的數字 | 大於 50 嗎? | 數量 |
|---|---|---|
| 30 | 否 | 0 |
| 60 | 是 | 1 |
| 50 | 否(等於不算大於) | 1 |
| 80 | 是 | 2 |
| 45 | 否 | 2 |
| 90 | 是 | 3 |
答案是 3。
按「載入範例」後,請注意:判斷條件用的是「>」,數量每次只加 1,不是加上那個數字。
照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。
5 1 2 3 4 5
6
3 1 3 5
0
5 15 5 20 8 3
5 8 3
3 12 15 20
(不輸出)5 80 55 60 40 90
3 60
核心題都會了嗎?這些題目需要把好幾個技巧組合起來,想挑戰的話可以試試看。
5 10 20 30 40 50
30 2
學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。