计蒜客习题:显示屏的输出


问题描述

蒜头君有一块数码管显示屏,只能显示数字。每个数字的显示如下。每 7 个数码管用来显示一个数字。(CSDN编辑器问题,样例,例子都写在代码片里了)

 -
| |
 -
| |
 -

每个数字对应的输出如下。


     -   -       -   -   -   -   -   -
  |   |   | | | |   |     | | | | | | |
     -   -   -   -   -       -   -
  | |     |   |   | | |   | | |   | | |
     -   -       -   -       -   -   -

当然为了看起来更形象,可以把数字放大输出,比如放大两倍每个数字对应如下

     --   --        --   --   --   --   --   --
  |    |    | |  | |    |       | |  | |  | |  |
  |    |    | |  | |    |       | |  | |  | |  |
     --   --   --   --   --        --   --
  | |       |    |    | |  |    | |  |    | |  |
  | |       |    |    | |  |    | |  |    | |  |
     --   --        --   --        --   --   --

输入格式
输入两个整数k,n(1≤k≤10,0≤n≤99999999),分别表达放大的倍数和需要输出的数字。
输出格式
输出数码管显示的数字,数字每一位之间用一列空格隔开。
样例输入

2 12345

样例输出

    --   --        --
  |    |    | |  | |
  |    |    | |  | |
     --   --   --   --
  | |       |    |    |
  | |       |    |    |
     --   --        --

AC代码

#include <iostream>
#include <cstdio>
using namespace std;
char pic[10][5][2]={
{{'-',' '},{'|','|'},{' ',' '},{'|','|'},{'-',' '}},
{{' ',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},
{{'-',' '},{' ','|'},{'-',' '},{'|',' '},{'-',' '}},
{{'-',' '},{' ','|'},{'-',' '},{' ','|'},{'-',' '}},
{{' ',' '},{'|','|'},{'-',' '},{' ','|'},{' ',' '}},
{{'-',' '},{'|',' '},{'-',' '},{' ','|'},{'-',' '}},
{{'-',' '},{'|',' '},{'-',' '},{'|','|'},{'-',' '}},
{{'-',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},
{{'-',' '},{'|','|'},{'-',' '},{'|','|'},{'-',' '}},
{{'-',' '},{'|','|'},{'-',' '},{' ','|'},{'-',' '}},
};
int main()
{
    int k;
    int cnt=0;
    char buf;
    int n[10];
    cin>>k; 
    getchar();
    while(scanf("%c",&buf)==1&&buf!=10)
    {
        n[cnt]=buf-'0';
        cnt++;
    }
    for(int m=1;m<=5;m++)
    {
        if(m%2==1)
        {   
            for(int j=0;j<cnt;j++)
            {   cout<<" ";
                for(int i=0;i<k;i++)
                cout<< pic[n[j]][m-1][0];
                cout<<" ";
                if(j!=cnt-1)cout<<" ";
            }cout<<endl;
        }
        else
        {   for(int h=1;h<=k;h++){
            for(int j=0;j<cnt;j++)
            {
                char a,b;
                a=pic[n[j]][m-1][0];
                b=pic[n[j]][m-1][1];
                cout<<a;
                for(int i=0;i<k;i++)
                {
                    cout<<" ";
                }
                cout<<b; 
                if(j!=cnt-1)cout<<" ";
            }cout<<endl;
        }
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liukairui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值