[山东科技大学OJ]1068 Problem H: 液晶显示

 

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 4406  Solved: 2290
[Submit][Status]

Description

你的朋友刚买了一台新电脑,他以前用过的最强大的计算工具是一台袖珍计算器。现在,看着自己的新电脑,他有点失望,因为他更喜欢计算器上的LC显示器。所以,你决定写一个LC显示风格的程序帮他在电脑上显示数字。

 

Input

输入包括若干行,每一行有两个整数。输入为两个0表示结束,并且此行不被处理。

每行输入的两个整数s和n,满足1<=s<=10且0<=n<=99 999 999,其中n是要被现实的数字,s是n应该显示的大小(放大的倍数)。

 

Output

输出的数字是LC显示风格的:使用s个“-”表示水平线和s个“|”竖直线,每个数字刚好占据s+2列和2s+3行,所有没有“-”和“|”的空白处请用空格填满。并且每两个数字之间要有一列空格。

每一行输入数字对应上述一组LC显示风格输出。任意两组数字的输出之间用一个空行分割。

 

Sample Input

2 12345 3 67890 0 0

Sample Output

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

HINT

 

Append Code

[Submit][Status]


#include <stdio.h>

char a[11][6]= {"14041","03030","13121","13131","04130","12131","12141","13030","14141","14131"};

void prints(char c,int n)

{

    while(n--)putchar(c);

}

int main()

{

    int k=2;

    char s[20];

    int first=1;

    while(scanf("%d%s",&k,s)==2&&(k||s[0]!='0'))

    {

        if(!first)printf("\n");else first=0;

        for(int i=0; i<5; i++)

        {

            int t=1;

            for(int j=0; j<k; j++)

            {

                for(int n=0; s[n]!=0; n++)

                {

                    if(a[s[n]-'0'][i]=='1')

                    {

                        if(j)  t=0;

                        else

                        {

                            putchar(' ');

                            prints('-',k);

                            putchar(' ');

                                if(s[n+1]!=0)putchar(' ');

                        }

  

                    }

                    else if(a[s[n]-'0'][i]=='0')

                    {

                        if(j)  t=0;

                        else{

                            prints(' ',k+2);

                            if(s[n+1]!=0)putchar(' ');

                        }

                    }

                    else

                    {

                        if(a[s[n]-'0'][i]=='2')

                        {

                            putchar('|');

                            prints(' ',k+1);

                        }

                        else if(a[s[n]-'0'][i]=='3')

                        {

                            prints(' ',k+1);

                            putchar('|');

                        }

                        else if(a[s[n]-'0'][i]=='4')

                        {

                            putchar('|');

                            prints(' ',k);

                            putchar('|');

                        }

                        if(s[n+1]!=0)putchar(' ');

                    }

                }

                if(t)putchar('\n');

            }

        }

    }

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值