算法思路:就是先用一个for循环控制行数,再寻找每行空格数、*的数分别与该行的对应关系,分别再用2个for循环来控制。
注意:
(1)先输出上半部分,再输出下半部分(算上中间那行)
(2)记得i变化一次,就要输出一次换行符
(3)将输入菱形行数设置成可以灵活变化的
#include <stdio.h>
int main()
{
int line=0,i=0,j=0;
scanf("%d",&line);
for(i=0;i<line;i++) //上半部分,不算中间行
{
for(j=0;j<line-i;j++)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("*");
}
printf("\n"); //每换一次i,换一次行
}
for(i=line;i>=0;i--) //下半部分,算中间行
{
for(j=0;j<line-i;j++)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}