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<stdio.h>
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");
}