【深基5.例10】显示屏
题目描述
液晶屏上,每个阿拉伯数字都是可以显示成 $3\times5$ 的点阵的(其中 X
表示亮点,.
表示暗点)。现在给出数字位数(不超过 $100$)和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。
输入格式
第一行输入一个正整数 $n$,表示数字的位数。
第二行输入一个长度为 $n$ 的自然数。
输出格式
输出五行,表示显示屏上的数字。
样例 #1
样例输入 #1
10
0123456789
样例输出 #1
XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX
X.X...X...X...X.X.X.X...X.....X.X.X.X.X
X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX
X.X...X.X.....X...X...X.X.X...X.X.X...X
XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX
提示
数据保证,$1 \leq n \leq 100$。
#include<bits/stdc++.h>
using namespace std;
int n,a,s;
//c打表数组ans答案数组
char c[10][5][4]=
{
"XXX",//0
"X.X",
"X.X",
"X.X",
"XXX",
"..X",//1
"..X",
"..X",
"..X",
"..X",
"XXX",//2
"..X",
"XXX",
"X..",
"XXX",
"XXX",//3
"..X",
"XXX",
"..X",
"XXX",
"X.X",//4
"X.X",
"XXX",
"..X",
"..X",
"XXX",//5
"X..",
"XXX",
"..X",
"XXX",
"XXX",//6
"X..",
"XXX",
"X.X",
"XXX",
"XXX",//7
"..X",
"..X",
"..X",
"..X",
"XXX",//8
"X.X",
"XXX",
"X.X",
"XXX",
"XXX",//9
"X.X",
"XXX",
"..X",
"XXX"
},ans[10][1000];
int main()
{
cin>>n;
while(n--)
{
scanf("%1d",&a);//每次读取一个数字
for(int i=0;i<5;i++)
{
for(int j=0;j<3;j++)
{
ans[i][s+j]=c[a][i][j];//复制
}
}
for(int i=0;i<5;i++) ans[i][s+3]='.';
s+=4;//s表示答案数组当前列数
}
for(int i=0;i<5;i++)
{
for(int j=0;j<s-1;j++)
{
printf("%c",ans[i][j]);
}
cout<<endl;
}
return 0;
}