【GESP】C++三级练习 luogu-B2109 统计数字字符个数

### C++ 实现打印数字的最简化算法 在解决 GESP202412 三级考试中的打印数字问题时,可以通过构建二维字符数组来存储每个数字的图案表示形式。以下是基于此方法的一种简洁实现方式。 #### 思路解析 为了实现数字的可视化输出,可以预先定义一个映射表 `patterns` 来保存每一位数字(0 到 9)的 ASCII 艺术表示形式。通过读取输入字符串并逐位匹配到相应的模式,最终拼接成完整的输出结果[^3]。 下面是具体的代码实现: ```cpp #include <iostream> #include <vector> using namespace std; int main() { // 定义数字 0~9 的图案表示 (每一行为一维向量, 每个数字为二维向量) vector<vector<string>> patterns = {{"****", "**..", "*...*", "..*.", "...."}, {"...", ".***", "...*", "...*", "...*"}, {"****", "...*", "****", "*....", "****"}, {"****", "...*", "****", "...*", "****"}, {"*.*.", "***.", "...*", "****", "...*"}, {"****", "*....", "****", "...*", "****"}, {"****", "*....", "****", "*.***", "****"}, {"****", "...*", "...*", "...*", "...*"}, {"****", "*.***", "****", "*.***", "****"}, {"****", "*.***", "****", "...*", "****"}}; string num; cin >> num; // 输入要显示的数字串 // 遍历每行输出 for (int row = 0; row < 5; ++row) { // 假设每个数字有五行 for (char c : num) { // 对于每一个字符 int digit = c - '0'; // 将字符转换为整数索引 cout << patterns[digit][row] << " "; // 输出对应行的内容 } cout << endl; // 结束当前行 } return 0; } ``` #### 关键点说明 - **预定义模式**:上述代码中使用了一个嵌套矢量 `patterns` 存储了从 0 到 9 各自的五行列图案。这种设计使得程序逻辑清晰且易于扩展。 - **动态输入处理**:对于任意长度的数字字符串,只需遍历其每位字符即可完成整个图形化展示过程。 #### 示例运行 假设输入为 `12230`,则输出如下: ``` ... **** .... ... **** .*** *... *. .*. ***. ...* *... ..*. .*... ...* *... *. ... *... ...* **** .... ... ... ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值