1. 数字输入要用字符串输入;2. 最后一个数字打印后还有一个空行。
#include <cstdio>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
char LCD[10][5][3]={{{' ','-',' '},{'|',' ','|'},{' ',' ',' '},{'|',' ','|'},{' ','-',' '}},//0
{{' ',' ',' '},{' ',' ','|'},{' ',' ',' '},{' ',' ','|'},{' ',' ',' '}},//1
{{' ','-',' '},{' ',' ','|'},{' ','-',' '},{'|',' ',' '},{' ','-',' '}},//2
{{' ','-',' '},{' ',' ','|'},{' ','-',' '},{' ',' ','|'},{' ','-',' '}},//3
{{' ',' ',' '},{'|',' ','|'},{' ','-',' '},{' ',' ','|'},{' ',' ',' '}},//4
{{' ','-',' '},{'|',' ',' '},{' ','-',' '},{' ',' ','|'},{' ','-',' '}},//5
{{' ','-',' '},{'|',' ',' '},{' ','-',' '},{'|',' ','|'},{' ','-',' '}},//6
{{' ','-',' '},{' ',' ','|'},{' ',' ',' '},{' ',' ','|'},{' ',' ',' '}},//7
{{' ','-',' '},{'|',' ','|'},{' ','-',' '},{'|',' ','|'},{' ','-',' '}},//8
{{' ','-',' '},{'|',' ','|'},{' ','-',' '},{' ',' ','|'},{' ','-',' '}},};//9};
char OutLCD[23][104];
void fillNum(int s,int n,int index)
{
int xstart=(s+3)*index;
int xend=xstart+s+2;
int row=2*s+3;
int newI,newJ;
for(int i=0;i<row;i++)
{
for(int j=xstart;j<xend;j++)
{
newI=i;
newJ=j-xstart;
if(1<=newJ && newJ<=s)newJ=1;
else if(newJ==s+1) newJ=2;
if(1<=i && i<=s) newI=1;
else if(i==s+1) newI=2;
else if(s+2<=i && i<=2*s+1) newI=3;
else if(i==2*s+2) newI=4;
OutLCD[i][j]=LCD[n][newI][newJ];
}
OutLCD[i][xend]=' ';
}
}
void solve(int s,string n)
{
vector<int> num;
int Nsize=0;
int row,col;
for(int i=0;i<n.length();i++)
{
num.push_back(n[i]-'0');
}
Nsize=num.size();
for(int i=0;i<Nsize;i++)
{
fillNum(s,num[i],i);
}
row=2*s+3;
col=Nsize*(s+3)-1;
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
printf("%c",OutLCD[i][j]);
}
printf("\n");
}
}
int main()
{
int s;
string n;
while(1)
{
scanf("%d",&s);
cin>>n;
if(s==0)
break;
solve(s,n);
printf("\n");
}
return 0;
}