--- slideOptions: theme: serif --- # 多維陣列與字元 ###### 03.17 鄭余玄 ###### 2018 資訊之芽 語法班 --- ## 複習陣列 ---- ### 一維陣列 ```c++ int fib[6] = {1, 1, 2, 3, 5, 8} ``` [0] | [1] | [2] | [3] | [4] | [5] :-:|:-:|:-:|:-:|:-:|:-: 1 | 1 | 2 | 3 | 5 | 8 ---- ### 一維陣列操作 $\text{fib}(i) = \text{fib}(i - 1) + \text{fib}(i - 2)$ $\text{fib}(0) = \text{fib}(1) = 1$ ```c++ // 初始化邊界條件 int fib[6]= {1, 1}; // i 從 2 開始 for (int i = 2; i < 6; ++i) fib[i] = fib[i - 1] + fib[i - 2]; ``` ---- ## 補充 - 儲存空間不同 ```c++ int a[1000000]; ``` --- ## 多維陣列 ---- ### 二維陣列 ![](https://i.imgur.com/jnFdNIu.png) ---- ### 宣告方式 - 資料型態 陣列名稱[][] ```c++ int table[9][9]; double matrix[100][50]; char names[10][100]; ``` ---- ## 存取 - 透過方括號中的索引值 (index) 存取 - 索引值也可以是變數 - 從 **0** 開始計數 ```c++ int s[9][9]; s[1][1] = s[0][1] + s[1][0]; int i = 1, j = 2; s[i][j] = 100; ``` ---- ## 初始化 ```c++ int a2[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ,10, 11}; int a2[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9 ,10, 11}}; int a3[3][4] = {}; ``` ---- ## 99 乘法表 1. 將答案存入 2 維陣列 2. 讀入兩個整數 3. 利用乘法表,查詢並且輸出答案 - 挑戰:n * n 乘法表(!? ---- ## 19 * 19 乘法表 ![](https://i.imgur.com/Ig9EEgc.png) ---- ## 補充:矩陣相乘 - 若 $A$ 為 $m\times n$ 矩陣,B 為 $n\times p$ 矩陣,則他們的**乘積** $AB$ 會是一個 $m\times p$ 矩陣 $(AB)_{ij}=\displaystyle\sum_{r=1}^n a_{ir}b_{rj}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots+a_{in}b_{nj}$ ---- ## 三維?多維? ![](https://i.imgur.com/WhrNKgX.png) --- ## 字元 ---- ## 什麼是字元? - 英文字母 - 數字 - 特殊符號 - #@sokjnbv$(qws*&) ---- ## 宣告 ```c++ // 宣告 char c; // 初始化 char d = 'D'; ``` ---- ## ASCII 編碼 ![](https://i.imgur.com/3zgr7Ke.png) ---- ## 字元運算(!? ```c++ char c; c = 'A'; cout << c << endl; c = 95; cout << c << endl; // ? c = c + 1; cout << c << endl; // ??? ``` ---- ## 特殊字元 - 不可見字元 - 換行 `'\n'` - TAB `'\t'` - 字串結尾 `'\0'` - 用反斜線 `\` 輸出特殊字元 - `\"` - `\'` - `\\`