P5730 【深基5.例10】显示屏
题目描述
液晶屏上,每个阿拉伯数字都是可以显示成 3×5 的点阵的(其中 X 表示亮点,. 表示暗点)。现在给出数字位数(不超过 100)和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。
输入格式
无
输出格式
无
输入输出样例
输入 #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
注意每个数字之间都有一列间隔。
AC代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
string s, ans[5]; //五个数组ans[1-5]分别记录一个数字的五个行的构成情况
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '0')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "X.X"; ans[2] += "X.X"; ans[3] += "X.X";
}
if (s[i] == '1')
{
ans[0] += "..X"; ans[4] += "..X";
ans[1] += "..X"; ans[2] += "..X"; ans[3] += "..X";
}
if (s[i] == '2')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "..X"; ans[2] += "XXX"; ans[3] += "X..";
}
if (s[i] == '3')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "..X"; ans[2] += "XXX"; ans[3] += "..X";
}
if (s[i] == '4')
{
ans[0] += "X.X"; ans[4] += "..X";
ans[1] += "X.X"; ans[2] += "XXX"; ans[3] += "..X";
}
if (s[i] == '5')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "X.."; ans[2] += "XXX"; ans[3] += "..X";
}
if (s[i] == '6')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "X.."; ans[2] += "XXX"; ans[3] += "X.X";
}
if (s[i] == '7')
{
ans[0] += "XXX"; ans[4] += "..X";
ans[1] += "..X"; ans[2] += "..X"; ans[3] += "..X";
}
if (s[i] == '8')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "X.X"; ans[2] += "XXX"; ans[3] += "X.X";
}
if (s[i] == '9')
{
ans[0] += "XXX"; ans[4] += "XXX";
ans[1] += "X.X"; ans[2] += "XXX"; ans[3] += "..X";
}
if (i != s.size() - 1) //最后一个数字不用空列
{
ans[0] += "."; ans[4] += ".";
ans[1] += "."; ans[2] += "."; ans[3] += ".";
}
}
cout << ans[0] << endl << ans[1] << endl << ans[2] << endl << ans[3] << endl << ans[4] << endl;//五行逐一输出
return 0;
}
0
string用法详解:跳转见大佬