对于所有的打印图形问题,唯一原则就是找规律,首先分析图形,这个图形显然是由空格和*组成的,可以先把图形切割开来分成两个三角形,分成上下两部分进行打印,
首先来看上面这一部分:上面共有七行,空格与*的对应关系如下:
值得一提的是,窃以为要关注一下空格数量,因为一开始我把他当成一个正方形,然后去里面挖空格,后来我发现,我们只需要关注*前面的空格数量就好了,后面直接换行即可
这样,我们就完成了上半部分的操作,接下来完成下半部分
完整代码如下:
#include<stdio.h>
void Func(int line)
{
int i = 0;
//上半部分
for (i = 0; i < line; i++)
{
int j = 0;
//首先打印空格数量
for (j = 0; j < line - 1 - i; j++)//注意这里第二个表达式
{//因为我们想要每打印一行空格的数量依次减少,所以可以进行-i操作
printf(" ");
}
//接下来打印*
for (j = 0; j < 2*i+1; j++)
{
printf("*");
}
printf("\n");
}
//下半部分
for (i = 0; i < line - 1; i++)
{
int j = 0;
//打印空格
for (j = 0; j < i + 1; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < (line - 1 - 1 - i) * 2 + 1; j++)
{
printf("*");
}
printf("\n");
}
}
int main()
{
Func(7);
return 0;
}