题目:打印出如下图案(菱形)。
*
***
*****
*******
*****
***
*
题目分析:
先打印前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
代码:
#includeint 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 请按任意键继续. . .
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章