C语言学习笔记——循环嵌套——输出任意阶数空心菱形

C语言学习笔记——循环嵌套——输出任意阶数空心菱形

以4阶空心菱形为例,输出效果如下:

L1  000*
L2  00*0*
L3  0*000*
L4  *00000*
L5  0*000*
L6  00*0*
L7  000*
空格由0代替

1.图形分析:

前三行与后三行镜像,前置空格3,2,1递减,中间空格1,3,5递增。

2.循环分析:

L1  123*    x=0 y=1to3 z=0   
L2  12*1*   x=1 y=1to2 z=1
L3  1*123*  x=2 y=1    z=3
L4  *12345* x=3 y=0    z=5

x控制换行,y控制前置空格,z控制中间空格。
通过增加判断条件,输出*。

3.代码

#define JS 4  //定义阶数
#include
void main()
{
    int x,y,z;
    for(x=0;x<=JS-1;x++)//x=0to3换行4次
        {
            for(y=x;y<=JS-2;y++)//x=0,y=0to2,输出3次;x=1,y=0to1,输出2次;x=2,y=2,输出1次;x=3,y不输出
                {
                    printf(" ");            
                } 
            printf("*");       
            for(z=2*x-1;z>=1;z--)//x=0,z=-1,不输出;x=1,z=1,输出1次;x=2,z=3,输出3次;x=3,z=5,输出5次
                {
                    printf(" "); 
                }
            if(x>0{
                    printf("*");    
                }    
            if(x<JS-1)
                {
                    printf("\n"); 
                }
              
        }
        printf("\n");
//反向输出
       for(x=JS-2;x>=0;x--)//x=0to2,换行3次
        {
            for(y=x;y<=JS-2;y++)
                {
                    printf(" ");            
                } 
            printf("*");       
            for(z=2*x-1;z>=1;z--)
                {
                    printf(" "); 
                }
            if(x>0)
                {
                    printf("*");    
                }    
            if(x<JS)
                {
                    printf("\n"); 
                }
              
        }
         
    system("pause");
}    
   

你可能感兴趣的:(c语言)