1月15日 C Primer Plus学习
6.8 出口条件循环:do while
while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。
C语言还有出口条件循环,即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。这种循环被称为 do while循环。
do while循环的通用形式:
do
statement while (expression);
statement可以是一条简单语句或复合语句。注意,do while循环以分号结尾。
do while循环在执行完循环体后才执行测试条件,所以至少执行循环体一次;而for循环或while循环都是在执行循环体之前先执行测试条件。do while循环适用于那些至少要迭代一次的循环。
6.10 嵌套循环
嵌套循环指在一个循环内包含另一个循环。
嵌套循环常用于按行和列显示数据,也就是说,一个循环处理一行中的所有列,另一个循环处理所有的行。
/* rows1.c -- 使用嵌套循环 */
#include <stdio.h>
#define ROWS 6
#define CHARS 10
int main(void)
{
int row;
char ch;
for (row = 0; row < ROWS; row++) /* 第10行 */
{
for (ch = 'A'; ch < ('A' + CHARS); ch++) /* 第12行 */
printf("%c", ch);
printf("\n");
}
return 0;
}
6.10.1 程序分析
6.10.1 程序分析
第10行开始的for循环被称为外层循环,第12行开始的for 循环被称为内层循环。
外层循环从row为0开始循环,到row为6时结束。因此,外层循环要执行6次,row的值从0变为5。
每次迭代要执行的第1条语句是内层的for循环,该循环要执行10次,在同一行打印字符A~ J;第2条语句是外层循环的printf("\n");,该语句的效果是另起一行,这样在下一次运行内层循环时,将在下一行打印的字符。
嵌套循环中的内层循环在每次外层循环迭代时都执行完所有的循环。
6.10.2 嵌套变式
上一个实例中,内层循环和外层循环所做的事情相同。可以通过外层循环控制内层循环,在每次外层循环迭代时内层循环完成不同的任务。把程序清单6.17稍微修改后,如程序清单6.18所示。内层循环开始打印的字符取决于外层循环的迭代次数。该程序的第 1 行使用了新的注释风格,而且用 const 关键字代#define,有助于读者熟悉这两种方法。
// 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;
}
嵌套循环打印九九乘法表
#include<stdio.h>
int main()
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j < i + 1; j++)
{
printf("%d×%d=%d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
运行结果如图:

浙公网安备 33010602011771号