老师让打直角三角形,我是先分析行,列的数字规律,然后在写循环体.
直角的还好说,打印空心菱形这种的就不行了.
求大神,空心菱形应该如何打印,我主要想知道思考的过程.
建立笛卡尔坐标系,菱形的方程是|y| + |x| = a,然后两个嵌套for循环循环变量分别从-a取到a,然后判断拿到的坐标在不在方程上,是就打印“*”,这是最笨的一种方法,但是适用很多图形,只要写得出方程就能打印。
还有几种歪门邪道的方法,windowsAPI函数SetConsoleCursorPosition()可以移动光标,要打印到哪里就把光标移动到哪里,不需要一行行的打印。
还可以自己在一个文本里用字符拼一个图形出来,然后读取文件原样打印到控制台上。
三层for循环搞定的事儿
空心菱形的打印方式,同样是分析规律
比如打印上面这种图形,分析每一行出现的特征:
(1)对于最顶端,最底端: 多个空格 + 星号 + 多个空格
(2)对于其他行: 多个空格 + 星号 + 多个空格 + 星号
分析出
1. 空格数量与行号之间的关系
2. 星号位置与行号之间的关系
有了这两个关系,就能接解决问题了
http://blog.csdn.net/havedream_one/article/details/47164673
找到规律,有规律就好办了
bool LingXing(int x, int y)
{
x = abs(x);
y = abs(y);
return (x+y)==4;
}
int main()
{
for(int i=-4;i<=4;i++)
{
for(int j=-4;j<=4;j++)
{
if(LingXing(j,i))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}