1.打印上半部分
首先,我们都知道,每一行都包含了空格以及组成菱形的符号,假设是‘*’,那么,要想打印出每一行的空格及符号,我们应该先找到它们各自的规律,假设上半部分有7行,那么有如下记录
行 | 空格 | * |
---|---|---|
1 | 6 | 1 |
2 | 5 | 3 |
3 | 4 | 5 |
4 | 3 | 7 |
5 | 2 | 9 |
6 | 1 | 11 |
7 | 0 | 13 |
(i=0,1,2…6) | 7-1-i | 2 * i +1 |
由上表我们得到了空格以及符号的表达式,两者都可以用行数来控制,因此我们的代码可以这样写
int i=0;
int j=0;
int n = 7;
for (i = 0; i < n; i++)//外层循环控制行
{
//打印空格
for (j=0;j<n-1-i;j++)
{
printf(" ");
}
//打印‘*’
for (j = 0; j < 2 * i +1; j++)
{
printf("*");
}
printf("\n");
}
2.打印下半部分
下半部分的方法和上半部分的一样,这里我就不为大家一一列举了
//打印下半部分:六行
for (i = 0; i < n - 1; i++)
{
//空格,1.2.3.4.5.6.
for (j = 0; j < 1 + i; j++)
{
printf(" ");
}
//*,9.7.5.3.1
for (j = 0; j < (n - 1 - i) * 2-1; j++)
{
printf("*");
}
printf("\n");
}