(复制出错,格式有问题。不要描述部分了,看输入样例就能理解题意)
输入格式
输入两个整数 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]=
{
{{'-',' '},{'|','|'},{' ',' '},{'|','|'},{'-',' '}},
{{' ',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},
{{'-',' '},{' ','|'},{'-',' '},{'|',' '},{'-',' '}},
{{'-',' '},{' ','|'},{'-',' '},{' ','|'},{'-',' '}},
{{' ',' '},{'|','|'},{'-',' '},{' ','|'},{' ',' '}},
{{'-',' '},{'|',' '},{'-',' '},{' ','|'},{'-',' '}},
{{'-',' '},{'|',' '},{'-',' '},{'|','|'},{'-',' '}},
{{'-',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},
{{'-',' '},{'|','|'},{'-',' '},{'|','|'},{'-',' '}},
{{'-',' '},{'|','|'},{'-',' '},{' ','|'},{'-',' '}}
};
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;
}
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数组就打了好久;