# 【3-1】一維陣列 你今天是數學小老師,老師要你幫忙登記這次的小考成績,你會怎麼做? 那還不簡單,畫表格,照座號登記。 在程式中,有沒有這種表格,來儲存資料呢?當然有,就是我們接下來要介紹的「一維陣列」 ## 一維陣列 先不用管什麼是陣列,我們先畫表格就好,假設班上的成績如下: | 1號 | 2號 | 3號 | 4號 | 5號 | 6號 | 7號 | 8號 | 9號 | 10號 | | ---- | ---- | ---- | --- | --- | --- | --- | --- | --- | --- | | 84分 | 57分 | 91分 | 47分 | 63分 | 88分 | 21分 | 98分 | 74分 | 78分 | 要怎麼儲存成績,你可能想到變數宣告: ```cpp int a=84; int b=57; int c=91; int d=47; int e=63; int f=88; int g=21; int h=98; int i=74; int j=78; ``` 但這樣如果變50個學生、300個學生,不就弄到瘋掉,還很難直接找到這是誰的成績。 所以,我們來學一個新的資料儲存方式:陣列 ### 陣列的宣告 ```cpp int a[n]; // 宣告一個名稱為 a,可以存放 n 個整數的陣列 ``` ### Python對照 ```python a = [0] * n # 宣告一個長度為 n,初始值都是 0 的 list ``` 或者已經知道陣列要存放什麼,也可以直接寫成這樣: ```cpp int a[10] = {84,57,91,47,63,88,21,98,74,78}; ``` ### Python對照 ```python int a[10] = {84,57,91,47,63,88,21,98,74,78}; ``` 但是!要注意! ### 陣列的編碼 陣列的編號是 0-index,所以第一格叫做 `a[0]`,第二間叫 `a[1]`,以此類推。 剛才的表格就可以被改寫成這樣: | `a[0]` | `a[1]` | `a[2]` | `a[3]` | `a[4]` | `a[5]` | `a[6]` | `a[7]` | `a[8]` | `a[9]` | | ---- | ---- | ---- | --- | --- | --- | --- | --- | --- | --- | | 84 | 57 | 91 | 47 | 63 | 88 | 21 | 98 | 74 | 78 | 所以,一個大小為 n 的陣列 `a`,最後一項是 `a[n-1]` 而不是 `a[n]` 喔! ### 陣列的遍歷 我們可以配合 `for` 迴圈來做到陣列的遍歷,舉例如下: ### 輸入 題目中常常會需要讀取資料,我們可以根據資料的數量先建立一個大小合適的陣列,再依序讀入。 ```cpp= int n; cin >> n; // n 代表有幾筆資料 int a[n]; // 建立一個大小為 n 的陣列 for(int i=0;i<n;i++){ cin >> a[i]; // 輸入每一格的數字 } ``` ### Python對照 ```python= n = int(input()) a = [] for i in range(n): a.append(int(input())) ``` 透過 `i`,我們會從 `i=0`,也就是第一格 `a[0]`,一路指到 `i=n-1`,也就是最後一格 `a[n-1]`。 ### 輸出 假設陣列中已經有資料了,這時候就一樣用 `for` 迴圈遍歷,只是改成 `cout` 而已。 ```cpp= for(int i=0;i<n;i++){ cout << a[i] << endl; } ``` ### Python對照 ```python= for i in range(n): print(a[i]) ``` 如果只需要特定一格的資料,也可以直接 `cout` 那一格的編號就好。 像是剛才的舉例: ```cpp int a[10]={84,57,91,47,63,88,21,98,74,78}; ``` | `a[0]` | `a[1]` | `a[2]` | `a[3]` | `a[4]` | `a[5]` | `a[6]` | `a[7]` | `a[8]` | `a[9]` | | ---- | ---- | ---- | --- | --- | --- | --- | --- | --- | --- | | 84 | 57 | 91 | 47 | 63 | 88 | 21 | 98 | 74 | 78 | 這時候要查 7 號的成績,就輸出 `a[6]` 就可以了。為什麼不是 `a[7]`,因為陣列是 0-index 編碼。 --- 聯絡方式:codecodefunny@gmail.com 最後編修時間:2025/07/10 子柚筆