设计思路:确定一个二维坐标x轴,y轴,菱形的“*”关于y轴对称,只需写出y轴右半平面的程序以此类推,完成要求。
通过找出“*”的x坐标与y坐标的关系,依次改变y的值得到x值,循环输出"*"和“ ”,完成编程。
#include<stdio.h>
#include<math.h>
int main()
{
int y,x,m,h;
printf("请输入菱形行数:");
scanf("%d",&h);
for(y=h/2;y>=-(h/2);y--) /*纵坐标从h/2 变化到-(h/2),进行循环体*/
{
m=(h/2-fabs(y)); /*相对坐标*/
for(x=0;x<30-m;x++) /*横坐标*/
{
printf(" ") ;
}
printf("*");
if(m==0) /*y轴右半平面的程序*/
{printf("\n");
continue;
}
else
{
for(;x<29+m;x++) /*注意此时x<29+m,当一个字节地址 被占用时,系统会紧接着下一个地址输出*/
{
printf(" ")
}
}
printf("*");
printf("\n")
}
return 0;
}