1 条题解
-
0
这是一道字符图案输出题,核心是按规则打印对角线长为5的倾斜菱形,需分“上半部分(含中间行)”和“下半部分”分别控制空格与字符数量。
解题思路
对角线长为5的菱形共5行,结构分为两部分:
- 上半部分(含中间行):共3行,每行字符数从1递增到5,空格数从2递减到0。
- 下半部分:共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; }代码说明
- 输入处理:读取用户输入的字符
c。 - 上半部分打印:
- 循环3次(对应3行),每次先打印
2 - i个空格(实现左对齐的缩进),再打印2*i + 1个字符(字符数递增)。
- 循环3次(对应3行),每次先打印
- 下半部分打印:
- 循环2次(对应2行),每次先打印
i个空格(缩进递增),再打印5 - 2*i个字符(字符数递减)。
- 循环2次(对应2行),每次先打印
示例验证
输入字符
*时,输出与样例一致:* *** ***** *** *
信息
- ID
- 3175
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 23
- 已通过
- 4
- 上传者