0


C 练习实例23

题目:打印出如下图案(菱形)。






*


题目分析:

先打印前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
请按任意键继续. . .
标签: c语言

本文转载自: https://blog.csdn.net/s1ms1mpleple/article/details/135454228
版权归原作者 计算机学无涯 所有, 如有侵权,请联系我们删除。

“C 练习实例23”的评论:

还没有评论