上一節求素數的例子在循環中調用一個函數,而那個函數里面又有一個循環,這其實是一種嵌套循環。如果把那個函數的代碼拿出來寫就更清楚了:
例 6.2. 用嵌套循環求1-100的素數
#include <stdio.h> int main(void) { int i, j; for (i = 1; i <= 100; i++) { for (j = 2; j < i; j++) if (i % j == 0) break; if (j == i) printf("%d\n", i); } return 0; }
現在內循環的循環變數就不能再用i
了,而是改用j
,原來程序中is_prime
函數的參數n
現在直接用i
代替。在有多層循環或switch
嵌套的情況下,break
只能跳出最內層的循環或switch
,continue
也只能終止最內層循環並回到該循環的開頭。
用循環也可以打印表格式的數據,比如打印小九九乘法表:
例 6.3. 打印小九九
#include <stdio.h> int main(void) { int i, j; for (i=1; i<=9; i++) { for (j=1; j<=9; j++) printf("%d ", i*j); printf("\n"); } return 0; }
內循環每次打印一個數,數與數之間用兩個空格隔開,外循環每次打印一行。結果如下:
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
結果有一位數的有兩位數的,這個表格很不整齊,如果把打印語句改為printf("%d\t", i*j);
就整齊了,所以Tab字元稱為製表符。