# 陣列(Array) ---- # 啥是陣列? ---- ## 一個可以放很多變數的資料型別 ---- ![](https://i.imgur.com/N0Ve3iI.png) ### 一個陣列只能裝同種資料型別的變數 ---- # 宣告 ---- # 型別 名稱[大小]; ---- ## code ```cpp= #include<iostream> int main(){ int arr[5]; double arr2[10]; } ``` ---- # 給值 ---- ```cpp= #include<iostream> int main(){ int arr[5]; arr[0] = 2; arr[1] = 5; arr[2] = 1; arr[3] = 3; arr[4] = 4; } ``` ---- ### 此時的陣列狀態 ![](https://i.imgur.com/PkLrw00.png) ---- # 搭配迴圈 ---- ## code ```cpp= #include <iostream> using namespace std; int main(){ int arr[100]; for(int i = 0; i < 100; i++){ int x; cin >> x; arr[i] = x; } } ``` ---- ## 也可以直接cin ```cpp= #include <iostream> using namespace std; int main(){ int arr[100]; for(int i = 0; i < 100; i++){ cin >> arr[i]; } } ``` ---- # 取值 ---- ## 很直覺 ```cpp= #include <iostream> using namespace std; int main(){ int arr[100]; for(int i = 0; i < 100; i++){ cin >> arr[i]; } cout << arr[0] << " " << arr[1] << '\n'; arr[5] = arr[1]+arr[2]; } ``` ---- # underflow和overflow ---- ## 不見得會報錯 ## 但值一定會出錯 ---- ```cpp= #include <iostream> using namespace std; int main(){ int arr[5]; for(int i = 0; i<5; i++){ cin >> arr[i]; } cout << arr[5]; //Error } ``` ## overflow ---- ```cpp= #include <iostream> using namespace std; int main(){ int arr[5]; for(int i = 0; i<5; i++){ cin >> arr[i]; } cout << arr[-1]; //Error, im not python } ``` ## underflow ---- # 練習題 # CSDC #291 ---- ## code ```cpp= #include<iostream> using namespace std; int main(){ int n; cin >> n; int arr[n]; //宣告 for(int i = 0; i < n; i++){ cin >> arr[i]; } //存名稱 int q, p; cin >> q >> p; p = p-1; //第p個人index是p-1 int start = p-q, end = p+q; if(start<0){ start = 0; } if(end>n-1){ end = n-1; } //避免踩禁區 for(int i = start; i <= end; i++){ cout << arr[i] << " "; } //輸出 } ```
{"metaMigratedAt":"2023-06-17T14:16:22.754Z","metaMigratedFrom":"YAML","title":"陣列(Array)","breaks":true,"contributors":"[{\"id\":\"4fa49699-4204-4853-a27b-42a118fdac82\",\"add\":7795,\"del\":5875},{\"id\":null,\"add\":1157,\"del\":996}]"}
    128 views