# 迴圈 `for ` `while` `do_while` --- - while 迴圈定義 - 顧名思義就是當達成...條件就不斷執行大括號裡面的程式 - 小括號內與 if - else 一樣,判斷出來是 True / False ```cpp while(//條件){ //執行程式 } ``` ---- - 無限重複的 while 迴圈 - 所以只要讓小括號內永遠保持 True 就不會停下來了 - 例如:`while(1)` 或 `while(true)` - 請小心若是要解題這樣就會超時 (TLE) ```cpp while(1){ //statement } while(true){ //statement } ``` ---- - 簡單題目練習 - 使用 while 迴圈從 1 加到 10 - 設 int 變數 cnt 存當下的數字,ans 為答案 ```cpp int cnt=1,ans = 0; while(cnt<=10){ ans += cnt; } cout<<ans; ``` ---- - 輸入至 EOF - 有時在題目看見直到輸入 EOF 結束,那是什麼意思? - EOF = End Of File:直到檔案讀取完畢(輸入到沒有東西為止) - 若題目說有多筆測試輸入且沒有說有幾筆,那也是同樣意思 - 怎麼知道已經輸入完了? - 那就把 cin 也放進去小括號內啊 - 只要沒有繼續輸入那 cin 就會是 false,迴圈也就結束了 ```cpp int y; while(cin>>y){ //statement } ``` ---- - 有$Q$筆測試資料 那就不能用 while(cin >> x) 了 因為有限制輸入測資資料的數量 此時我們通常習慣會用 while (Q--) 當$Q>0$時小括號內就會是 True,直到$Q<0$為止才會停,剛好執行$Q$筆 ---- 比較 ```cpp while(cnt--) ``` 和 ```cpp while(--cnt) ``` ---- `do_while` 與`while`的差別為是否先執行1次 ```cpp do{ //跑迴圈前會先執行一遍,才去檢查condition是某為true }while(condition) ``` --- - for 迴圈的定義 - 其實 for 迴圈就是 while 迴圈的進階版 - for 迴圈在小括號裡面會有三個部分,每部分中間以分號(;)隔開 - 第一部分:初始設置,在這裡宣告你在迴圈裡需要用到的變數 - 第二部分:條件設置,這裡與 while 迴圈一樣 - 第三部分:調整變數,執行完一次迴圈後調整變數的量值 ```cpp for(part 1;part 2;part 3){ //statement } ``` ---- 而三部分皆可為空 `for(;;)` 如果判斷式為空,則為true **與while(1)一樣意思,但while不能這樣寫** --- 應用 ---- 可以直接在迴圈開始前宣告變數i並初始化 `for(int i=0;i<n;i++)` ---- 巢狀迴圈 套兩or更多層迴圈 ex. 99乘法表 ```cpp for(int i=2;i<=9;i++) for(int j=2;j<=9;j++) cout<<i*j<<" \n"[j==9]; ``` --- 迴圈的實用工具 `continue` `break` ---- ```cpp for(int i=0;i<10;i++){ if(i==5) continue; cout<<i<<" "; } ``` ![image](https://hackmd.io/_uploads/rJ6aBSAgJl.png) ---- ```cpp for(int i=0;i<10;i++){ if(i==5) continue; cout<<i<<" "; } ``` ![image](https://hackmd.io/_uploads/Sk2xLSRxJl.png) ---- 記得上zj練習
{"contributors":"[{\"id\":\"04b05e67-b6a9-4c04-9235-c66acad9fe35\",\"add\":2506,\"del\":601}]","title":"迴圈","description":"for whiledo_while"}
    230 views
   Owned this note