學習書籍:C 語言學習手冊 第四版。作者: 洪維恩
這是一篇記錄自己學習 C 語言的過程,算是給自己看的筆記,所以這裡面的內容,是我整理書中我認為重要的部分,然後用自己的方式重新寫一遍,如果有圖,我會理解完,再自己畫出來,內容肯定會和課本上有出入,若有錯誤,或是理解錯的地方,希望能讓我知道。
程式大致可分成三種結構:
- 循序性結構 (sequence structure)
st=>start: 開始程式
e=>end: 結束程式
op1=>operation: 敘述1
op2=>operation: 敘述2
st->op1->op2->e
```* 選擇性結構 (selection structure)
st=>start: 開始程式 e=>end: 結束程式 op1=>operation: 敘述1 op2=>operation: 敘述2 cond=>condition: 判斷條件
st->cond cond(yes)->op1->e cond(no)->op2->e
st=>start: 開始程式 e=>end: 結束程式 op1=>operation: 敘述1 op2=>operation: 敘述2 cond=>condition: 判斷條件
st->op1->cond cond(no)->op2->op1->cond cond(yes)->e
* * *
在之前的文章已經學習[選擇性結構](http://localhost/wordpress/2021/05/08/c-%e8%aa%9e%e8%a8%80%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98-%e4%ba%94-if-%e6%a2%9d%e4%bb%b6%e5%88%a4%e6%96%b7/ "選擇性結構"),這篇要來學習**重複性結構**,也就是**迴圈**的用法。在C語言中,實現迴圈有三種方式:for、while、do-while。雖然都是迴圈,但這些方式有不同的特性,實作起來也不一樣,可以根據需要來使用。
for 迴圈
------
for(設定迴圈初始值; 判斷條件; 設定控制增減量) { 迴圈主體內容; }
while 迴圈
--------
設定迴圈初始值; while(判斷條件) { 迴圈主體內容; 設定控制增減量; }
do - while 迴圈
-------------
設定迴圈初始值; do { 迴圈主體內容; 設定控制增減量; } while(判斷條件);
迴圈比較
----
Name
for
while
do - while
先進行條件判斷
否
否
否
後進行條件判斷
否
否
是
在迴圈中需要設定控制增減量
否
是
是
控制變數會自動變更
是
否
否
迴圈重複次數
已知
未知
未知
迴圈最少會執行的次數
0
0
1
何時重複執行迴圈
條件成立
條件成立
條件成立
巢狀迴圈
----
用法與巢狀 if 類似,就是將 for 或是 while 迴圈裡面再包一次迴圈,可以是巢狀 for 迴圈、巢狀 while 迴圈、或是混和搭配使用。
最常見的範例就是 九九乘法表:
#include<stdio.h> #include<stdlib.h> int main(){ int a, b; for(a=0; a<=9; a++){ // 外層迴圈 for(b=0; b<=9; b++){ // 內層迴圈 printf("%d*%d=%2d", a, b, a*b); } printf("\n"); } return 0; }
break 敘述
--------
break 用來跳出迴圈;如果是巢狀迴圈,則會跳離當前迴圈。
通常會搭配 if 判斷式來使用。
for(設定迴圈初始值; 判斷條件; 設定增減量) { 敘述1; 敘述2; break; // 跳出迴圈 ───────────┐ } // // 跳出迴圈後,繼續執行之後的程式 <────┘ ……
範例:
#include<stdio.h> #include<stdlib.h> int main(){ int a; for(a=0; a<=10; a++){ if(a%3 == 0){ break; // 跳出迴圈 } printf(“i=%d”, a); } printf(“跳出迴圈,i=%d”, a); return 0; }
通常 break 最常見的應用是再登入介面,當用戶輸入密碼超過指定次數就會離開登入畫面。
continue 敘述
-----------
continue 是用來強制程式跳回到迴圈開頭。
for(設定迴圈初始值; 判斷條件; 設定增減量) { 敘述1; // 迴圈開頭 <────────────────────┐ 敘述2; // // continue; // 每當遇到 continue 回到開頭 ───┘ 敘述n; } ……
範例:
#include<stdio.h> #include<stdlib.h> int main(){ int a; for(a=0; a<=10; a++){ if(a%3 == 0){ continue; // 回到前面繼續執行 } printf(“i=%d”, a); } printf(“跳出迴圈,i=%d”, a); return 0; }