C语言编程题,绘制简单的树形图可以使用不同的方法结合C语言和ASCII字符进行实现。直接输出构成树的ASCII字符。可以用|表示树干,*表示树冠。可以使用简单的 printf 打印多行输出,也可以使用循环来绘制树,还可以使用二维数组来存储和打印树等方法。

1、使用简单的 printf 打印多行输出

直接输出构成树的ASCII字符。我们可以用|表示树干,*表示树冠。

#include <stdio.h>

int main() {
    printf("    *\n");
    printf("   ***\n");
    printf("  *****\n");
    printf(" *******\n");
    printf("    |\n");
    printf("    |\n");
    return 0;
}

2、使用循环来绘制树

利用循环可以更灵活地控制树的高度和宽度。

#include <stdio.h>

int main() {
    int height = 5;
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < height - i - 1; j++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = 0; i < 2; i++) {
        printf("    |\n");
    }
    return 0;
}

3、使用函数进行分步绘制

将绘制树的代码封装成函数,可以提高代码的可读性和复用性。

#include <stdio.h>

int main() {
    int height = 5;
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < height - i - 1; j++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = 0; i < 2; i++) {
        printf("    |\n");
    }
    return 0;
}

4、使用二维数组来存储和打印树

将树的每一行存储在一个字符数组中,然后逐行输出。

#include <stdio.h>
#include <string.h>

int main() {
    char tree[5][11] = {
        "    *",
        "   ***",
        "  *****",
        " *******",
        "    |"
    };
    for (int i = 0; i < 5; i++) {
        printf("%s\n", tree[i]);
    }
    printf("    |\n");
    return 0;
}

5、递归绘制树

根据当前的高度,输出相应数量的星号。输出一个竖线。递归调用自身,绘制两个更小的子树。

#include <stdio.h>

void drawTreeCrown(int spaces, int stars, int height) {
    if (height == 0) {
        return;  // 递归结束条件
    }

    // 输出前导空格
    for (int i = 0; i < spaces; i++) {
        printf(" ");
    }

    // 输出星号
    for (int i = 0; i < stars; i++) {
        printf("*");
    }
    printf("\n");

    // 递归调用,减少空格数,增加星号数
    drawTreeCrown(spaces - 1, stars + 2, height - 1);
}

void drawTreeTrunk(int spaces, int height) {
    // 绘制树干
    for (int i = 0; i < height; i++) {
        // 输出空格,让树干居中
        for (int j = 0; j < spaces; j++) {
            printf(" ");
        }
        printf("|\n");
    }
}

int main() {
    int height = 5;  // 树冠的高度

    // 绘制树冠,起始空格数为高度减1,起始星号数为1
    drawTreeCrown(height - 1, 1, height);

    // 绘制树干,树干的高度设置为2
    drawTreeTrunk(height - 1, 2);

    return 0;
}

推荐文档

相关文档

大家感兴趣的内容

随机列表