for循环嵌套

1.循环嵌套

加深理解:问,这个循环会打印几次hello,world?

答:25次,循环嵌套,外循环满足条件执行内循环,内循环会打印5次没问题,而这个内循环就相当于循环体,执行完后开始下一次外循环,以此类推,打印25次。

.

2.案例

1.请打印一个4行5列的*矩形

没毛病,这是我们之前的做法。但如果是让我们打印4行100列呢?我们要在打印里写100个*吗?

.

因此,这种做法并不能完全解决我们的需求,在这里,我们要用循环嵌套做

.

穿插知识:

我们简化问题,先打印出1行5列的* 如图

如果能让程序再重复打印4次这样的代码,不久有了4行5列的*了吗

所以我们在该代码的外面再写一个循环,让其循环4次 如图

我们发现没有换行,原因是因为我们用的是print打印,所以我们再人为地加个换行

这样,外循环控制了行数,而内循环控制了列数,无论是多少行多少列都可以打印出

.

2.在控制台中用*打印5行直角三角形

要打印这个直角三角形,不就相当于是矩形列数的* 在不断地减少吗,而控制矩形列数*的是内循环

.

如果内循环的判断条件可以变化,即从1-5,那每次的打印不就可以从1颗变成5颗了吗



因此,内循环的判断条件绝对不能是一个字面量,而应该是一个变量,恰好,i不就是从1变到5吗 如图

执行流程:

1.i=1,满足条件,进入内循环,j=1,此时j=i,满足条件,打印一个* ,然后j+1,j=2,大于i=1内循环结束,i+1

2.i=2,满足条件,进入内循环,j=1,j<i,打印一个* ,然后j+1,j=2,j还是<i,再打印一个* ,j再+1,j>i,内循环结束,i+1

3.i=3,满足条件,进入内循环,j=1,j<i,打印一个 * ,然后j+1,j=2,j<i,打印一个* ,j再+1,j=i,打印一个* ,然后j继续+1,j>i,内循环结束,i+1

以此类推,打印出了直角三角形

假如要输出一个倒过来的直角三角形呢?

答:那就让列数的* 先是5颗,到最后变为1颗就行了。

我们让内循环的判断条件为5->1即可,而内循环的判断条件是i控制,所以要改变外循环{} 如图

3.打印99乘法表

先了解一下99乘法表长什么样

我们发现样子长的和上面打印的直角三角形很像,而直角三角形又是通过矩形打印出的,由此得出思路

.

1.先打印一个9行9列的矩形

2.再改成一个9行的直角三角形

3.把* 改成1*1=1

4.在99乘法表中找规律

我们发现* 左边的数随着每一行都会加1,而* 右边的数则根据行数不做改变,仔细一想,左边会改变不就相当于是j吗,而右边只随行数不就是i吗 如图


posted @ 2024-08-19 21:35  直実  阅读(26)  评论(0编辑  收藏  举报