# 程式期末考大抄 Part 1 --- 本站網址:https://reurl.cc/6DpOmr :point_right:[筆試專區](/ukFE3unlRdKS-V5mDLdpmQ) :point_right:[課堂作業解答](https://hackmd.io/@YuXin/資訊課) ~~記得寄本站網址到自己學校email嘿~~~ --- ## 程式起手式 1. 程式碼 ``` cpp= #include<iostream> using namespace std; int main(){ return 0; } ``` 2. 檔名 如果你的程式沒有變色,請記得更改副檔名 - Code::Block File :arrow_right: New :arrow_right: Empty file :arrow_right: File :arrow_right: Save file as... :arrow_right: 檔名.cpp - Moddle 點開題目 :arrow_right: 看描述(有趣der題目) :arrow_right: ==檔名.cpp== :arrow_right: 把程式貼上來 :arrow_right: 按儲存 :arrow_right: 送出(點打勾那邊) ## 型態&符號 ### 常見符號 | 符號 | = | == | != | && | \|\| | % | |:----:|:----:|:----:|:------:|:-----------:|:------------:|:------:| | 舉例 | a=5 | a==5 | a!=1 | a>0 && a<10 | a>5 \|\|a<-3 | a%10 | | 意思 | 賦值 | 判斷 | 不等於 | 且(and) | 或(or) | 取餘數 | ### 常見型態 | 型態 | int | float | double | string | char | bool | |:----:|:----:|:------:|:------------:|:-------:|:----:| ------ | | 舉例 | 5 | 5.5 | 5.5555555555 | "Hello" | 'H' | true | | 意思 | 整數 | 浮點數 | 長小數 | 字串 | 字元 | 布林值 | ### bool值 (看不懂可略) - 解釋:布林值是一種型態,只能表示true(1)或false(0) - 常見應用 1. 表示判斷結果 - 範例 a==5:若a的值等於5則回傳true(1),a的值不等於5則回傳false(0) a!=5:若a的值不等於5則回傳true(1),a的值等於5則回傳false(0) 2. 非0即為true(1) ++數字的布林型態:非0的數字轉為bool型態皆為1++ - 範例 >2 -> true 10 -> true -4 -> true 0 -> false ### % - 意義:取餘數 - 範例 > 26%10=6 - 解釋:26除以10等於2餘6,故取餘數的結果為6 - 常見應用 1. 任何數%10可得個位數 - 範例 >123%10=3 - 解釋:123的個位數為3 2. 任何數%2為0,即為偶數 - 範例 >48%2==0 - 解釋:48為偶數 5. 若a%b為0,則a為b的倍數,b為a的因數 ### / - 解釋:除(只取整數部分) - 範例 >5/2=2 >40/3=13 >30/7=4 ## 判斷式(if) 1. 語法 ``` cpp= if(條件1){ //條件1成立時做的事情 } else if(條件2){ //條件2成立時做的事情 } else{ //條件皆不成立時做的事情 } ``` - 流程圖 ``` flow st=>start: 開始 e=>end: 結束 cond=>condition: if(條件一) op2=>operation: {事件一...} cond1=>condition: else if(條件二) op3=>operation: {事件二...} op4=>operation: else {事件三...} st->cond cond(yes)->op2->e cond(no)->cond1 cond1(yes)->op3->e cond1(no)->op4->e ``` :::info ++注意++ 1. else裡面不可以有條件 ~~else(條件)~~ 3. else if前一定要有if else不可單獨存在 :O: if->else if->else :O:if->else :X:else if -> else :X:else ::: ## 迴圈 ### for迴圈 1. 語法 概念 ```cpp= for(初始設定;繼續條件;遞增或遞減動作){ } ``` 範例 ```cpp= for(int i=0; i<2; i=i+1){ //i<2條件成立時做的事情 } ``` 說明 ++初始設定++變數i的值為0 ==(i=0)== 接著判斷 ++繼續條件++ ++i<2++成立,因此執行迴圈中的動作,並執行++遞增動作++(i=1+1),此時==i=1==(0+1=1) 重複判斷 ++繼續條件++ ++i<2++成立,因此執行迴圈中的動作,並執行++遞增動作++(i=i+1),此時==i=2==(1+1=2) 重複判斷++繼續條件++ ++i<2++不成立(2<2不成立),故離開迴圈,迴圈總共執行二次 ### while迴圈 1. 語法 概念 ```cpp= while(條件成立 或 bool值為true){ //條件成立時做的事情 } ``` while迴圈的進入條件是小括號內回傳布林值true,因此若判斷條件成立即可進入;另一種應用則是在小括號中丟入變數判斷其布林型態是否為true以進入迴圈。 :::info while迴圈最需要注意的是如何離開迴圈,應避免寫成無窮迴圈(永遠無法離開) ::: 範例 ```cpp= i=2 while(i>0){ //i>0條件成立時要做的事情 i=i-1; } ``` 解釋 一開始設立變數i並將值設為2(==i=2==) 接著進入while迴圈: 判斷(2>0)條件成立 -> 執行迴圈內重複動作 -> 改變i值,讓迴圈有離開的可能性或條件==i=1==(2-1=1) 重複判斷(1>0)條件成立->執行迴圈內重複動作->改變i值,讓迴圈有離開的可能性或條件==i=0==(1-1=0) 重複判斷(0>0)條件不成立->離開迴圈 迴圈總共執行了兩次 :exclamation:一定要確定迴圈有可能離開喔,不然電腦會當掉:exclamation: 2. 應用 從上面的範例來看while迴圈跟for迴圈是可以互相替代的。下面就介紹一些只能用while迴圈寫的例子 - 特意設計的無窮迴圈 - e.g.老師的作業5-2、5-3 - 大概的題目敘述:直到輸入0結束、不知道有幾筆輸入、猜數字 寫法一 ```cpp= int input; while(cin>>input){ if(input==0) break; else{ //該做的事情 } } ``` 寫法二 ```cpp= int input; while(1){ cin>>input; if(input==0) break; //該做的事情 } ``` 解釋 1. while(1)就是永遠成立的意思,也可以寫成while(true) 2. if裡面放跳出迴圈的條件(上述是值到輸入0的範例寫法) ## 其他小技巧 ### 判斷因倍數 - 因數判斷 判斷a是否為2的倍數 ```cpp= if(a%2==0){ //a是2的倍數 } else{ //a非2的倍數 } ``` 說明: 若a為2的倍數,則a/2的餘數必為0,故可由此判斷倍數關係 - 因數判斷 判斷a是否為100的因數 ```cpp= if(100%a==0){ //a是100的因數 } else{ //a不是100的因數 } ``` 說明 若a為100的因數,則100/a的餘數必為0,故可由此判斷因數關係 ### 拆解個位數 - 拆解26的個位數 ```cpp= a=26; ans=a%10; cout<<ans<<'\n'; ``` 輸出 > 6 - 若要將123456789拆解成1+2+3+4+5+6+7+8+9可以醬寫 ```cpp= int a=123456789; int ans=0; while(a>0){ ans+=(a%10); a=a/10; } cout<<ans<<'\n'; ``` 輸出 > 45 說明:我們在不知道有幾位數的情況下通常會從個位數開始拆。前面講過%10可以取出個位數,因此不斷取個位數再除10(捨去餘數)就可以得到答案 ### debug - 找不到bug可以試著把變數印出來看看他在幹嘛 - 檢查迴圈跟仔細看題目 - 就醬 ---- 本站網址:https://reurl.cc/6DpOmr ![](https://i.imgur.com/49x9Y3h.png) ----