C语言菱形图案生成程序详细解析

1. 介绍

在这篇博客中,我们将详细解析一个用C语言编写的程序,该程序旨在生成具有对称美感的菱形图案。用户可以通过输入指定的长度,程序将输出相应大小的菱形。

2. 代码

注:代码中的注释已经非常详细,也有举例,慢慢理解

// 菱形
#include 

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

输出

       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

逻辑总结

        本程序通过嵌套循环结构分别绘制菱形的上半部分和下半部分。在上半部分中,随着行数增加,空格逐行减少而星号逐行增加;而在下半部分中,空格逐行增加,星号逐行减少,最终形成对称的菱形图案。通过精心设计循环条件和内部逻辑,使得输出结果满足菱形的形状特征。

你可能感兴趣的:(算法,数据结构)