# 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
感謝洋蔥大電神聆聽

{"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}]"}