对于循环打印图形的情况总结——基于C语言
看到图就进来了?
进来了你就来对了!
本篇文章花了大量文笔来教你怎么一步步的写不出来这个图形,对的,这个图形本文教不了,但是本文将揭示循环打印的内幕,让你对几种常见情况了熟于心。
一般地,打印图形一般使用for循环: for (initialize; test; update)
2个循环嵌套,一个控制行一个控制列:
外层循环用于控制行(内嵌for循环控制列和换行符),一般的打印图形,行数是固定不变的(即外层循环的所有参数不变)。改变的是内层循环(一行打印几列),通常是两种情况:改变 初始值 和 循环条件
由此我们可以得出一些结论:
对于 int x;
有上三角:
有下三角:
由表可知:
由此我们可以轻松的输出九九乘法表:
上一节我们了解了,想要改变循环打印图形的情况,只需改变内层循环的 初始值 和 循环条件 即可。那么,这两种情况真的是一模一样吗?来几个例题一探究竟!
注意观察同样是上三角,输出的内容的不同。
在这里我们只考虑内层循环的值的变化,其中的算法暂不考虑。
规律总结:
前两节仅讨论了单值类型以及只包含一个嵌套循环的程序设计,这节讨论更复杂的程序结构和算法。(为了讨论方便,每次编码都 只改变初始值 )
注意上面两个图形中,空格和星号的算法是相反的。至此,上下左右四种三角*已经全部列出。
采用自顶向下的方法来分析本程序的算法:
首先删除空格输出的循环控制
然后我们就得到了星号的输出格式:每行2n+1个。
采用改变初始值的方式,即: for(j = ROW - (2 * i +1); j < ROW; j++) putchar('*');
接着,在输出星号之前加入空格输出,为递减输出,即: for(j = i; j < ROW; j++) putchar(' ');
再难一点:
还能不能再难一点?——可以,来一个平行四边形!
待补充。
最后再来一个装比一点的: