思路:
需要注意细节:
打表0到9的数组要开成[10][5][4],开成[10][6][4]又没多给空白行或[10][5][3]]的都会炸。([6][4]炸是因为少一行,[5][3]炸是因为字符串末尾要有
'\0'
)
AC代码:
#include<iostream>
using namespace std;
char c[10][5][4]= //打表数组,坑1
{
"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"
};
char ans[5][1000];
int main()
{
int n,pos=0;
cin >> n;
for(int i=0;i<n;i++)
{
int x;
scanf("%1d",&x);//注意:“%1d "表示只读一个数
for(int i=0;i<5;i++)//行
{
for(int j=0;j<3;j++)//列
{
ans[i][pos+j] = c[x][i][j];
}
}
//注意每个图像后面有一列"."
for(int i=0;i<5;i++) ans[i][pos+3] = '.';
pos += 4;//挪动4位
}
//输出
for(int i=0;i<5;i++)
{
for(int j=0;j<pos-1;j++)
{
cout << ans[i][j];
}
cout << endl;
}
return 0;
}