上一节求素数的例子在循环中调用一个函数,而那个函数又是一个循环,这其实是一种嵌套循环。如果不是调用函数而是写在一起就更清楚了:
例 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代替。在有嵌套循环的情况下,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(制表符)这么个字符。