内容正文:
YCF
(中职)计算机程序设计(C语言)第五章第4节教学课件工信版
1
第五章 循环结构程序设计
5.4 循环结构嵌套
所谓循环嵌套:即一个循环的循环体中又包含另一个循环。循环嵌套的层数可以是两层以上,即多重循环。
嵌套语句可以是以上三种语句(while、 do-while、for)的任意组合。
1、应用举例
【例5.4】打印输出如下图形
* * * * *
* * * * *
* * * * *
* * * * *
程序设计:
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=4;i++) // 外循环,共4行
{
for(j=1;j<=5;j++) // 内循环每行5个符号
printf(‘*’); // 每次循环要输出的符号‘*’
printf(‘
’); // 每行结束后要换行
}
}
1、应用举例
【例5.4】打印输出如下图形
* * * * *
* * * * *
* * * * *
* * * * *
说明:
本例中可以看出,由2个for语句形成的两重循环,而这两重循环实现了图形的输出,也可以看出外循环的次数跟图形的行数相同,内层循环的次数跟图形中每行的符号数目相同。
拓展练习
那么,在上面的例子基础上,能打印输出九九乘法表吗?
例如:打印输出九九乘法表。
程序设计:
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++) // 外循环,共9行
{ for(j=1;j<=i;j++) //内循环每行i个式子
printf(“%d*%d=%3d ”,j,i,i*j); // 输出每个表达式
printf(“
”); // 每行结束要换行
}
}
拓展练习
那么,在上面的例子基础上,能打印输出九九乘法表吗?
例如:打印输出九九乘法表。
程序运行结果:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4= 12 4*4= 16
1*5= 5 2*5= 10 3*5= 15 4*5= 20 5*5= 25
1*6= 6 2*6= 12 3*6= 18 4*6= 24 5*6= 30 6*6= 36
1*7= 7 2*7= 14 3*7= 21 4*7= 28 5*7= 35 6*7= 42 7*7= 49
1*8= 8 2*8= 16 3*8= 24 4*8= 32 5*8= 40 6*8= 48 7*8= 56 8*8= 64
1*9= 9 2*9= 18 3*9= 27 4*9= 36 5*9= 45 6*9= 54 7*9= 63 8*9= 72 9*9= 81
说明:本例也是由2个for语句嵌套形成的双重循环,当然也可以嵌套更多层,即形成多重循环。
多种嵌套形式
嵌套的形式可以有多种,如下形式都是正确的 :
for( )
for( )
………
for( )
while( )
………
while( )
for( )
………
do
for( )
………
while( );
for( )
while( )
………
do
while( );
多种嵌套形式
注意:循环嵌套不能交叉,如下形式是错误的。
for( )
………
for( )
嵌套的应用形式在实际应用中,应根据问题的需要来选择。
升华提高
由9*9乘法表的应用可知,循环结构的嵌套应用形式和方法,在此基础上又如何应用循环嵌套实现如下问题的求解呢?
例如用公式计算e的近似值,
计算公式为:e=1+1/1!+1/2!+1/3!+……+1/n!,使最后一项的值不小于10-5 。
升华提高
例如用公式计算e的近似值,公式为:e=1+1/1!+1/2!+1/3!+……+1/n!,使最后一项的值不小于10-5 。
程序设计:
#include <stdio.h>
main()
{
int i,n=1;
float e=1.0,t=1.0,p; // 定义累加器e,累加通项t ,累乘器p
while(t>=0.00001) // 设定外循环的循环条件,累加通项不小于 10-5
{ p=1;
for(i=1;i<=n;i++) // 内循环实现求每项的分母n!