题解:洛谷 B2005 字符三角形
【题目来源】
【题目描述】
给定一个字符,用它构造一个底边长 5 个字符,高 3 个字符的等腰字符三角形。
【输入】
输入只有一行,包含一个字符。
【输出】
该字符构成的等腰三角形,底边长 5 个字符,高 3 个字符。
【输入样例】
*
【输出样例】
*
***
*****
【核心思想】
-
问题分析:给定一个字符 \(c\),要求用它构造一个底边长为 5、高为 3 的等腰字符三角形。三角形三行分别为 1 个、3 个、5 个字符,每行居中排列。
-
算法选择:
- 直接输出:三角形尺寸固定且极小,根据输入字符直接拼接输出三行即可
-
关键步骤:
- 读入字符:
cin >> c读取输入字符 - 逐行输出:
- 第 1 行:
" "+c(2 个空格 + 1 个字符) - 第 2 行:
" "+c+c+c(1 个空格 + 3 个字符) - 第 3 行:
c+c+c+c+c(5 个字符)
- 第 1 行:
- 换行控制:第 1、2 行末尾用
endl换行,第 3 行末尾无换行
- 读入字符:
-
时间/空间复杂度:
- 时间复杂度:\(O(1)\),固定 3 行输出
- 空间复杂度:\(O(1)\),仅需一个字符变量
-
固定图案输出的核心思想:
- 等差数列规律:每行字符数构成等差数列 1, 3, 5,公差为 2
- 空格对称递减:前置空格数从 2 递减到 0,与字符数增加保持居中
- 变量复用:输入字符 \(c\) 在三行中被重复使用,无需存储多行内容
- 适用于固定尺寸图形输出、字符格式化类入门问题
【算法标签】
入门 #语法基础
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 主函数 - 程序入口
* @return 程序执行状态码(0表示成功)
*/
int main()
{
char c; // 定义一个字符变量c
cin >> c; // 从标准输入读取一个字符赋值给c
// 输出字符金字塔图案
cout << " " << c << endl; // 第一行:2个空格加1个字符
cout << " " << c << c << c << endl; // 第二行:1个空格加3个字符
cout << c << c << c << c << c; // 第三行:5个字符
return 0; // 返回程序执行成功状态码
}
【运行结果】
*
*
***
*****
浙公网安备 33010602011771号