#include <stdio.h>
#include <conio.h>
void main()
{
int i,j,k;
for(i=1;i<=4;i++) /*画菱形的上面4层*/
{
for(j=1;j<=(4-i)+5;j++) printf(" "); /*针对每一行缩紧相应的空格位置*/
/*就像如下图形*/
/*
line 1[i=1,j=1~8]: [][][][][][][][]
line 2[i=2,j=1~7]: [][][][][][][]
line 3[i=3,j=1~6]: [][][][][][]
line 4[i=4,j=1~5]: [][][][][]
注:[]表示一个空格,这样一来,上面四层每一行输出*的第一个位置确定了。
*/
for(k=1;k<=(2*i-1)+5;k++) /* 对于每一行输出相应数量的* */
{
/*下面我对于k<=(2*i-1)做一个说明*/
/*
line 1[i=1,k=6]: [][][][][][][]<><><><><> *
line 2[i=2,k=8]: [][][][][][][]<><><><><>***
line 3[i=3,k=10]:[][][][][][]<><><><><> *****
line 4[i=4,k=12]:[][][][][]<><><><><> *******
*/
/*
其中<>也表示空格,当k<=5时输出空格,说明每一层又要插入5个空格,用于剧中。
剩下的请看
k=6时, k-5=1(实际插入*个数1个,一下不作说明)
k=8时, k-5=3
k=10时,k-5=5
k=12时,k-5=7
这就是四层菱形构造
(我在注释中插入的空格为了排版需要,实际输出还是以[]和<>个数为准。)
*/
if(k<=5) printf(" ");
else printf("*");
}
printf("\n");
}
for(i=1;i<=3;i++)
{
/*输出下面三层菱形,不多说了,原理差不多,自己看看。*/
for(j=1;j<=i+5;j++) printf(" ");
for(k=1;k<=(7-2*i)+5;k++)
{
if(k<=5) printf(" ");
else printf("*");
}
printf("\n");
}
getch();
}
以上是详细说明。。。。