题解 P5730 【深基5.例10】显示屏
_Freedom_
2020-02-04 21:40:14
# ~~打表的朋友们,举起你们的双手(大雾)~~
------------
C++只能一行行地输出
而题目中要求我们输出的数字却由5行构成
**所以我们要把每个数字拆成 _一行一行_ 的来储存**
我们考虑开一个string的二维数组 s [ ] [ ]
**s [ i ] [ j ] 表示 “ i ” 这个数字的第 j 行**
- 如 s [ 0 ] [ 1 ] 为 “XXX”
由于所有数字的模样都是已知的,所以我们可以选择先~~打表~~**预处理**
详细见我这阅兵式代码:
```cpp
# include <iostream>
# include <cstdio>
using namespace std;
string s[10][6];
int a[110];
int main() {
//首先走来的是0号方阵,他们的脚步声铿锵有力,整齐划一。。。
s[0][1]="XXX";
s[0][2]="X.X";
s[0][3]="X.X";
s[0][4]="X.X";
s[0][5]="XXX";
//紧接着的是1号方阵。。。
s[1][1]="..X";
s[1][2]="..X";
s[1][3]="..X";
s[1][4]="..X";
s[1][5]="..X";
//然后是2号方阵。。。
s[2][1]="XXX";
s[2][2]="..X";
s[2][3]="XXX";
s[2][4]="X..";
s[2][5]="XXX";
//3。。。
s[3][1]="XXX";
s[3][2]="..X";
s[3][3]="XXX";
s[3][4]="..X";
s[3][5]="XXX";
//4。。。
s[4][1]="X.X";
s[4][2]="X.X";
s[4][3]="XXX";
s[4][4]="..X";
s[4][5]="..X";
//5。。。
s[5][1]="XXX";
s[5][2]="X..";
s[5][3]="XXX";
s[5][4]="..X";
s[5][5]="XXX";
//6。。。
s[6][1]="XXX";
s[6][2]="X..";
s[6][3]="XXX";
s[6][4]="X.X";
s[6][5]="XXX";
//7。。。
s[7][1]="XXX";
s[7][2]="..X";
s[7][3]="..X";
s[7][4]="..X";
s[7][5]="..X";
//8。。。
s[8][1]="XXX";
s[8][2]="X.X";
s[8][3]="XXX";
s[8][4]="X.X";
s[8][5]="XXX";
//9。。。
s[9][1]="XXX";
s[9][2]="X.X";
s[9][3]="XXX";
s[9][4]="..X";
s[9][5]="XXX";
int i,j,n;
scanf("%d",&n);
//"%1d"可以将黏在一起的数字一个个读入
for(i=1; i<=n; i++) scanf("%1d",&a[i]);
for(i=1; i<=5; i++) {
//第一个单独输出,为了好放中间的点
cout<<s[a[1]][i];
for(j=2; j<=n; j++) {
cout<<'.';
cout<<s[a[j]][i];
}
putchar('\n');
}
return 0;
}
```
求赞φ(>ω<*)
------------
# THANKS FOR READING!