c语言打印菱形怎么实现呢?
打印的菱形如下图所示
可以看到我输入7,程序打印出来一个最多为第七行的菱形,那么怎么实现呢?
将菱形分为上下两部分,其中星号最多的归为上半部分
上部分;
总行数 h
1.先打印空格,从图中可以发现:
左侧空格数由(h -1)每次减少一个,到0为止。(右侧同理)
2.后打印*,从图中可以发现:
*的个数从1开始每次增加2个,也就是 (2*i+1)
代码如下:
int h = 0;
scanf("%d", &h);
int i = 0;
for (i = 0; i < h; i++)
{
int j = 0;
//打印空格
for (j = 0; j < h - 1 -i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
下半部分同理
下部分;
总行数 h-1
1.先打印空格,左侧空格数从1开始每次增加1个,直到 (h-1) 个停止打印(右侧同理)
2.后打印*,*的个数从 2*(line-1-i)-1 开始,每次减2,直到1停止打印
for (i = 0; i < h - 1; i++)
{
int j = 0;
//打印空格
for (j = 0; j <= i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * (h - 1 - i)-1; j++)
{
printf("*");
}
printf("\n");
}
将两部分代码结合便得到了整个代码
#include<stdio.h>
int main()
{
int h = 0;
scanf("%d", &h);
//上部分
int i = 0;
for (i = 0; i < h; i++)
{
int j = 0;
//打印空格
for (j = 0; j < h - 1 -i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//下部分
for (i = 0; i < h- 1; i++)
{
int j = 0;
//打印空格
for (j = 0; j < i+1; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * (h - 1 - i)-1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}