问题描述
在屏幕中打印以下图形
解决思路
观察规律可以看出,这个菱形上下两部分关于中间一行轴对称,中间的轴(line)作为突破口 上半部分:每一行由2*i+1个号组成,(i从0开始),为了视觉感明显,每一行号左右有line-i-1个空格 下半部分:每一行由2*(line-i-1)-1个*号组成(i从0开始),*号左右有i+1个空格
代码实现
#include<stdio.h>
int main()
{
int line = 0;
int i = 0;
scanf("%d", &line);
for (i = 0; i < line; i++)
{
int j = 0;
for (j = 0; j < line - 1 - i; j++)
{
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
for (i = 0; i < line - 1; i++)
{
int j = 0;
for (j = 0; j <= i; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
结果输出
只需输入最中间的行号,具有普遍性
|