6.2 完整範例:解決搬家的箱子
現在我們知道陣列的語法了,讓我們實際解掉開頭的「搬家的箱子」——剛才要一百個變數加兩百層 if 的題目,用陣列只要十幾行:
¶範例程式碼
#include <iostream>
using namespace std;
const int MAX_N = 105; // 題目 N ≤ 100,上限再多開一點
int a[MAX_N]; // 全域陣列(好處見 6.5、6.10)
int main() {
int N;
cin >> N; // 讀入物品數量
for (int i = 1; i <= N; i++) {
cin >> a[i]; // 第 i 個放進箱子的編號存進 a[i]
}
for (int i = N; i >= 1; i--) { // 倒著跑、倒著印
cout << a[i] << " ";
}
cout << '\n';
return 0;
}
執行結果(題目的範例輸入):
輸入:
8
5 8 1 3 9 2 7 4
輸出:
4 7 2 9 3 1 8 5
讀入的迴圈正著跑、輸出的迴圈倒著跑——存進陣列之後,「讀入的順序」和「使用的順序」就分家了,想按什麼順序取用都行。這就是陣列的威力:N 是 3 還是 100,程式碼都是同一份。
陣列是處理「一串資料」時最基本的工具。許多基礎題會需要先保存資料,再根據題目邏輯訪問、修改或統計陣列中的元素。
動手試試看:把讀入迴圈改成 for (int i = 0; i < N; i++),改用 a[0] ~ a[N-1] 儲存。倒著印的那個迴圈要跟著怎麼改,結果才會一樣?改完執行驗證,再進下一節。