题目
代码
#include<stdio.h>
int main()
{
int i = 0;
int high = 0;
printf("请输入上三角形的高:\n");
scanf("%d", &high);
//上三角形
for (i = 1; i <= high; i++)
{
for (int j = 0; j < high - i; j++)
{
printf(" ");
}
for (int j = 0; j < 2 * i - 1; j++)
{
printf("*");
}
printf("\n");
}
//下三角形
for (i = 1; i < high; i++)
{
for (int j = 0; j < i; j++)
{
printf(" ");
}
for (int j = 0; j < 2 * (high - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
思路
重点在找规律+对for循环的理解。
关于如何能想到分成上下三角形,不要焦虑,慢慢积累, 你正在你的路上前进呢!❤️
注意:
- 上三角和下三角的循环条件不一样哦!不是长得像就一样呢!
- 换行的位置、内部两个for循环间的关系。
- 当 i=0 时,循环条件为 j = 2*0 - 1 = -1,这时会由于 j=0 而不满足进入循环的条件,而直接执行下面的换行。也就是当 high=5 时,上三角的高度只有4,因为第一次无法打印星号,只执行的空格的打印和换行。
上三角形:
空格数 = high - 行
星号 = 2 * 行 - 1
下三角形:
空格数 = 行
星号 = 2 * (high-行) - 1
悟了✨
如何打印图形题找规律?
- 首先考虑与“输入的数据”、“行”之间的关系。
- 被嵌套的内层循环要考虑与外层循环条件的联系,这样才能用外层循环控制内层循环。
- 考虑循环之间的关系,是平行(相互不影响)还是包含(被另一个控制)。
❤️ 恭喜! 恭喜! 又收了一名小弟! ❤️