字符串二维数组
2026-07-27 10:59:03
发布于:湖北
26阅读
0回复
0点赞
打印数字
这道题要求将数字0,1,2,3转换为特定的5×5网格图案表示。
数字图案分析
从题目给出的示例,我可以提取出每个数字的5行图案:
- 数字0:
.....
.***.
.***.
.***.
.....
- 数字1:
****.
****.
****.
****.
****.
- 数字2:
.....
****.
.....
****.
.....
- 数字3:
.....
****.
.....
****.
.....
解题思路
- 预先存储每个数字(0-3)的5行图案
- 读取输入数字字符串
- 按行输出:对于每一行(0-4),遍历输入的所有数字,拼接该行的图案
C++ 代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1="..... ****. ..... .....";
string s2=".***. ****. ****. ****.";
string s3=".***. ****. ..... .....";
string s4=".***. ****. .**** ****.";
string s5="..... ****. ..... .....";
string s[5]={s1,s2,s3,s4,s5};
string n;
cin>>n;
for(int i=0;i<5;i++){
string t="";
for(int j=0;j<n.size();j++){
if(n[j]=='0'){
t+=s[i].substr(0,5);
}
if(n[j]=='1'){
t+=s[i].substr(6,5);
}
if(n[j]=='2'){
t+=s[i].substr(12,5);
}
if(n[j]=='3'){
t+=s[i].substr(18,5);
}
}
cout<<t<<endl;
}
return 0;
}
}
样例验证
输入: 12230
输出过程:
- 第0行:
****.+.....+.....+.....+.....=****.................... - 第1行:
****.+****.+****.+****.+.***.=****.****.****.****..***. - 第2行:
****.+.....+.....+.....+.***.=****.................***. - 第3行:
****.+****.+****.+****.+.***.=****.****.****.****..***. - 第4行:
****.+.....+.....+.....+.....=****....................
与样例输出完全一致!✓
这里空空如也



有帮助,赞一个