(复制出错,格式有问题。不要描述部分了,看输入样例就能理解题意)
输入格式
输入两个整数 k,n(1≤k≤10,0≤n≤99999999),分别表达放大的倍数和需要输出的数字。
输出格式
输出数码管显示的数字,数字每一位之间用一列空格隔开。
样例输入1
2 12345
样例输出1
– – –
| | | | | |
| | | | | |
– – – –
| | | | |
| | | | |
– – –
样例输入2
3 67890
样例输出2
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
#include<bits/stdc++.h>
using namespace std;
char num[10][5][2]=
{
{{'-',' '},{'|','|'},{' ',' '},{'|','|'},{'-',' '}},//数字0的第一行,第二行,第三行……
{{' ',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},//数字1的第一行,第二行,第三行……
{{'-',' '},{' ','|'},{'-',' '},{'|',' '},{'-',' '}},//2
{{'-',' '},{' ','|'},{'-',' '},{' ','|'},{'-',' '}},//3
{{' ',' '},{'|','|'},{'-',' '},{' ','|'},{' ',' '}},//4
{{'-',' '},{'|',' '},{'-',' '},{' ','|'},{'-',' '}},//5
{{'-',' '},{'|',' '},{'-',' '},{'|','|'},{'-',' '}},//6
{{'-',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},//7
{{'-',' '},{'|','|'},{'-',' '},{'|','|'},{'-',' '}},//8
{{'-',' '},{'|','|'},{'-',' '},{' ','|'},{'-',' '}}//9
};
void out(int k,char t)
{
for(int i=0;i<k;i++)
cout<<t;
}//实现重复输入;
int main()
{
int s,times,m,i=0,a[10]={0},r=0;
cin>>times>>m;
if(m==0)
{
a[0]=0;
i=1;
}//小心bug,当m=0;
while(m>0){
s=m%10;
m=m/10;
a[i]=s;
i++;
}
i--;
for(int j=0;j<=i/2;j++)
swap(a[j],a[i-j]);//交换位置;
for(int j=0;j<5;j++)
{
if(j%2==1)
r=times;
else
r=1;//次数;
for(int p=0;p<r;p++)
{
for(int k=0;k<i+1;k++)
{
if(j%2==0)
{
cout<<' ';
out(times,num[a[k]][j][0]);
cout<<' ';
if(k!=i)
cout<<' ';//去你的格式错误;
continue;
}
else
{
cout<<num[a[k]][j][0];
out(times,' ');
cout<<num[a[k]][j][1];
if(k!=i)
cout<<' ';
}
}
cout<<endl;
}
}
return 0;
}
本题看着脑壳痛,确实很恶心,光是那个num数组就打了好久;