在一个循环结构中,又包含另一个完整的循环结构称为循环嵌套。内嵌循环的循环体中还可以出现新的循环,这就构成了嵌套循环。
C语言提供的for语句、while语句和do-while语句,不但可以嵌套循环语句自身,而且还可以相互嵌套,所以在C语言中,循环的嵌套有多种形式。
循环嵌套的执行:外层循环体每执行一次,内层循环都要整体循环一次(从初值开始,一直执行到不满足循环条件为止)。循环嵌套的执行流程如图6.4 所示(以两个while语句的嵌套为例)
三种循环语句for、while、do-while 可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。例如,下面这种形式是不允许的:
图6.4 循环嵌套的执行流程
【例6.7】求1!+2!+3!+4!+5!+ 6!。
分析:
本题要求6 个数相加,6 个数相加是一个典型的累加问题,可用如下程序段实现:
但这6 个数不是一个简单的值,而是一个数的阶乘,所以s=s+i;语句中的i 应改为i!,i!又是一个典型的累乘。可用以下程序段来实现:
显然(1)的循环体每执行一次,即每加一个数,都会对应一个数的阶乘,(2)必须完整(从循环初值一直执行到终值)地执行一次。因此本题要用循环的嵌套来实现,而且累加是外循环、累乘是内循环,内外层循环联系通过外层循环的循环变量i 来实现。
程序代码:
运行结果:
程序讲解:(www.xing528.com)
本例程序中,外层循环体每执行一次,即每加一个数,会对应一个数的阶乘,且累加是外循环、累乘是内循环,内外层循环联系通过外层循环的循环变量i 来实现。
【例6.8】编写程序,以下三角的方式打印出九九乘法表。
分析:
乘法表的特点是:
(1)共有9 行;
(2)每行的式子数很有规律,即属于第几行,就有几个式子;
(3)对于每一个式子,既与所在行数有关,又与所在行的具体位置有关。
我们先看输出其中一行的情况:
假设要输出的行为第i 行,对于该行的i 个式子,可用以下程序段输出:
如果给上述程序段加一个外循环,使i 从1 到9 发生变化,那么,每执行一次内循环,乘法表中的一行也就被输出了。
程序代码:
运行结果:
程序讲解:
在本例程序中,采用嵌套循环。外层循环控制输出行数,内层循环输出表中的一行,最后"printf("\n");"换行控制,使下一次的式子输出在新行上。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。