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;
}

运行结果如图:

posted @ 2022-02-07 10:38  shucharjer  阅读(36)  评论(0)    收藏  举报