---
# System prepended metadata

title: 【3-1】一維陣列

---

# 【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 子柚筆