在这篇博客中,我们将详细解析一个用C语言编写的程序,该程序旨在生成具有对称美感的菱形图案。用户可以通过输入指定的长度,程序将输出相应大小的菱形。
注:代码中的注释已经非常详细,也有举例,慢慢理解
// 菱形
#include <stdio.h>
int main() {
int len = 0;
scanf("%d", &len);
// 上半部分
for (int i = 0; i < len; i++) {
// 打印空格
for (int j = 0; j < len - i - 1; j++) { // -1 -- 由于最后一行没有空格所以减1, -i -- 因为空格是逐个减少
printf(" ");
}
// 打印星号
for (int j = 0; j < 2 * i + 1; j++) { // (1个* == 2*0+1=1 2个* == 2*1+1=3)->算数规律
printf("*");
}
printf("\n"); // 换行
}
// 下半部分
for (int i = 0; i < len - 1; i++) { // len-1 => 下半部分少一行 所以减1
// 打印空格
for (int j = 0; j <= i; j++) { // j <= i => 根据i的增长来增加空格
printf(" ");
}
// 打印星号
for (int j = 0; j < 2 * (len - 1 - i) - 1; j++) { // 2 * (len -1 - i) - 1 => 11(2*6-1) 9(2*5-1) 7(2*4-1), len -1 - i => (8-1-0=7) (8-1-1=6) (8-1-2=5)
printf("*");
}
printf("\n"); // 换行
}
return 0;
}
用户输入:8
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*
????????本程序通过嵌套循环结构分别绘制菱形的上半部分和下半部分。在上半部分中,随着行数增加,空格逐行减少而星号逐行增加;而在下半部分中,空格逐行增加,星号逐行减少,最终形成对称的菱形图案。通过精心设计循环条件和内部逻辑,使得输出结果满足菱形的形状特征。