UVa——110104 LC-Display(图形输出)
题意:让电脑屏幕像液晶屏一样显示数字。
解题思路:假设 s=1,每个数字都是‘ 日 ’上的笔画,分为三 ‘—’四‘|’,三行即:第一行,中间行,最底行;四列即:左上列,右上列,左下列,右下列。故用字符数组定义0-9这十个数字应显示的笔画,让后根据 s 的值来判定循环几次输出。
注意:那些数字中的空白之处要填上空格,并且两个数字之间必须有一个空列。在每个整数后面输出一个空行。

1 #include<iostream>
2 #include<cstring>
3 using namespace std;
4 char n1[]="- -- -----"; //第一行
5 char n2[]="| ||| ||"; //左上列
6 char n3[]="||||| |||"; //右上列
7 char n4[]=" ----- --"; //中间行
8 char n5[]="| | | | "; //左下列
9 char n6[]="|| |||||||"; //右下列
10 char n7[]="- -- -- --"; //最低行
11
12 int main()
13 {
14 int s,i,j,k,num;
15 char n[10];
16 while(cin>>s>>n)
17 {
18 if(s==0&&n[0]=='0') break;
19 int len=strlen(n);
20 for(i=0;i<len;i++) //输出第一行
21 {
22 num=n[i]-'0';
23 cout<<' ';
24 for(j=0;j<s;j++)
25 cout<<n1[num];
26 cout<<' ';
27 if(i!=(len-1)) cout<<' ';
28 }
29 cout<<endl;
30 for(j=0;j<s;j++) //输出左上、右上列
31 {
32 for(i=0;i<len;i++)
33 {
34 num=n[i]-'0';
35 cout<<n2[num];
36 for(k=0;k<s;k++) cout<<' ';
37 cout<<n3[num];
38 if(i!=(len-1)) cout<<' ';
39 }
40 cout<<endl;
41 }
42 for(i=0;i<len;i++) //输出中间行
43 {
44 num=n[i]-'0';
45 cout<<' ';
46 for(j=0;j<s;j++)
47 cout<<n4[num];
48 cout<<' ';
49 if(i!=(len-1)) cout<<' ';
50 }
51 cout<<endl;
52 for(j=0;j<s;j++) //输出左下、右下列
53 {
54 for(i=0;i<len;i++)
55 {
56 num=n[i]-'0';
57 cout<<n5[num];
58 for(k=0;k<s;k++) cout<<' ';
59 cout<<n6[num];
60 if(i!=len-1) cout<<' ';
61 }
62 cout<<endl;
63 }
64 for(i=0;i<len;i++) //输出最底行
65 {
66 num=n[i]-'0';
67 cout<<' ';
68 for(j=0;j<s;j++)
69 cout<<n7[num];
70 cout<<' ';
71 if(i!=(len-1)) cout<<' ';
72 }
73 cout<<endl<<endl;
74 }
75 return 0;
76 }
2 #include<cstring>
3 using namespace std;
4 char n1[]="- -- -----"; //第一行
5 char n2[]="| ||| ||"; //左上列
6 char n3[]="||||| |||"; //右上列
7 char n4[]=" ----- --"; //中间行
8 char n5[]="| | | | "; //左下列
9 char n6[]="|| |||||||"; //右下列
10 char n7[]="- -- -- --"; //最低行
11
12 int main()
13 {
14 int s,i,j,k,num;
15 char n[10];
16 while(cin>>s>>n)
17 {
18 if(s==0&&n[0]=='0') break;
19 int len=strlen(n);
20 for(i=0;i<len;i++) //输出第一行
21 {
22 num=n[i]-'0';
23 cout<<' ';
24 for(j=0;j<s;j++)
25 cout<<n1[num];
26 cout<<' ';
27 if(i!=(len-1)) cout<<' ';
28 }
29 cout<<endl;
30 for(j=0;j<s;j++) //输出左上、右上列
31 {
32 for(i=0;i<len;i++)
33 {
34 num=n[i]-'0';
35 cout<<n2[num];
36 for(k=0;k<s;k++) cout<<' ';
37 cout<<n3[num];
38 if(i!=(len-1)) cout<<' ';
39 }
40 cout<<endl;
41 }
42 for(i=0;i<len;i++) //输出中间行
43 {
44 num=n[i]-'0';
45 cout<<' ';
46 for(j=0;j<s;j++)
47 cout<<n4[num];
48 cout<<' ';
49 if(i!=(len-1)) cout<<' ';
50 }
51 cout<<endl;
52 for(j=0;j<s;j++) //输出左下、右下列
53 {
54 for(i=0;i<len;i++)
55 {
56 num=n[i]-'0';
57 cout<<n5[num];
58 for(k=0;k<s;k++) cout<<' ';
59 cout<<n6[num];
60 if(i!=len-1) cout<<' ';
61 }
62 cout<<endl;
63 }
64 for(i=0;i<len;i++) //输出最底行
65 {
66 num=n[i]-'0';
67 cout<<' ';
68 for(j=0;j<s;j++)
69 cout<<n7[num];
70 cout<<' ';
71 if(i!=(len-1)) cout<<' ';
72 }
73 cout<<endl<<endl;
74 }
75 return 0;
76 }