在我开始学C语言和C++的时候,学到循环必然会有题目是画三角形画菱形画尼玛各种图形。
~ ~ ~
我就开始查,第一行直到第几个是空白,第二行怎么着怎么着,在小本子上用铅笔画来画去。我内心是崩溃的。。。
过了好久我们考试了,是的就是画菱形。
我在学校机房的小霸王上画了好半天,手脚并用,手舞足蹈。
学霸们一个接着一个的提交了代码,我作为一个各种不服的学渣,内心是:
“。。。。。。”
“学霸还是熟练,我赵日天服了”
所以我就在思考为什么,尼玛为什么?我最后想通了,书本上教的根本就不是一个正确的思考问题的姿势。
正确的姿势是这样的,你就在你要画的图形上构建一个直角坐标系。然后求出图形的边的函数表达式,然后用高中学的线性规划的知识来画图,就完了。
落实到代码上是这样的(我表示并不会写高贵的C语言,只能写Java了):
public class DrawTest {
//y=x+15 y=x-15 y=-x+15 y=-x-15
public static void main(String[] args) {
for (int y = -15; y <= 15; y += 1) {
for (int x = -15; x <= 15; x += 1) {
if (y < x + 15 && y < -x + 15
&& y > x - 15 && y > -x - 15) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
所以你可以画三角形,梯形,菱形,胖菱形,瘦菱形,椭圆,甚至笛卡尔心形线,以及一些并不知道是什么鬼的图形。。。
可以用这个来学循环,但别形成思维定势,正确的思考问题的姿势是上边那样的。
循环真的流程控制里面简单的不能再简单的东西,不要想的太复杂。
想看复杂的流程控制方式可以去刚一波continuation。。。
装逼结束,收工。