首页 > 编程笔记 > C语言笔记

打印空心菱形C语言代码(附带解析)

空心菱形是一种常见的图案打印练习,它不仅能帮助初学者掌握循环和条件语句的使用,还能锻炼逻辑思维能力。
 

要打印空心菱形,我们需要分析菱形的结构。一个空心菱形可以分为上半部分和下半部分:


我们只需要在边缘打印星号,内部打印空格即可形成空心效果。
 

下面是实现空心菱形打印的C语言代码:

#include <stdio.h>

int main() {
    int n, i, j, space;
    printf("请输入菱形的大小(奇数): ");
    scanf("%d", &n);

    // 打印上半部分
    for (i = 1; i <= n; i += 2) {
        // 打印左侧空格
        for (space = 0; space < (n - i) / 2; space++) {
            printf(" ");
        }
        // 打印星号和空格
        for (j = 1; j <= i; j++) {
            if (j == 1 || j == i) {
                printf("*");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }

    // 打印下半部分
    for (i = n - 2; i >= 1; i -= 2) {
        // 打印左侧空格
        for (space = 0; space < (n - i) / 2; space++) {
            printf(" ");
        }
        // 打印星号和空格
        for (j = 1; j <= i; j++) {
            if (j == 1 || j == i) {
                printf("*");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }

    return 0;
}

让我们逐步解析这段代码:
 

程序开始时,我们声明了所需的变量。n 表示菱形的大小,i 和 j 用于循环控制,space 用于打印左侧空格。程序会提示用户输入菱形的大小,并通过 scanf 函数读取输入值。
 

代码的核心部分分为两个主要循环:一个用于打印上半部分,另一个用于打印下半部分。每个主循环中又包含两个内部循环:一个用于打印左侧空格,另一个用于打印星号和内部空格。
 

在上半部分的循环中,i 从 1 开始,每次增加 2,直到达到 n。这是因为菱形每行的星号数量都是奇数。对于每一行,我们先打印左侧的空格,数量为 (n - i) / 2。然后,我们打印星号和空格,只在每行的开始和结束位置打印星号,其余位置打印空格,这样就形成了空心效果。
 

下半部分的循环与上半部分类似,但 i 从 n - 2 开始,每次减少 2,直到达到 1。这样可以确保下半部分比上半部分少一行,避免在中间重复打印最宽的一行。
 

运行这段代码,并输入一个奇数作为菱形的大小,例如输入 7,会得到如下输出结果:

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

这个程序展示了如何使用嵌套循环和条件语句来创建复杂的图案。通过调整循环的起始值、结束条件和步进值,我们可以控制图案的大小和形状。通过在特定位置打印星号或空格,我们可以创建出各种有趣的图案。
 

值得注意的是,这个程序假设用户输入的是奇数。如果想要处理偶数输入,我们需要稍微修改代码逻辑。此外,我们还可以添加输入验证,确保用户输入的是有效的正奇数,这样可以提高程序的健壮性。
 

通过实践这样的编程练习,初学者可以加深对循环结构、条件语句和程序逻辑的理解。同时,这也是一个很好的机会来练习代码的组织和注释,提高代码的可读性和可维护性。随着经验的积累,你将能够创建更复杂、更有趣的图案和程序。

相关文章