题目:打印出如下图案(菱形)。
? ?*
? ***
?*****
*******
?*****
? ***
? ?*
题目分析:
先打印前4行,因为是递增关系。
第0行:打印3个空格,1个*
第1行:打印2个空格,3个*
第2行:打印1个空格,5个*
第3行:打印0个空格,7个*
不难发现规律:(设行序列为 i )
空格数是行序列以3的补码,
第 i 行打印的空格数 =3 - i
第 i 行打印 * 的个数 = 2 * i?+ 1
后打印后三行,因为是递减规律。(行序号自己定,就是个循环标号,怎么方便怎么来,无所谓)
i = 2时,第 2?行 空格数 = 1,* 数 = 5
i = 1时,第 1?行 空格数 = 2,* 数 = 3
i = 0时,第 0?行 空格数 = 3,* 数 = 1
规律:空格数 = 3 - i? ?,? * 数 = 2 * i + 1
代码:
#include <stdio.h>
int main()
{
int i,j,k;
//打印前4行
for(i=0;i<4;i++){ //最外层循环控制行,打印换行符
for(j=0;j<3-i;j++){ //打印空格,i(行序号)=0时,循环打印3次空格
printf(" "); // i(行序号)=1时,循环打印2次空格
} // i(行序号)=2时,循环打印1次空格
for(k=0;k<2*i+1;k++){//打印 * ,i(行序号)=0时,循环打印1次 *
printf("*"); // i(行序号)=1时,循环打印3次 *
} // i(行序号)=2时,循环打印5次 *
printf("\n");
}
//打印行3行
for(i=2;i>=0;i--){
for(j=0;j<3-i;j++){ //打印空格,i(行序号)=2时,循环打印1次空格
printf(" "); // i(行序号)=1时,循环打印2次空格
} // i(行序号)=0时,循环打印3次空格
for(k=0;k<2*i+1;k++){//打印 * ,i(行序号)=2时,循环打印5次 *
printf("*"); // i(行序号)=1时,循环打印3次 *
} // i(行序号)=2时,循环打印5次 *
printf("\n");
}
return 0;
}
结果:?
*
***
*****
*******
*****
***
*
--------------------------------
Process exited after 0.2859 seconds with return value 0
请按任意键继续. . .