SDUST 作业10 Problem I 液晶显示

Posted Wade_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDUST 作业10 Problem I 液晶显示相关的知识,希望对你有一定的参考价值。

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

 

 1 #include <stdio.h>
 2 char a[12][10]= {"14041","03030","13121","13131","04130","12131","12141","13030","14141","14131"};
 3 void prints(char c,int n)
 4 {
 5     while(n--)putchar(c);
 6 }
 7 int main()
 8 {
 9     int k=2;
10     char s[20];
11     int first=1;
12     while(scanf("%d%s",&k,s)==2&&(k||s[0]!=\'0\'))
13     {
14         if(!first)printf("\\n");else first=0;
15         for(int i=0; i<5; i++)
16         {
17             int t=1;
18             for(int j=0; j<k; j++)
19             {
20                 for(int n=0; s[n]!=0; n++)
21                 {
22                     if(a[s[n]-\'0\'][i]==\'1\')
23                     {
24                         if(j)  t=0;
25                         else{
26                             putchar(\' \');
27                             prints(\'-\',k);
28                             putchar(\' \');
29                                 if(s[n+1]!=0)putchar(\' \');
30                         }
31  
32                     }
33                     else if(a[s[n]-\'0\'][i]==\'0\')
34                     {
35                         if(j)  t=0;
36                         else{
37                             prints(\' \',k+2);
38                             if(s[n+1]!=0)putchar(\' \');
39                         }
40                     }
41                     else
42                     {
43                         if(a[s[n]-\'0\'][i]==\'2\')
44                         {
45                             putchar(\'|\');
46                             prints(\' \',k+1);
47                         }
48                         else if(a[s[n]-\'0\'][i]==\'3\')
49                         {
50                             prints(\' \',k+1);
51                             putchar(\'|\');
52                         }
53                         else if(a[s[n]-\'0\'][i]==\'4\')
54                         {
55                             putchar(\'|\');
56                             prints(\' \',k);
57                             putchar(\'|\');
58                         }
59                         if(s[n+1]!=0)putchar(\' \');
60                     }
61                 }
62                 if(t)putchar(\'\\n\');
63             }
64         }
65     }
66     return 0;
67 }

 

以上是关于SDUST 作业10 Problem I 液晶显示的主要内容,如果未能解决你的问题,请参考以下文章

SDUST作业10 Problem J: 提取缩略词

山科SDUST OJ Problem J :连分数

SDUST OJ Problem G 动态的字符串排序

SDUST 软件工程2016-作业4-A 百钱买鸡问题

poj 1776 Task Sequences

SDUST 小学期飞机大战讲解 - 2绕不开的MFC类