for循环也可以嵌套,它可以和for循环结构,也可以和while循环结构混合嵌套。
嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内,下面给出嵌套循环的示例。
例【1】for循环嵌套练习
编程要求:用“*”输出一个菱形图案,图案如下:

程序清单 sample.c
#include <stdio.h>
void main()
{
int i, j, k;
// 先打印上边的四行
for (i = 1; i <= 4; i++) {
// 控制要打印的空格数
for (j = 1; j <= 4 - i; j++)
printf(" ");
// 控制要打印的星号数
for (k = 1; k <= 2 * i - 1; k++)
printf("*");
printf("\n");
}
// 打印下边的三行
for (i = 1; i <= 3; i++) {
// 控制要打印的空格数
for (j = 1; j <= i; j++)
printf(" ");
// 控制要打印的星号数
for (k = 1; k <= 7 - 2 * i; k++)
printf("*");
printf("\n");
}
}
程序分为两部分循环,第一部分循环输出菱形图案的上边四行,最外层循环控制输出的行数,内层嵌套了两个for循环,第一个嵌套循环输出打印的空格数,第二个嵌套循环输出打印的星号数;第二部分循环输出菱形图案的下边三行,原理和第一部分循环相同。
例【2】for循环嵌套练习
编程要求:打印输出100至200之间的全部素数。
提示:素数是指能被1和它本身整除的数。算法比较简单,先将这个数被2除,如果能整除,且该数又不等于2,则该数不是素数。如果该数不能被2整除,再看是否能被3整除,并且该数不等于3,则该数不是素数,否则再判断是否能被4整除,依次类推,该数只要是能被小于其本身的某个数整除时,就不是素数。
程序清单 sample.c
#include <stdio.h>
void main()
{
int i, j, n;
n = 0;
for (i = 100; i <= 200; i++) {
j = 2;
// 从2到i之间寻找第一个能被整除的数
while (i % j != 0)
j++;
// 如果第一个能被整除的数等于该数本身,则说明该数为素数
if (i == j) {
printf("%4d", i);
n++;
// 控制每行输出8个素数
if (n % 8 == 0)
printf("\n");
}
}
printf("\n");
}
程序外层循环控制输出100至200之间的数,内层的while循环用于找寻从2到该数之间第一个能被整除的数,内层循环判断条件为i%j != 0,其中i为当前要判断是否是素数的数,j为从2开始循环递增的数,如果i%j != 0,则说明i不能被j整除,j自增后程序继续执行while循环,如果i%j == 0,则说明i能被j整除,程序跳出while循环,循环后面的if语句判断i与j是否相等,如果相等,则说明i为素数,程序输出i。