题目:
打印菱形
题目内容:
用C语言在屏幕上输出以下图案:
思路:
这道题的解决办法有很多,大多都是拆分法,这里捡一种我觉得最方便的方法作以介绍:
首先我们需要明白,这种图案形式打印的题目,都是一行一行打印出来的。
之后就是考虑如何做方便了。
拆分:
我们将菱形拆分成 上三角 + 中间最长的部分 + 下三角 ,分别打印即可
仔细观察,每一行的图案由空格和星号组成,数一数对应行的空格数和星号数分别进行打印即可
找规律,我们发现,‘*’的数量是 2*row-1,‘ ’的数量是7-row。
好了,可以写代码了!
代码
//先来一个打印*和空格数量的函数
void PrintLine(int starCount, int spaceCount)
{
for (int i = 0; i < spaceCount; i++)
{
printf(" ");
}
for (int i = 0; i < starCount; i++)
{
printf("*");
}
printf("\n");
}
//然后再写打印菱形的函数
void PrintLingXing()
{
//先打印上半角
for (int row = 1; row<=6; row++)
{
PrintLine(row * 2 - 1, 7 - row);
}
//在打印中间部分
PrintLine(13, 0);
//下三角,反着循环上三角即可
for (int row = 6; row>=1; row--)
{
PrintLine(row * 2 - 1, 7 - row);
}
}
void main()
{
PrintLingXing();
}