题解:P5730 【深基5.例10】显示屏
思路
打表即可,在数组里储存每一个数字的表示方式。
char cnt[10][5][3] =
{
{
'X','X','X',
'X','.','X',
'X','.','X',
'X','.','X',
'X','X','X',
},
{
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'.','.','X',
'X','X','X',
'X','.','.',
'X','X','X',
},
{
'X','X','X',
'.','.','X',
'X','X','X',
'.','.','X',
'X','X','X',
},
{
'X','.','X',
'X','.','X',
'X','X','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'X','.','.',
'X','X','X',
'.','.','X',
'X','X','X',
},
{
'X','X','X',
'X','.','.',
'X','X','X',
'X','.','X',
'X','X','X',
},
{
'X','X','X',
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'X','.','X',
'X','X','X',
'X','.','X',
'X','X','X',
},
{
'X','X','X',
'X','.','X',
'X','X','X',
'.','.','X',
'X','X','X',
}
};
可以发现不能一次性输出一个数,需要三重循环,第一层是行,第二层是遍历所有数字,第三层遍历列。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char cnt[10][5][3] =
{
{
'X','X','X',
'X','.','X',
'X','.','X',
'X','.','X',
'X','X','X',
},
{
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'.','.','X',
'X','X','X',
'X','.','.',
'X','X','X',
},
{
'X','X','X',
'.','.','X',
'X','X','X',
'.','.','X',
'X','X','X',
},
{
'X','.','X',
'X','.','X',
'X','X','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'X','.','.',
'X','X','X',
'.','.','X',
'X','X','X',
},
{
'X','X','X',
'X','.','.',
'X','X','X',
'X','.','X',
'X','X','X',
},
{
'X','X','X',
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
},
{
'X','X','X',
'X','.','X',
'X','X','X',
'X','.','X',
'X','X','X',
},
{
'X','X','X',
'X','.','X',
'X','X','X',
'.','.','X',
'X','X','X',
}
};
int main()
{
int n;
char num[110];
cin >> n;
scanf("%s", num);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < 3; k++) {
cout << cnt[int(num[j] - '0')][i][k];
}
if (j != n - 1) cout << ".";
}
cout << endl;
}
return 0;
}