26-嵌套变式
6.10.2 嵌套变式
上一个实例中,内层循环和外层循环所做的事情相同。可以通过外层循环控制内层循环,在每次外层循环迭代时内层循环完成不同的任务。把程序清单6.17稍微修改后,如程序清单6.18所示。内层循环开始打印的字符取决于外层循环的迭代次数。该程序的第1行使用了新的注释风格,而且用const关键字代替#define,有助于读者熟悉这两种方法。
程序清单6.18 rows2.c
程序
// rows2.c -- 依赖外部循环的嵌套循环
#include <stdio.h>
int main(void)
{
const int ROWS = 6;
const int CHARS = 6;
int row;
char ch;
for (row = 0; row < ROWS; row++)
{
for (ch = ('A' + row); ch < ('A' + CHARS); ch++)
printf("%c", ch);
printf("\n");
}
return 0;
}
该程序的输出如下:
ABCDEF
BCDEF
CDEF
DEF
EF
F
因为每次迭代都要把 row
的值与 'A'
相加,所以 ch
在每一行都被初始化为不同的字符。然而,测试条件并没有改变,所以每行依然是以 F
结尾,这使得每一行打印的字符都比上一行少一个。