UVa 706 & ZOJ 1146 LC-Display

  题目大意:给你一个数字n和字体大小s,输出数字的液晶显示。直接模拟,代码如下:

 1 #include <stdio.h>
 2 void draw(int n,int s,int row)
 3 {
 4     int i;
 5     if(row==1)
 6     {
 7         printf(" ");
 8         if(n==2||n==3||(n>=5&&n<=9)||n==0)
 9             for(i=0;i<s;i++)
10                 printf("-");
11         else for(i=0;i<s;i++)
12                 printf(" ");
13         printf(" ");
14     }
15     else if(2<=row&&row<=s+1)
16     {
17         if(n==0||(4<=n&&n<=6)||n==8||n==9||n==0)
18             printf("|");
19         else printf(" ");
20         for(i=0;i<s;i++)
21             printf(" ");
22         if((1<=n&&n<=4)||(7<=n&&n<=9)||n==0)
23             printf("|");
24         else printf(" ");
25     }
26     else if(row==s+2)
27     {
28         printf(" ");
29         if((2<=n&&n<=6)||n==8||n==9)
30             for(i=0;i<s;i++)
31                 printf("-");
32         else for(i=0;i<s;i++)
33                 printf(" ");
34         printf(" ");
35     }
36     else if(s+3<=row&&row<=2*s+2)
37     {
38         if(n==2||n==6||n==8||n==0)
39             printf("|");
40         else printf(" ");
41         for(i=0;i<s;i++)
42             printf(" ");
43         if(n==1||(3<=n&&n<=9)||n==0)
44             printf("|");
45         else printf(" ");
46     }
47     else if(row==2*s+3)
48     {
49         printf(" ");
50         if(n==2||n==3||n==5||n==6||n==8||n==9||n==0)
51             for(i=0;i<s;i++)
52                 printf("-");
53         else for(i=0;i<s;i++)
54                 printf(" ");
55         printf(" ");
56     }
57 }
58 
59 int main()
60 {
61     int s,n,p,k,i,j;
62     int digit[10];
63     while(scanf("%d%d",&s,&n)!=EOF)
64     {
65         if(s==0&&n==0) break;
66         if(n)
67         {
68             p=0;
69             while(n)
70             {
71                 digit[p++]=n%10;
72                 n/=10;
73             }
74             k=p;
75         }
76         else
77         {
78             digit[0]=0;
79             k=1;
80         }
81         for(i=1;i<=2*s+3;i++)
82         {
83             draw(digit[k-1],s,i);
84             for(j=k-2;j>=0;j--)
85             {
86                 printf(" ");
87                 draw(digit[j],s,i);
88             }
89             printf("
");
90         }
91         printf("
");
92     }
93     return 0;
94 }
View Code
原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3169851.html