## 陣列 ---- <style> .reveal .slides { text-align: left; } </style> 相同用途的數字...,可以擺在一起...。 ---- ### 一維陣列 ---- 變數只能儲存一個值,那當我們想儲存很多**相同型態且用途相近**的資料時怎麼辦呢? 這時候我們就可以利用**陣列**。 ---- 簡單的介紹一下,陣列是一種資料結構,可以儲存相同資料型態的變數。如此一來,我們就不需要宣告一堆變數名稱,只要有一個陣列就可以搞定。 ---- 宣告: ```c= int num[10]; //宣告一個整數型態的陣列,叫做num,大小是10。 ``` 由上述可知,在變數名稱後面我們會利用 **[]** ,來宣告陣列的大小 文言一點,便是: ``` 資料型態 陣列名稱[大小]; ``` ---- 那型態其實也跟宣告變數一樣。 陣列的值跟變數一樣都是可以先宣告的,例如: ```c= int num[5] = {1, 2, 3, 4, 5}; char c[5] = {'a', 'b', 'c', 'd', 'e'}; int special_array[3] = {0}; //這個是比較特別的宣告方法,能把裡面的元素都宣告為0 ``` ---- 那我們要先了解資料存入陣列後他們的位置,其實你可以把陣列想成分了很多格的箱子,而每隔都有編號,而編號就是 **name[n]** 裡面的 **n**,而且n是從0開始數的,所以一個大小只有10的陣列,n是0~9,例如: ---- ```cpp= #include<iostream> int main(){ int number[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} printf("%d %d %d", number[0], number[5], number[10]); } /*輸出: 1 6 亂數 */ ``` 我們來看number[n] : * n = 0 -> number[0] = 1 * n = 5 -> number[5] = 6 * n = 10 -> number[10] = 亂數 ---- ```cpp= #include<iostream> int main(){ int number[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} printf("%d %d %d", number[0], number[5], number[10]); } ``` 因為當n=10時已是第11個數,但我們的大小只有10,所以並不知道那裡放了些什麼數(指標會更深入講解),因此在宣告時要小心! ---- 那輸入也跟輸入變數一樣,利用**scanf**函數即可。 Example : 輸入10個數,並利用陣列儲存起來。 ```c= int number[10]; for(int i=0;i<10;i++){ //i:0~9 scanf("%d", &number[i]); //輸入編號0~9的值 } ``` ---- Example : 輸入五科成績,並輸出平均。 ```c= #include<stdio.h> int main(){ float grade[5], sum = 0.0, avg; //五科成績分別存在grade[0~4], sum是總和, avg是平均 for(int i=0;i<5;i++){ scanf("%f", &grade[i]);//輸入五科成績 sum = sum + grade[i]; } avg = sum / 5; printf("%f\n", avg); } /*輸出 30 20 30 10 50 28.000000 */ ``` ---- ### 二維陣列 ---- 如果要大量儲存同一種型態、而且彼此又有密切關係的「表格式」資料,例如數學中的矩陣,這時候就能將其宣告並設定為「二維陣列」。 可以把二維陣列想像成一個平面的**表格或棋盤**,用來儲存資料。 ---- 宣告範例: ``` 資料型態 陣列名稱[大小][大小] ``` 例如新增一個 2x3 大小的二維陣列: ```c= int number[2][3]; char ch[2][3]; ``` ---- 賦予值我們可以這樣寫: ```c= int num[2][3] = {{1, 2, 3}, {4, 5, 6}}; char ch[2][3] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}}; int special_array[2][3] = {0}; ``` ---- 如果還是不太理解,我們直接把他拆開來看: ```c= int num[2][3] = {{1, 2, 3}, {4, 5, 6}}; for(int i=0;i<3;i++){ printf("%d ", num[0][i]); printf("\n"); for(int j=0;j<3;j++){ printf("%d ", num[1][j]); } return 0 ; } /*輸出: 1 2 3 4 5 6 */ ``` 可以發現其實我們可以用**行跟列**的方式來理解。 ---- ![](https://i.imgur.com/srkb0r4.png) ---- ```cpp= #include<iostream> using namespace std; int main() { int nine[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%d ", nine[i][j]); } printf("\n"); } return 0; } ``` ----
{"metaMigratedAt":"2023-06-17T04:36:54.868Z","metaMigratedFrom":"YAML","title":"程式設計培訓 - (5)","breaks":true,"slideOptions":"{\"theme\":\"solarized\",\"transition\":\"fade\"}","contributors":"[{\"id\":\"1dfd0d36-665c-414c-a3ba-995f194a8cb9\",\"add\":2972,\"del\":0}]"}
    150 views
   Owned this note