数学方式求解;
首先菱形是一个上下对称的图形 对应数学上的正负数;
第一循环从负(x-1)/2 到 (x-1)/2 对应行数;
循环里面(x-1)/2 对应 出现 “ * ”的前一个位置 (这里是数学图像的对应,可以画一个图像推一下)
然后输出空格 再输出 “ * ”;
#include<stdio.h>
#include<math.h> //使用一个取绝对值运算
int main()
{
int i,j,x;
scanf("%d",&x);
for (i=-(x-1)/2;i<=(x-1)/2;i++)
{
for (j=1;j<=abs(i);j++)
{
printf(" ");
}
for (j=1;j<=x-abs(i)*2;j++) //这个x-abs(i)*2 是每行都会减少两个空格 所以乘2
{
printf("*");
}
printf("\n");
}
return 0;
}