题目大意:给你一个数字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 }