C語言 - 第十一章 | 循環演算 - 迴圈
什麼是迴圈?
有時候我們需要讓程式重複做某一件事情,我們可以藉由兩種方法做到,一是迴圈,二是遞迴,因為遞迴太過麻煩且不易使用所以在此不做贅述,留待未來。
在C++
中使用迴圈和C
語言相同,使用while
及for
。
while
while
使用方式為,小括號內為繼續執行條件,大括號為執行動作。
假設我們想讓使用者持續輸入數字,並使這些數字相加,當總和大於100
時結束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <stdio.h>
int main() { int sum = 0, num;
while (sum <= 100) { printf("please input a number to sum:"); scanf("%d", &num); sum = sum + num; printf("The \"sum\" is %d\n", sum); }
return 0; }
|
一般迴圈我們都會做三件事情,設定條件變數、設立終止條件、更改條件變數:
設定條件變數:int sum = 0;
設立繼續條件:sum <= 100
更改條件變數:sum = sum + num;
另外我們更常會遇到的狀況,條件變數是持續+1
,所以我們就有了for的使用。
for
for
的使用方式為,小括號內依序放入條件變數設定、繼續條件設立、條件變數更改,並用;隔開,大括號內為執行動作。
九九乘法表,使用雙層for
迴圈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <stdio.h>
int main() { int i; int j;
for (i = 2; i < 10; i++) { for (j = 1; j < 10; j++) { printf("%d*%d=%d\n", i, j, i * j); } }
return 0; }
|
do-while
do-while
的意義為不論如何都先做一次迴圈內的事情,再進行while
迴圈。
1 2 3 4 5 6 7
| if (i < 1) { while (i < 1) {} } else {}
|
代碼能走到if
裡,i
一定是小於1
的,這個時候可以直接執行while
的循環體了,不用先判斷了。
這裡如果用do-while
,可以節省一次判斷。
break
猜拳的程式,使用了無限迴圈,並使用break
跳出迴圈代替旗標的功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> #include <stdlib.h> #include <time.h>
int main() { int user,prog; srand(time(NULL)); while(1){ printf("please input your hand(3>2,2>1,1>3):"); scanf("%d",&user); prog = rand() %3+1; if( (prog-user == -2)||(prog-user == 1) ){ printf("program: %d\n",prog); printf("you : %d\n",user); printf("you lose\n"); }else if( (user-prog == -2)||(user-prog == 1) ){ printf("program: %d\n",prog); printf("you : %d\n",user); printf("you win\n"); break; }else{ printf("program: %d\n",prog); printf("you : %d\n",user); printf("draw\n"); } printf("\n"); }
return 0; }
|
continue
continue
的意義為馬上重新執行迴圈,有別於break
的跳出迴圈。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <stdio.h>
int main() { int i;
for (i = 0; i < 100; i++) { printf("%d:", i); if (i % 5 == 0) { printf("i am 5\n"); continue; } printf("i am not 5\n"); }
return 0; }
|
註:以上參考了
hackersir gitbooks