题解 P5730 【深基5.例10】显示屏

_Freedom_

2020-02-04 21:40:14

Solution

# ~~打表的朋友们,举起你们的双手(大雾)~~ ------------ 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!