# For / While Loop --- # 目錄 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [上週題目講解](#1) --- ## [T05 等比 or等差](http://mdcpp.mingdao.edu.tw/contest/29/problem/T05) | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="convex-in convex-out" --> * [解題想法](#4/1) * [特殊狀況講解](#4/6) * [參考程式碼解析](#4/9) ---- ### 解題想法 ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="convex-in" --> <!-- .slide: data-transition="none-out" --> ![](https://i.imgur.com/wAtQN6C.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/Qzjvljo.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/clfLbVa.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/4wjBW6K.png =700x400) ---- ### 特殊狀況講解 ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/jXQZ3Mh.png =700x400) ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/Kinuxjh.png =700x400) ---- ### 參考程式碼解析 ```cpp= #include<iostream> using namespace std; int a, b, c; int main(){ cin >> a >> b >> c; if( a + c == b + b ){ if( ( a * c ) == b * b && a * c != 0){ cout << "B"; }else{ cout << "A"; } }else if( ( a * c ) == b * b && a * c != 0){ cout << "C"; }else{ cout << "D"; } } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ```cpp= #include <iostream> using namespace std; int main(){ double a, b, c; cin >> a >> b >> c; } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include <iostream> using namespace std; int main(){ double a, b, c; cin >> a >> b >> c; if( b == 0 ){ if( c == 0 && a == 0 ){ cout << "A"; }else{ cout << "D"; } } } ``` --- # For 迴圈 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [基本介紹](#5/1) * [語法與使用範例](#5/3) * [應用問題](#5/7) * [每日一題](#5/10) ---- ## 基本介紹 ---- ## 基本介紹 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | 比起等等會提到的 while 迴圈 for 迴圈更適合處理<span><!-- .element: class="fragment highlight-red " -->有次序</span>的事 其實 for 迴圈能做的事,while 迴圈都能做 為了<span><!-- .element: class="fragment highlight-red " -->視覺上的方便</span>,因此要學習 for 迴圈 ---- ## 語法與使用範例 ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= for( A. ; B. ; D. ) { C. } ``` * A. ➨ 一開始先做什麼事<!-- .element: class="fragment" data-fragment-index="0" --> * B. ➨ 條件式<!-- .element: class="fragment" data-fragment-index="2" --> * C. ➨ 當 B. 條件成立時,就重覆一次的指令<!-- .element: class="fragment" data-fragment-index="3" --> * D. ➨ 等 C. 做完一次,就執行的指令<!-- .element: class="fragment" data-fragment-index="4" --> ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main(){ int n, i; cin >> n; for( i = 1 ; i <= n ; i++ ){ cout << i << " "; } } ``` | 輸入 | 5<!-- .element: class="fragment" data-fragment-index="1" --> | | -------- | -------- | | 輸出 | 1 2 3 4 5<!-- .element: class="fragment" data-fragment-index="2" --> | ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main(){ int n, i, j; cin >> n; for( i = 1 ; i <= n ; i++ ){ cout << "I =>" << i << '\n'; for( j = 0 ; j < n ; j++ ){ cout << "J => " << j << " "; } cout << '\n'; } } ``` ---- ## 應用問題 ---- ## 星星問題 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * 題目敘述 ``` 請輸出一個用 * 構成的 N 層三角形 ``` * 範例輸入 ``` 3 ``` * 範例輸出 ``` ***** *** * ``` ---- ## 參考解答 ---- ## 參考解答 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main() { int n; cin >> n; for( int i = 1 ; i <= n ; i++ ){ for( int j = 1 ; j < i ; j++ ){ cout << " "; } for( int j = 0 ; j <= 2 * n - i * 2 ; j++ ){ cout << "*"; } cout << '\n'; } } ``` --- # While 迴圈 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [基本介紹](#6/2) * [語法與使用範例](#5/3) * [應用問題](#5/7) * [每日一題](#5/10) ---- ## 基本介紹 ---- ## 基本介紹 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | While 迴圈的特色就是他的重複性 他是一種<span><!-- .element: class="fragment highlight-red " -->控制流程</span>的陳述 利用一個<span><!-- .element: class="fragment highlight-red " -->返回結果為布林值</span>的表達式作為循環條件 當這個表達式的返回值為<span><!-- .element: class="fragment highlight-red " -->「真」</span>時 則<span><!-- .element: class="fragment highlight-red " -->反覆執行迴圈內的程式碼</span> 若表達式的返回值為<span><!-- .element: class="fragment highlight-red " -->「假」</span> 則<span><!-- .element: class="fragment highlight-red " -->結束執行迴圈內的代碼</span> 繼續執行迴圈下面的指令 ---- ## 語法與使用範例 ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= while( A.條件式 ) { B.當條件成立時,就重覆做的事 } ``` ---- ## 應用問題 ---- ## 班級名條 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * 題目敘述 ``` Ryan 老師一個學年會教很多個班,每班的人數都不一樣 為了製作名條方便,Ryan 決定寫程式輸出 No.N ~ No.1 ``` * 範例輸入 ``` 5 ``` * 範例輸出 ``` No.5 No.4 No.3 No.2 No.1 ``` ---- ## 參考解答 ---- ## 參考解答 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; int main (){ int n; cin >> n; n++; while( n-- ){ if( n == 0 ){ break; } cout << "No. " << n << '\n'; } } ```
{"metaMigratedAt":"2023-06-17T11:48:13.382Z","metaMigratedFrom":"YAML","title":"2022.10.17","breaks":true,"slideOptions":"{\"theme\":\"serif\",\"transition\":\"convex\"}","contributors":"[{\"id\":\"caabc74e-d866-4d87-a18f-1cf893d1eaaf\",\"add\":23957,\"del\":12286}]"}
    470 views
   Owned this note