首先,可以将菱形分成上下两部分
上部分; 总行数 line 1.先打印空格,从图中可以发现: 左侧空格数由(line -1)每次减少一个,到0为止。(右侧同理) 2.后打印*,从图中可以发现: *的个数从1开始每次增加2个 -> (2*i+1)
代码如下
int line = 0;
scanf("%d", &line);
//上部分
int i = 0;
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");
}
下部分; 总行数 line-1 1.先打印空格,左侧空格数从1开始每次增加1个,直到 (line-1) 个停止打印(右侧同理) 2.后打印*,*的个数从 2*(line-1-i)-1 开始,每次减2,直到1停止打印
代码如下
//下部分
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");
}
完整代码
#includeint main() { int line = 0; scanf("%d", &line); //上部分 int i = 0; 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+1; j++) { printf(" "); } //打印* for (j = 0; j < 2 * (line - 1 - i)-1; j++) { printf("*"); } printf("n"); } return 0; }



