按 1、3、5、3、1 的字符数和对应前导空格直接输出菱形。
OJ: noi_openjudge
题目 ID: ch0101-09
难度:入门
标签:输出字符串python
日期: 2026-07-30 23:01
题意
给定一个字符,输出对角线长度为 5 的菱形。五行字符数依次为 1、3、5、3、1,前导空格数依次为 2、1、0、1、2。
思路
菱形可以看成字符三角形先扩张再收缩。由于只有固定 5 行,直接按行输出最清楚:使用 character * 3 和 character * 5 产生对应宽度,再用 f-string 放入前导空格。
每行末尾不拼接额外空格,避免字符画题常见的格式错误。
代码
Python代码
python
character = input()
print(f" {character}")
print(f" {character * 3}")
print(character * 5)
print(f" {character * 3}")
print(f" {character}")C++代码
这里保留原有的 C++ 参考实现。
cpp
#include <cstdio>
int main(){
char c;
scanf("%c",&c);
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf("%c%c%c%c%c\n",c,c,c,c,c);
printf(" %c%c%c\n",c,c,c);
printf(" %c\n",c);
return 0;
}复杂度
输出规模固定,时间复杂度为
总结
对于固定大小字符画,先写出每行的空格数和字符数,再逐行输出,比用复杂循环更不容易出错。