# C++ --- # 基礎架構 ---- ```cpp= #include<iostream> using namespace std; int main(){ return 0; } ``` --- # 萬用標頭檔 ```cpp= #include<bits/stdc++.h> ``` ![image alt](https://memeprod.ap-south-1.linodeobjects.com/user-template-thumbnail/bddf88bb894d35af7392f94fc860d543.jpg) --- # 變數 ---- ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALoAAADPCAMAAAB1PzuxAAAAflBMVEX///9jQxZWPRc0LiYrJh5oTByHWh1MNxmNaB13VBsjHhkaFxONYyQ4MSepdyylbR+kcic4MymFXiR9XSMfHBegaiNdQht6WCaUay5fRiR0Tx4nIx1AMhmOZSp2UyOCYS9vSRVISEmgoKGIiIlgYGE4KxVSUlN4eHlwcHHIyMrRj81aAAAPY0lEQVR4nNXcaUMiORAG4EFpGK5xQBRE1hlX59j//we3k04n9daRBEHB+jLL0fjYJlWVdLNfvrxjDIfv+envGEMf51a8IYYxzi05MIYQ59YcEIs2Evy6jXOLKmMRIsE/CX5BIsE/Ab4VEvqPH9fXnwQfhBHu4lPgiTDCPwV+saDAf36QmF80vhsiEe4iwl1cLD5NzAjv8fM+LhK/gPiHxpzGxeFJSmnjto0Iv2kjwt0TMI8XFwBP+NsQER7x/W8D2fOceDoAEtzjb0jM6RiCmnUu/ALyIYXffv36ldpvYALg3DgPnORDDv96uXjykw34heJxvG4p/PtXCBN/u4Df/sPgNEtsXUS4iwq8fzMtYx+Cx9y87SPCK/DxT0Qmy/vjsSJuaXynkcHDxPiwCotnyZUaHY74b22cGY9jsy/wOjzhv4U4Ix4zAm2rdHiH/0biTPhryIfbLZHf3d0lbCsE/LdvB+NPm+dJSolZJcHvIj4Ij8GftkjhGUkpJcE7PBG+FX/aCotrzluaDr/dQYDQtOdS5UnbA5pTQq8S4S4q8Ayez/Mnw9OcQpqsCK/AK/APwEOPBQuJWwBl8Ab8nfF0vneL5fjZtNJU4xHunnknPM0paZUf4QfjJfyd8FDcYHviVhMU8Tr8HfALyIewuOE9ISAsPMJh5sKYbw9K8respEhKUeCioYWzp+E5nKQdmLDhoAg/eBlI3mnANTycOcBr8IAnz8NxZA/qADy+cUvhN1gewU7H61dKbx/qcv7rw1F35hrWxDO4iwh3geURRkyEUwZ56q34ugmrwHt8PKVYHslQ7/DAIH+It+Lrss2jDncB+UtmbD2RwEG1eJwpdqp8pHAX8RW3Lb6lTRZMQgMODpGxa/Bymke4EyW4CwqP+P5ixJY2WfCxBjw64KBavJ6jIjziI5bCPZ5eAtpSHHykAfcOOKgWD+9DPBUtAPtlSR60qTy9L9sg4hgHx7ca/M0NZNvv5E3to/Rz2pUYXAok2PWX5XKZ4NcRX+xuE1ycxCI+IQU+PIrwecQHXg9fe7rHk7Ylwot4awRk8XiGAU8eRXiHJ7wO3tOXuBOCu86UgckX87I55OlwuKEZ/4bNE/oArqGhbrjO0A28rBw6HhINjOXuqAinkxw+oSumOnxYoCv4KCzg4wMK+46544ZWNzgowQNewMt0+2JFFm+Ooe9wECZYOAj61YWE19DZJgCcTXr+brj4GDxp10PPy+F1dLb1AmOYjtqT4ckiiTTrCA/0WYnONrwgc9BccRI8HaC4yqBwT5/NKujs4gWcJqNWvg1PrknxDUi8gW/o4JE+z9o1fECdDE+uSfFtXwYfNjOg8yRUwBPUSfDkw/lmu4A3gi7wbBTBpwPKxMNSAss+9BTkmtR2i1vLClyjM7yYAvA3LeNJkezfEeE0v5JrUg5O86EK1+mTCdIVvFGkBD6dYHg1wns8uSbVw3s8hw8GSF8gneCXWvKxKyzgYWBD+4XLW7xNCfKhhAv6YoH0iF8u83iosLV4gLtPwO4wC1foLR7oAb9c5vBQYWvxAh7x8cMzcJW+GCHd45dLGw8Vthavwj0ePtyE9/QB0kcjpLd4oC+xhcM8X4tPcPJn227xkx9NeEdv/+F0h59AIH1xOjyZLAL+iPRmgHT/j6SPRpOJicf+8xg8SVEKHOhNg/QQGj2DXyj2ygp7R+lkK5HfHDB8RHrTHEQ38Sq9psL6ipngZB+UwYdID9kkQ+9Qo5GJX61y9FKFjX1Kgge8gAO9aWrojjUamfjVyuNNOlbYfwAP/SGsORU4oTdNLX25HPFAeosHulVhvSrC3Yk+AB7pTXMIvWlMfEdfNUjX8FEW4RFfAw/0pinQr64Y3cT39KZBOseDDhYWlXBPb0ryqyuFbuATvcUD3cZv6e1g2+22Ct7Sq+AqXcVTerNDuo4PCTPCtxGfhQ8HdXCDruCRvtshXeJJmYrwDl+ADwZ18EjvHPQYRv/5E+kOj50ZkoiWXJPia061yaqDE7qT4F+K0T2e0He75bICT65J8TUnb7ICrw4O9OtrPj8YvcUDfT4v4sk1Kb7m5E1WBNbBGX04NPEd/ece6SU8XL2CeGRNFiHWwddrRjfxPX2/R3otXoVHOiDr4Aqd4zcbRm/xQK/BG/BAv0KmhI/HEq7SEb/ZeDyl7/dIL+FNuKe3FGFlcKSv1xk6xW98MHqHp7sntfhHjKHHlOCUvl4zevezaKZC+mbA6A4POz+rGjyDPwZOCZ7o67VCdz8L6wPSBwNG3++RviriDbhNH4+Rvl4b9OWSV2WkOzzQf/5EusDDl6qHFtyij8dIX68z9IcHiaf0wX+MTvChyUF6+kb4cDi04Dp9PEY6h4/HjC7xhP6fC0aP+EAfjZDe4f1/WHCNfn+PdAlX6AY+wAEfss4I6QSPn2PBpfz+HukaXKWr+P9oMLrf7iP0iFfpVXBK1+EGXcH/+2+E/9sGo7d4oI/mFr0pwcdjpFvwSF8wusA7b4QHPKX3i5Ge7ouUoLcZqwRHug1PdH9p4OHBxHfeCPd4pHf4RG/xjO7rRAlO6Tk4pbf4hwcTH7gvhP66Z3SHp/T5GugN0uUYHyM9D0f6YsLtD4L+0uNfX1/DmBHr2ERfry26NjmBXoJz+sTEJ7rHv752dIfP0gme0PWsQuhluKRbeEp/eX1N9P2+QI/4SDfSYaLXwDW6js/Qla2PHN2CR3odXKfvdhKfpSt4i27DA70Iv7pC+hLpEl+g63hBz8E9ncP3Ei7ofuuc0Dm+SJ9MJJ7RlTyOdAHf7yVcobd4oCM+0P8S+u8p0iV+CnQJR/pUwpHeVwSFvpwjneJ7+t+/gf779+/pdIp0jm/fYNL7bBLh06mEU3qqwuFQpHfXTHc7iU/0Fu/hnu7wlD55YnQHUui9h8CBHhtrCe/o7TGc7vC7ncRT+t/fvxN9OkX60xOjT6eCnk4lgRM6Wc5IuKP7oyR9Pt/tJD5D79Jeoie8TqfDt6ucSIdFpIRfXYW/lEbX8C85usNTeo/X6JgyuspJ6fs9o3N40yD9GukSH/ouiz4cIr3DSzpP0915TvQ9DwkXdL/RDxsrgu7wNj3gn54IntN1eKJXwRV6i5/PTXxXi14o/fkX0j3+iQbSLXhPH5fg/c67Qr+ezE38S19He/rz8/OvX7+Q3uKr6TSHe/h4XIAPkD5G+sTEv6QWwNGfnzu6ww8h6uhYNz0c6Qoc6OOxoAv8SNBfX5+fE/3Xr+HQwlt03quEpwtwQvdvl3SGbxNFgS63PvJ0A57oBjzSw9s1OuB9gt7t/uToFl6jm/CebsIN+hLpBB8K458/f3J0HS/pGXhHz8Atut8NpzfATATd4W26huf0LNzRs3Cb3uInE4mn9D9/cnSJR3oBLku+WJrY9OVqIvEZ+mDA6Bw/myV6+PLWEXBGx9sbViuJz9I9Xtn6iHSPH3ZbpQfB1fuOCP3qStAFfp6nt3hl64PQW3zYnj4EzlbgV4zu3yTpDB/GjE0fKFsfQJ89Ir0GDvQ4ehrY+9PogA9zdZKha/s2Jr0OTuhk4IcXsnSCDzmy/a8M3cBLei080mHOhqeR7rfXKT3iA90/ztBVPKfXwwOdpZsGfp1Id3igr+ZI9/gMXcEj/RC4p5OXcNIK+mLB6H6YEHqLn88j3T2HdIGfThNdLDU4nNPhpSI93p3W01s80P2Tnt4/h3SGd/Woo9PO0YAjnb1UQad46H3h6Wf6HNIB3/UBs0dseg04pfNXBlX0hDfo6YX+sdz6ALpYaggYo+fhOXqPN+mrCX/OwKt0BQZ0frMUh+fpHT5D72YvfYrZG4uunlFCHwwy81Oly1vvGT3eGhvoDg+/DuJbhEbncEzUPJnX0uWt94xO8KFarVYm3v/pOV3AG6Sj7BC6vPWe0SM2dgkmvhu2SJdwoHPZYfS4sJB4wJLuzMAX6dCpILGOruz0GnjAQleM9LDpVKCzJkutOFm6sUmt4gHLViNI9/gsnTdZjZAV6Jn9dQU/yQbSW3yGzpushq+IivTspQGJz9MTPhy/segNhrj3mM3lN9AlvmTHErzZbDQ6gzd9AbXg+m2EJfqh+BGUYH+rG6cL+BXS6+A19MPw/g1I36yBLuFAL8LjMxp9s3k7HnNpoHe7/hod5mwdHOmsJLkf91a8QXd4SWd5sg5O6e6RoHO8vPLP0as8nd0P00A/Lp7IwBO9e6TQNw3SS/iuvFbTAanRLXj/SpDr9KZBeh7ftTVIbyw6O7+SbsO718JoSfQpoyd88GXGfChGSPe3YAs6HxniD5GDu1fDDAX6dMroPb6n2xM2NgFIb/GMbsATPQ+PNwcIeotHeodPdAtPmi+kN0Dn9yGLhFOC5+jTKaM7PKXreNb06nR+C7VI8mU4o8+Q3uHhY5GuTVi22NDo8hsOjF4DB/psJugODx+72SBd4vlCacXp2rdK4GeU4P16PNJnM5Xe31YU6R6fTZUSn6F3uoPgjD6bmXTAd8Mf6WX8k0XvfQfBgT7D+MLtU0bv2wPRsxj4p6cnjZ6ElfD7MaPPhPyLid9sKF5puFS8v87O6dRYB79ndBVu4jcbisfuxcZ39wgAvfjNTF6y7u8Z3YQb+A3EZFKHF/Qh/1KpgLM2IUzJRM/CVTzSY54v4Bndl1OOFeNHwhO9CNfwjF6HB3roYQpwQr+/Z/QqeAEPFTaDP4TOG8j7e0avhmfxUGEz+Hq6w1I6vzH8MHgGDxU2g9/t6ujdeU50d5KBfjDcxEOFzeDdlmmZ3o+Rnt4N7GPhBh7LlI3vtqrz9DS8u0/F7yUdA1fxvMJa+I4e7jBW6XRmejj7StVxcA0vKiyzr5Du8Qq975B6Os3hp4Eb+EyFDUvURG/xgp76Uq1yngqu4jMVNixRKZ3fet80SOeV83RwDW9X2NDD2PSmQfrbK+cJ8FBhA32z0ekNi+Mq59H4DvH0hHSH53QOP75yHonv6R5P6JsN0iX8FJXzKHyit/hq+ukq5xF4Sn/a1NHHY0Z/d7iKR/pmU6ane3o+Eq7hGd3hc3RyN9IJK+cReErvQ6OPx4z+oXAVj/SuWZB0/r/x+Hi4hmd0h+d0Uu3fqXIeg4dcj3RoVM4K1/H19LPCNXwt/exwiV+va+gXAed4t6Ar0S8GjvhuIZ2jXxSc4sMmwNSiXxzcBdJ9hRX0i4S7QHqLZ/SLhbtA+nRG6RcNd4H07utgnwLuAukO/0ngLpAu49y+bOTo57YVw6Kf21UVGv3cpurg9HN7DopPC3fxaeEu3hn+Pz0lf1yCsVmxAAAAAElFTkSuQmCC) ---- ## 宣告 資料型態 變數名稱; ```cpp= #include<iostream> using namespace std; int main(){ int a; a = 17; char b; b = 'h'; float c; c = 5.23; } ``` ---- ## 資料型態 ![](https://i.imgur.com/hEDEBdA.png) --- # string string為字串 但是用前要先include ```cpp= #include<iostream> #include<string> using namespace std; int main(){ string a; a="gaybar"; } ``` --- # 語法 ---- ```cpp= a = 6 // 設 a 為 6 a == 6 //a 等於 6 a != 6 //a 不等於 6 a + 6 // a + 6 這個數字 a = a + 6 // 將a這個數字 + 6 a += 6 //跟上面一樣 a++ //a = a + 1 ++a // a + 1 = a a % 3 // a / 3 的餘數 a && b // a and b a || b // a or b ``` --- # 輸入輸出 ---- ## 輸入 通常是將一個變數賦值 ```cpp= int a; cin>>a; ``` ---- ## 輸出 將一些東西顯示在螢幕上面 ```cpp= cout<<7122<<endl; cout<<"hello"<<endl; cout<<a<<endl; ``` --- # 例題 ---- 我們的美工由於是個孤兒,他很想要有人能跟他打招呼。請你寫一個程式,不管怎麼寫,他都會跟你say Hello! (請注意!是「不管怎麼寫喔!」) ---- 範例: ![](https://i.imgur.com/WPpHrmh.png) ---- # 答案 ---- ```cpp= #include <iostream> #include <string> using namespace std; int main(){ string a; cin>>a; cout<<"Hello!"<<endl; } ``` --- # 選擇結構 ---- ### 選擇結構會根據條件式判斷的結果 ### 選擇不同的應對方式 有以下三種語法 1. if 2. if-else 3. if-else if-else --- # IF ---- ### if是如果條件式成立,才執行敘述,否則不執行。 ![](https://i.imgur.com/bNo2W7j.png) ---- ## 範例code ```cpp= if(a == 3){ cout<<"A等於3耶"; } if(a == 3) cout<<"A等於3耶"; ``` --- # if-else ---- ### if-else是如果條件式成立,執行敘述1;否則執行敘述2。 ![](https://i.imgur.com/rBBLq2F.png) ---- ```cpp= if(a==3) cout<<"A等於3耶"; else cout<<"A不等於3耶"; ``` --- # if-else if-else ---- ### if-else if是依序判斷多個條件式,那個條件式成立,就執行此條件式內的敘述,若都不成立,就執行 else ![](https://i.imgur.com/PDFCmvj.png) ---- ```cpp= if(a == 1) cout<<"A等於1耶"; else if(a == 2) cout<<"A等於2耶"; else if(a == 3) cout<<"A等於3耶"; else cout<<"A不等於1或2或3耶" ``` ---- # 以上就是對選擇結構的大概介紹 --- # 進階用法 --- ## A?B:C ---- ## 語法 A?B:C A is true -> B A is false -> C ```cpp= cout<<((副社==甲) ? "臭甲" : "嗨!朋友")<<endl; ``` --- # 例題 ---- 這裡有三個評級: 1.大於180mm->得A 2.大於170mm且不超過180mm->得B 3.大於160mm且不超過170mm->得C ---- 這裡有一項資料,而這是公關的身高:161.4 mm ,請幫我寫出一個程式,先輸入他的身高後, 再判斷他在哪個等級。 ---- 範例 ![](https://i.imgur.com/UjobFez.png) ![](https://i.imgur.com/YNiJjTx.png) ---- # 答案 ---- ```cpp= #include <iostream> using namespace std; int main(){ float a; cin>>a; if(a > 180) cout<<"A"; else if(a>170 && a<=180) cout<<"B"; else if(a>160 && a<=170) cout<<"C"; } ``` (如果你是用三個if,也算你對,但這樣程式碼會太多) ---- # 另外一個答案 ---- ```cpp= #include <iostream> using namespace std; int main(){ float a; cin>>a; cout<<(a > 180?"A":"False")<<endl; cout<<(a>170 && a<=180?"B":"False")<<endl; cout<<(a>160 && a<=170?"C":"False")<<endl; } ``` --- # 加減乘除 ## 請輸入兩個變數及運算子做出加減乘除 input ``` 12 + 3 ``` output ``` 15 ``` input ``` 15 - 5 ``` output ``` 10 ``` ---- # code ```coo= #include <iostream> using namespace std; int count(int a, int b, char c); int main(){ int a, b; char c; cin >> a >> c >> b; cout << count(a, b, c) << "\n"; system("pause"); return 0; } count (int a, int b, char c){ if(c == 43) return a+b; else if(c == 45) return a-b; else if(c == 42) return a*b; else return a/b; } ``` --- 迴圈(For and While) === ## While迴圈 ---- ### 執行步驟 1. 當條件符合(true),就執行大括號內的程式 2. 回到小括號內再次判斷: 符合(true)-->執行下方指令 不符合(false)-->結束迴圈跳出 ### 格式 ```cpp while ( 執行條件 ){ 要執行的指令; } ``` ---- ## 接下來複習一下IF結構 ### If格式 ```cpp if ( 執行條件 ){ 要執行的指令; } ``` ---- ## If v.s. While | |**If迴圈** |**While迴圈** | | ----------- | --------- | ----------------- | | **條件符合後** | 執行一次 | 一直執行到條件不符合 | ![](https://i.imgur.com/tMnCcdL.png) ---- ### 範例:印出1~10的數字 ```cpp= #include<iostream> using namespace std; int main(){ int i = 1; while (i <= 10){ cout << i << endl; i++; } return 0; } ``` ---- ### 範例:印出3X9的「\*」(如下) ```*** *** *** *** *** *** *** *** *** *** ``` ---- ```cpp= #include <iostream> using namespace std; int main() { int i = 1; while (i <= 9) { int j = 1; while (j <= 3) { cout << "*"; j++; } cout << endl; i++; } return 0; } ``` ---- ![](https://i.imgur.com/gGc5D1T.png) #### 程式: ```cpp while ( 等待時間 >= 20分鐘 ) { 跟罹患阿茲海默症的阿嬤要錢; } ``` --- ## For迴圈 ---- ### 執行步驟 1. 設定初始值,接著進行判斷 2. 當條件符合(true),就執行大括號內的程式 3. 回到小括號執行第二個分號後的程式(運算式) 4. 再次進行判斷: 符合(true)-->回到第二步 不符合(false)-->結束迴圈並跳出 ### 格式 ```cpp for( 初始化 ; 執行條件 ; 運算式 ){ 要執行的指令; } ``` ---- ### 範例:輸出3次「HI」後輸出「BYE」 ```cpp= #include<iostream> using namespace std; int main (){ for( int i = 0; i < 3; i++ ){ cout << "HI" << endl; } cout<<"BYE"<<endl; return 0; ] ``` #### ⊳小提醒:宣告的 i 作用範圍只有迴圈內喔! ---- ### 範例:印出1~10 ```cpp= #include<iostream> using namespace std; int main (){ for(int i = 0; i < 10; i++){ cout << i + 1 << endl; } return 0; } ``` ---- ### 範例:印出3X9的「\*」 ---- ```cpp= #include<iostream> using namespace std; int main (){ for(int i = 0 ; i < 9 ; i ++){ for(int j = 0 ; j < 3 ; j++){ cout<<'*'; } cout<<endl; } return 0; } ``` --- 陣列-array === ---- ![](https://i.imgur.com/ek70eu0.png) ---- ![](https://i.imgur.com/4NKCctk.png) --- ## 一維陣列 ---- ## 格式 ```cpp= 資料型態 陣列名稱[陣列大小]; int arr[5]; //亂碼 int arr[5] = {}; //[0,0,0,0,0] int arr[5] = {0, 1, 2, 3, 4}; //[0,1,2,3,4] int arr[5] = {0, 1, 2} //[0,1,2,0,0] int arr[5] = {1} //[1,0,0,0,0] float arr[5] //跟int arr[5]一樣但變成float型態 ``` **陣列的區間是arr[0] ~ arr[n-1]** <font color="red">**不包括arr[n]**</font> ---- ## 輸入輸出 ```cpp= for(int i = 0; i < 5 ; i++) cin >> arr[i]; for(int i = 0; i < 5 ; i++) cout << arr[i] << ' '; ``` ---- ## 練習時間! 給定$n$接下來會有$n$個數字 請倒過來輸出 ``` input: 5 1 2 3 4 5 output: 5 4 3 2 1 ``` ---- ## CODE ```cpp= #include<bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; int arr[n]; for(int i=0; i<n; i++) cin >> arr[i]; for(int i=n-1; i>=0; i--) cout << arr[i] << ' '; return 0; } ``` ---- --- ## 區間合 給定 $n$ 代表接下來會有一個 n 個數字的數列 給定 $l, r$ 問數列第 $l$ 項到第 $r$ 項的總和 input: 5 3 1 2 5 4 0 3 output: 11 ---- ## CODE ```cpp= int n; cin >> n; int arr[n]; for(int i = 0; i < n; i++) cin >> arr[i]; int l, r, ans = 0; cin >> l >> r; for (int i = l; i <= r; i++) ans += arr[i]; cout << ans << endl; ``` --- ## 二維陣列 ---- 廣義的陣列 | arr[i][j] | 0 | 1 | 2 | | -- | -- | -- | --| | 0 | arr[0][0] | arr[0][1]|arr[0][2]| | 1 | arr[1][0] | arr[1][1]|arr[1][2]| | 2 | arr[2][0] | arr[2][1]|arr[2][2]| | 3 | arr[3][0] | arr[3][1]|arr[3][2]| ---- 二維陣列輸入輸出 ```cpp= int arr[5][5]; for(int i = 0; i < 5; i++){ for(int j = 0; j < 5; j++){ cin>>arr[i][j]; } } for(int i = 0; i < 5; i++){ for(int j = 0; j < 5; j++){ cout << arr[i][j] << ' '; } cout << endl; } ``` ---- ## 練習時間 輸出三九乘法表(要用陣列先存起來) | 3\9 | 1 | 2 | 3 |4|5|...9| | -- | -- | -- | --|--|--|--| | 1 | 1 | 2|3|4|5|...9| | 2 | 2 | 4|6|8|10|...18| | 3 | 3 | 6|9|12|15|...27| ---- ```cpp= int arr[3][9]; for(int i = 1; i <= 3; i++){ for(int j = 1; j <= 9;j++){ arr[i-1][j-1] = i*j; } } for(int i = 0; i < 3; i++){ for(int j = 0; j < 9; j++){ cout << arr[i][j] << ' '; } cout<<endl; } ``` --- ## 注意事項 ---- - 陣列大小是 0 ~ n-1 - 不要呼叫 arr[-1] 或 arr[n] - 陣列大小最多通常是$10^8$這麼大 - 不要被二維陣列的行列固定想法 (行列可交換) - 大小不可之後改變 - 初始值未固定 ---
{"metaMigratedAt":"2023-06-17T23:02:47.303Z","metaMigratedFrom":"YAML","title":"C++","breaks":true,"contributors":"[{\"id\":\"7fcc0ba7-7581-49cc-8661-a10bbd3e484f\",\"add\":148,\"del\":27},{\"id\":\"9d72ebb6-005c-4070-b9d6-ab4931f5153c\",\"add\":580,\"del\":93},{\"id\":\"fb5d6386-b221-4316-bb5f-ebdb0890573c\",\"add\":11787,\"del\":79},{\"id\":\"91eb9fab-5ee7-4263-9029-085c01058641\",\"add\":1111,\"del\":108}]"}
    542 views
   Owned this note