# Array 1D 2D ## 陣列 --- ## 一維陣列 一維陣列的宣告 例如 ```cpp= int num[5]; bool is_odd[5]; ``` ---- 一維陣列的初始化 ```cpp= // 個別定義 int num1[3]; num1[0] = 1; num1[1] = 2; num1[2] = 3; // 用大括號 int num2[3] = {1, 2, 3}; // 迴圈 int num3[3]; for (int i = 0;i < 3; i++){ num3[i] = i + 1; } ``` ---- 有趣的是 陣列名稱[n-1] = 陣列第n個值 ```cpp= int num[5] = {1, 2, 3, 4, 5}; /* num[0] = 1 num[1] = 2 num[2] = 3 num[3] = 4 num[4] = 5 */ ``` ---- 為甚麼要這樣設計呢? 當我們要與迴圈合用時: ```cpp= int n = 5; int num[5]; for (int i = 0;i < n; i++){ num[i] = 0; } // 那這樣我們就把它初始化成都是0的陣列了 ``` ---- 練習 ```cpp= // 輸入n,並輸出費氏數列前n項 #include <iostream> int main(){ int n; std::cin >> n; int num[n]; num[0] = 1; num[1] = 1; for (int i = 2;i < n; i++){ num[i] = num[i - 1] + num[i - 2]; } for (int i = 0;i < n;i ++){ std::cout << "費氏數列第" << i + 1 << "項為 " << num[i] << std::endl; } return 0; } ``` --- ## 二維陣列 所謂二維陣列的宣告 是用於定義二維陣列的名稱與元素個數 ```cpp= int num[4][5]; ``` ---- 二維陣列的初始化 ```cpp= // 個別定義 int num1[2][3]; num1[0][0] = 1; num1[0][1] = 2; num1[0][2] = 3; num1[1][1] = 4; num1[1][1] = 5; num1[1][2] = 6; // 用大括號 int num2[2][3] = {{1, 2, 3}, {3, 4, 5}}; // 迴圈 巢狀迴圈 int num3[2][3]; int n = 0; for (int i = 0;i < 2; i++){ for (int j = 0;j < 3; j++){ n += 1; num3[i][j] = n; } } ``` ---- 練習 帕斯卡三角形 ```cpp= /*pascal triangle eg: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 */ #include <iostream> using namespace std; int main() { int n; cin >> n; int pascal[100][100]; for (int i = 0; i < n; i++) { pascal[i][0] = 1; pascal[i][i] = 1; } for (int i = 2; i < n; i++) { for (int j = 1; j < i; j++) { pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) cout << pascal[i][j] << " "; cout << endl; } return 0; } ``` --- # The End 感謝洋蔥大電神聆聽 ![](https://hackmd.io/_uploads/rkfJaHwvh.png)
{"metaMigratedAt":"2023-06-18T07:37:31.056Z","metaMigratedFrom":"YAML","title":"Array 1D 2D","breaks":true,"contributors":"[{\"id\":\"e0c7dab8-be31-4e15-a8e7-22968131e3e1\",\"add\":2866,\"del\":850}]"}
    79 views