1 条题解

  • 0
    @ 2025-12-21 11:21:53

    这是一道字符图案输出题,核心是按规则打印对角线长为5的倾斜菱形,需分“上半部分(含中间行)”和“下半部分”分别控制空格与字符数量。

    解题思路

    对角线长为5的菱形共5行,结构分为两部分:

    1. 上半部分(含中间行):共3行,每行字符数从1递增到5,空格数从2递减到0。
    2. 下半部分:共2行,每行字符数从3递减到1,空格数从1递增到2。

    C++ 代码实现

    #include <iostream>
    using namespace std;
    
    int main() {
        char c;
        cin >> c;
        
        // 打印上半部分(含中间行):3行,字符数1→3→5,空格数2→1→0
        for (int i = 0; i < 3; ++i) {
            // 打印空格
            for (int j = 0; j < 2 - i; ++j) {
                cout << " ";
            }
            // 打印字符
            for (int j = 0; j < 2 * i + 1; ++j) {
                cout << c;
            }
            cout << endl;
        }
        
        // 打印下半部分:2行,字符数3→1,空格数1→2
        for (int i = 1; i < 3; ++i) {
            // 打印空格
            for (int j = 0; j < i; ++j) {
                cout << " ";
            }
            // 打印字符
            for (int j = 0; j < 5 - 2 * i; ++j) {
                cout << c;
            }
            cout << endl;
        }
        
        return 0;
    }
    

    代码说明

    1. 输入处理:读取用户输入的字符c
    2. 上半部分打印
      • 循环3次(对应3行),每次先打印2 - i个空格(实现左对齐的缩进),再打印2*i + 1个字符(字符数递增)。
    3. 下半部分打印
      • 循环2次(对应2行),每次先打印i个空格(缩进递增),再打印5 - 2*i个字符(字符数递减)。

    示例验证

    输入字符*时,输出与样例一致:

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

    信息

    ID
    3175
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    23
    已通过
    4
    上传者