一、嵌套循环专题
1.什么是嵌套循环?
在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层。
嵌套循环的语法结构:
(1)for(初始表达式;布尔表达式;迭代因子){
for(初始表达式;布尔表达式;迭代因子){
循环体;
}
循环体;
}
(2)for(初始表达式;布尔表达式;迭代因子){
for(初始表达式;布尔表达式;迭代因子){
if(布尔表达式){
语句块;
}else{
语句块;
}
循环体;
}
循环体;
}
(3)for(初始化表达式;布尔表达式;迭代因子){
for(初始化表达式;布尔表达式;迭代因子){
循环体;
}
for(初始化表达式;布尔表达式;迭代因子){
……
循环体;
}
循环体;
}
(4)while(布尔表达式){
if(布尔表达式){
语句块;
}else{
语句块;
}
循环体;
}
示例1-1嵌套循环:
执行步骤:
1.初始化i的值;判断i的值是否小于等于5;如果满足i<=5执行第二步;否则结束整个循环;(遍历每一行的数)
2.初始化j的值;判断j是否小于等于5;如果满足j<=5;打印i的值;否则返回第一步;(遍历每一列的数)
3.直到i不满足小于等于5;结束循环。
示例1-2分别计算100以内的奇数及偶数和
执行步骤:
1.分别初始化偶数和sum2,奇数和sum3;初始化a代表100以内的数
2.遍历1~100内的整数,如果a小于等于100执行下一步,否则结束循环;
3.假如a是100以内的数;判断a是偶数还是奇数,若为偶数执行sum2+=a;否则执行sum3+=a;
4.直到a不满足条件,结束循环,分别输出奇数和及偶数和。
示例1-3∑1+∑2+……+∑100(累加)
1.先定义累加的和sum并初始化为0;
2.将100以内的整数遍历;初始化i;当i<=100执行第二步,否则结束循环;
3.内循环进行累加;通过判断j<=i是否累加;还是返回上一层循环;
4.直到i>100结束循环,输出累加值。
示例1-4百钱百鸡问题
需求:公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元100只鸡的购买方法;
执行步骤:
1.声明i为公鸡并初始化;100元钱公鸡最多买20;所以第一层循环的布尔式为i<20;
2.声明i为母鸡并初始化;100元钱母鸡最多买33;所以第二层循环的布尔式为i<33;
3.声明i为小鸡并初始化;100元钱小鸡最多买300;但是总数不能超过,所以第三层循环的布尔式为i<100;
4.进入最内层循环后,通过判断鸡的总数为100与300元三种鸡花费钱是否相等;来输出每种鸡的数量。
5.通过遍历每只鸡的数量,循环判断成立的条件,输出每只鸡的数量。
示例1-5打印倒立直角三角形
1.声明i并初始化,布尔表达式i<6;控制打印行数为5行;(外循环)
2.声明j并初始化,布尔表达式j<6-i;控制每行打印的星星数;(内循环)
3.直到i>=6;结束整个循环;打印倒立直角三角形。
示例1-6打印平行四边形、
思路:将左边空白处看成倒直角三角形;
1.声明i并初始化,布尔表达式i<4;控制打印行数为4行;(外循环)
2.声明j并初始化,布尔表达式j<3-i;控制打印空格循环;(内循环)
4.声明k并初始化,布尔表达式k<7;控制每行打印的星星数;(内循环)
3.直到i>=4;结束整个循环;打印平行四边形。
示例1-7打印等腰三角形及倒立等腰三角形
打印等腰三角形执行步骤:
1.声明i并初始化,布尔表达式i<5;控制打印行数为4行;(外循环)
2.声明j并初始化,布尔表达式j<5-i;控制打印空格循环;(内循环)
4.声明j并初始化,布尔表达式j<2*i-1;控制每行打印的星星数;(内循环)
3.直到i>=5;结束整个循环;打印等腰三角形。
注意:不同语句块声明局部变量名相同时互不影响;
总结:
1.不同循环语句及相同循环语句之间都可以嵌套;如:for循环嵌套for循环;for循环嵌套while循环;while循环嵌套for循环。
2.循环嵌套可以有多层,使用最多的是两层;for循环嵌套for循环。
3.循环嵌套执行步骤:
(1)外层判断循环条件,满足进入外层循环体;
(2)内层判断循环条件;
(3)内层循环体执行;
(4)内层循环变量累加,回到2执行,直到不满足内层条件;
(5)外层循环变量累加,回到1执行,直到不满足外层循环条件,彻底退出循环;