# 陣列與字串 ## 9/22 社課 --- 先簡單複習上禮拜的內容 ---- ### while ```cpp= while(執行條件){ 只要滿足執行條件就會執行 執行完後會返回判斷是否符合執行條件 } ``` 直到小括號中為 $false$ 前會一直執行 ---- ### do-while ```cpp= do{ 先執行一次 執行完後判斷是否符合執行條件 若符合則返回再執行一次 } while(執行條件); ``` ---- ### for ```cpp= for(初始化; 執行條件; 執行完後的變更){ 只要滿足執行條件就會執行 執行完後會返回判斷是否符合執行條件 } ``` 第一個區塊:在迴圈開始前做的一些事 第二個區塊:執行迴圈的條件 第三個區塊:每執行完一次後做的事 ---- ### break 可以跳出迴圈 ### continue 可以跳過這次迴圈 ---- break ```cpp= int a=0; while(a<10){ a++; if(a==6) break; cout << a << ' '; } ``` ```cpp 1 2 3 4 5 ``` continue ```cpp= int a=0; while(a<10){ a++; if(a==6) continue; cout << a << ' '; } ``` ```cpp 1 2 3 4 5 7 8 9 10 ``` --- 輸入一個數字 $n$ 並輸入一串長度為 $n$ 的數列 請將這個數列倒過來輸出 ---- $n=10^5$ ? 開 $10^5$ 個變數? ---- ## 陣列 一排格子 每個格子都可以存一個相同型態東西 ---- ### 陣列宣告 ```cpp= int a[100]; char b[48763]; string c[114514]; ``` ---- ### 陣列初始化 ```cpp= int a[5]={1, 2, 3, 4, 5}; int b[100]={}; ``` ---- ### 取值 ```cpp= int a[3]={1, 2, 3}; cout << a[1]; ``` ```cpp 2 ``` 程式當中陣列都是 0-base 的 也就是說陣列中的第一個位置是"第 0 項" ---- ### 賦值 ```cpp= int a[3]={1, 2, 3}; a[0]=7; // {7, 2, 3} a[1]=1; // {7, 1, 3} ``` ---- ### 遍歷 ```cpp= int arr[N]; for(int i=0; i<N; i++){ cout << arr[i] << ' '; } ``` --- ## 二維陣列 ---- 一維陣列:一排變數 二維陣列:一排一維陣列 $n$ 維陣列:一排 $(n-1)$ 維陣列 ---- ```cpp= int a[5][5]; for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ a[i][j]=i*j; } } ``` | $i$ \ $j$ |0|1|2|3|4| |:-:|:-:|:-:|:-:|:-:|:-:| |0|0|0|0|0|0| |1|0|1|2|3|4| |2|0|2|4|6|8| |3|0|3|6|9|12| |4|0|4|8|12|16| ---- $a[n][m]=n$ 個長度為 $m$ 的一維陣列 $=n\times m$ 的二維陣列 ---- ### 陣列初始化 ```cpp= int a[2][5]={{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}}; int b[10][10]={}; ``` --- ## 字串 ---- 字串? 字元陣列? ---- C++ 字串 要引入\<string> ```cpp= string s="Hello"; ``` C 字串 ```cpp= char s[6]="Hello"; ``` ---- 和陣列一樣可以取值,為 0-base ```cpp= string s="Hello"; cout << s[1]; ``` ```cpp e ``` ---- 可使用 .size() 或 .length() 取得字串長度 ```cpp= string s="1234"; cout << s.size(); ``` ```cpp 4 ``` ---- ### 字串運算 可以用自己和另一個字串相加 ```cpp= string s="A"; s+="B"; cout << s << '\n'; ``` ```cpp AB ``` ---- ### 字串和整數的轉換 to_string()可以將整數轉為字串 ```cpp= int a=123; string s=to_string(a); for(int i=s.length()-1; i>=0; i--) cout << s[i]; ``` ```cpp 321 ``` stoi()可以將字串轉為整數 ```cpp= string s="123"; int a=stoi(s); cout << a+1; ``` ```cpp 124 ``` ---- 使用上述兩個 to_string() 和 stoi() 需要讓編譯器版本(標準)為 C++11 以上 ---- 點進 Settings $\to$ Compiler ![](https://hackmd.io/_uploads/HyzIQqd1a.png) ---- 勾選任意高於 C++11 的版本 ![](https://hackmd.io/_uploads/Bk2EV5d1T.png =65%x)
{"description":"slides","contributors":"[{\"id\":\"1a0296c8-ce58-4742-acda-22c02ae81a74\",\"add\":2713,\"del\":154}]","title":"09/22 C++社課"}
    173 views