二重循环解题思路.docx

上传人:牧羊曲112 文档编号:3235718 上传时间:2023-03-12 格式:DOCX 页数:7 大小:38.06KB
返回 下载 相关 举报
二重循环解题思路.docx_第1页
第1页 / 共7页
二重循环解题思路.docx_第2页
第2页 / 共7页
二重循环解题思路.docx_第3页
第3页 / 共7页
二重循环解题思路.docx_第4页
第4页 / 共7页
二重循环解题思路.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《二重循环解题思路.docx》由会员分享,可在线阅读,更多相关《二重循环解题思路.docx(7页珍藏版)》请在三一办公上搜索。

1、二重循环解题思路 http:/xueyuan.lanqiao.org 二重循环习题的思路 蓝桥软件学院-艳群 本文通过一道习题,讲解做二重循环习题的思路: 题目:使用二重循环打印如下图形: 分析:首先要明确我们需要打印的种类有:字符串”*”,字符串” ”(空格)。比如第一行,先打印了4个空格” ”,然后打印了一个”*” 。 我们分析一下每行的具体打印情况: 第0行:先打印4个空格,然后打印1个”*” 第1行:先打印3个空格,然后打印3个”*” 第2行:先打印2个空格,然后打印5个”*” 第3行:先打印1个空格,然后打印7个”*” 第4行:先打印0个空格,然后打印9个”*” 通过上面分析,我们不

2、难发现,”第0行”, ”第1行” ”第4行”这些行数在重复,所以我们可以用外层循环控制行数。在每行的内部,”打印n个空格”又是一个重复的过程,所以可以用内层循环来控制打印空格的个数。同理,在每行的内部,”打印n个*”也是一个重复的过程,所以可以用内层循环来控制打印”*”的个数。即:用外层循环控制打印的行数,用两个内层循环分别控制打印空格的个数和打印”*”的个数。还要注意,在把每行的空格和”*”打印完后,还需要换行。 即可得伪代码: public static void main(String args) int rows = 5; for (int i = 0; i 行数; i+) for (

3、int j = 0; j 空格的个数; j+) System.out.print( ); for (int j = 0; j *的个数; j+) http:/xueyuan.lanqiao.org System.out.print(*); System.out.println;/每行的空格和”*”打印完后,需要换行 我们在用i表示行数,用j表示打印空格的个数,用k表示打印”*”的个数,可得下表: 分析外层循环和内层循环的数学关系,可得: i+j=4 即j=4-i=(rows-1)-i, 即空格的个数等于:(当前行数-1)-i k=2*i+1 ,即”*”的个数等于: 2*当前行数+1 现在,用计

4、算后的关系式将伪代码中的汉字替换,即可实现等腰三角形的打印: public static void main(String args) throws Exception int rows = 5; for (int i = 0; i rows; i+) for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j 2 * i + 1; j+) System.out.print(*); System.out.println;/每行的空格和”*”打印完后,需要换行 运行结果: 思考:现将题目变为:打印倒等腰三角

5、形,如图: http:/xueyuan.lanqiao.org 该如何实现呢? 分析:对比“正等腰三角形”和“倒等腰三角形”,如下 不难发现,“倒等腰三角形”的第0行,就是“正等腰三角形”的最后一行;“倒等腰三角形”的第1行,就是“正等腰三角形”的倒数第二一行;“倒等腰三角形”的最后一行,就是“正等腰三角形”的第一行。即:把“正等腰三角形”的行数逆序输出,就变成了“倒等腰三角形”。控制“正等腰三角形”行数的是外层循环for (int i = 0; i =0; i-),就实现了“倒等腰三角形”的打印,如下: public static void main(String args) throws

6、Exception int rows = 5; / for (int i = 0; i = 0; i-) / 将“正等腰三角形”等行数逆序输出 for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j 2 * i + 1; j+) System.out.print(*); System.out.println;/ 每行的空格和”*”打印完后,需要换行 运行结果: 思考:现将题目变为:打印菱形,如图: http:/xueyuan.lanqiao.org 该如何实现呢? 分析: 将菱形上下拆开、一分为二,即

7、可分为“正等腰三角形”和“到等腰三角形”,如图: 因此,只需要先打印“正等腰三角形”,然后再打印“到等腰三角形”即可。需要注意,菱形的中间那一行,既是“正等腰三角形”的最后一行,同时也是“倒等腰三角形”的第一行。因此,在打印“正等腰三角形”时,不需要打印最后一行,如下: public static void main(String args) throws Exception int rows = 5; / 正等腰三角形 /for (int i = 0; i rows; i+) for (int i = 0; i rows-1; i+) /将for的第二个参数从row变为row-1,即无需打印

8、正等腰三角形的最后一行 for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j = 0; i-) / 将“正等腰三角形”等行数 http:/xueyuan.lanqiao.org 逆序输出 for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j 2 * i + 1; j+) System.out.print(*); System.out.println;/ 每行的空格和”*”打印完后,需要换行 运行结果: 思

9、考: 现将题目变为:打印空心菱形,如图: 该如何实现呢? 分析: http:/xueyuan.lanqiao.org 实心菱形与空心菱形的区别是:空心菱形就是实心菱形的边界,如下图: ,即在打印“实心菱形”的“*”时,只需要把每一行“*”的开头第一个“*”和结尾最后一个“*”打印出来,每行中间部分的“*”用空格替代即可。即对System.out.print(*);进行判断,伪代码如下: if (开头第一个“*” 或 结尾最后一个“*”) System.out.print(*); else /即中间部分打印空格 System.out.print( ); 完整代码如下: public static

10、 void main(String args) throws Exception int rows = 5; / 正等腰三角形 for (int i = 0; i rows; i+) for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j = 0; i-) for (int i = rows - 2; i = 0; i-) / “倒等腰三角形”的第0行不用打,直接从第1行(rows-2)开始打印 for (int j = 0; j rows - i - 1; j+) System.out.print( ); for (int j = 0; j 2 * i + 1; j+) 个“*” if (j = 0 | j = 2 * i) /开头第一个“*” 或 结尾最后一 System.out.print(*); else /即中间部分打印空格 System.out.print( ); System.out.println;/ 每行的空格和”*”打印完后,需要换行 运行结果: 本文由蓝桥软件学院原创,转载请注明出处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号