1 条题解

  • 0
    @ 2026-8-18 11:50:42

    思路

    第 i 行(从 1 数起)由三段拼成:

    • 前导空格:n - i 个;
    • 上升段:A B C ... 共 i 个字母,第 j 个是 'A' + j - 1;
    • 下降段:接着往回 ... C B A,共 i - 1 个字母。

    用一个双重循环就能画出来。

    代码

    #include <stdio.h>
    
    int main() {
        int n;
        scanf("%d", &n);
    
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j < n - i; j++) printf(" ");  // 空格
            for (int j = 0; j < i; j++)     printf("%c", 'A' + j);        // 上升
            for (int j = i - 2; j >= 0; j--) printf("%c", 'A' + j);       // 下降
            printf("\n");
        }
        return 0;
    }
    

    易错点

    • 下降段的起点是 i - 2(比上升段最后一个少 1),否则中间字母会重复两次。
    • 行末不要多打空格,直接换行。
    • 1

    信息

    ID
    17
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者