百练:2745:显示器
描述
你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
输入
输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。
如果某行输入包括两个0,表示输入结束。这行不需要处理。
输出
显示的方式是:用s个'-'表示一个水平线段,用s个'|'表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。
样例输入
2 12345 3 67890 0 0
样例输出
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | || | | | |-- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | |--- --- --- | | | | | | | | | | | | | | | | | | | | | | | |--- --- --- ---
提示
数字(digit)指的是0,或者1,或者2……或者9。
数(number)由一个或者多个数字组成。
观察每个数字的特点(显示特点),用选择法打印出来
#include
char str1[10];
char str2[1005][10];
int num[1005];
using namespace std;
int main()
{
int i,j,k,s,t=0;
while(1){
scanf("%d%s",&num[t],str2[t]);
if(num[t]==0)
break;
t++;
}
for(int x=0;x
s=num[x];
strcpy(str1,str2[x]);
for(i=0;i<2*s+3;i++){
for(j=0;str1[j];j++){
for(k=0;k<2+s;k++){
if(i==0&&k>0&&k<=s){
if(str1[j]=='1'||str1[j]=='4')
printf(" ");
else
printf("-");}
else if(k>0&&k<=s&&i==s+1){
if(str1[j]=='0'||str1[j]=='7'||str1[j]=='1')
printf(" ");
else
printf("-");
}
else if(k>0&&i==2*s+2&&k<=s){
if(str1[j]=='1'||str1[j]=='4'||str1[j]=='7')
printf(" ");
else
printf("-");
}
else if(k==0&&i>=1&&i<=s){
if(str1[j]=='1'||str1[j]=='2'||str1[j]=='3'||str1[j]=='7')
printf(" ");
else
printf("|");
}
else if(k==s+1&&i>=1&&i<=s)
{
if(str1[j]=='5'||str1[j]=='6')
printf(" ");
else
printf("|");
}
else if(k==0&&i>=s+2&&i<=2*s+1){
if(str1[j]=='0'||str1[j]=='2'||str1[j]=='6'||str1[j]=='8')
printf("|");
else
printf(" ");
}
else if(k==s+1&&i>=s+2&&i<=2*s+1){
if(str1[j]=='2')
printf(" ");
else
printf("|");
}
else
printf(" ");
}
if(str1[j+1])
printf(" ");}
cout<
cout<
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
