题就是看规律,比如 第1行 的九个数字的特征,第2~n+1行各个数字的特征,第n+2~2*n+2行各个数字,第2*n+3行的。即可以敲心中所想了。
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 //freopen("output","w",stdout); 7 int n,len,i,j,k,x; 8 char ch[9]; 9 while(scanf("%d%s",&n,ch)!=EOF) 10 { 11 if(n==0&&ch[0]=='0') 12 break; 13 len = strlen(ch); 14 x = 0; 15 for(i = 0; i < len; i++) 16 { 17 if(ch[i]=='0') 18 { 19 if(i + 1 < len) 20 x = i+1; 21 } 22 else 23 break; 24 } 25 for(i = 1; i <= 3+2*n; i++) 26 { 27 for(j = x; j < len; j ++) 28 { 29 30 if( i==1 ){ 31 cout<<' '; 32 if(ch[j]=='1'||ch[j] == '4') 33 { 34 for(k = 0; k < n; k++) 35 cout<<' '; 36 } 37 else 38 { 39 for(k = 0; k < n; k++) 40 cout<<'-'; 41 } 42 cout<<' '; 43 } 44 if( i >1 && i <= n+1) 45 { 46 if(ch[j]=='5'||ch[j] == '6'){ 47 cout<<'|'; 48 for(k = 0; k < n; k++) 49 cout<<' '; 50 cout<<' '; 51 } 52 else if(ch[j] == '1'||ch[j] == '2'||ch[j] == '3'||ch[j] == '7') { 53 cout<<' '; 54 for(k = 0; k < n; k++) 55 cout<<' '; 56 cout<<'|'; 57 } 58 else{ 59 cout<<'|'; 60 for(k = 0; k < n; k++) 61 cout<<' '; 62 cout<<'|'; 63 } 64 } 65 66 if(i == n + 2) 67 { 68 cout<<' '; 69 if(ch[j] == '1'||ch[j] == '7'||ch[j] == '0') 70 { 71 for(k = 0; k < n; k++) 72 cout<<' '; 73 } 74 else 75 for(k = 0; k < n; k++) 76 cout<<'-'; 77 cout<<' '; 78 } 79 80 if(i > n+2 && i <= 2*n +2) 81 { 82 if(ch[j]=='2'){ 83 cout<<'|'; 84 for(k = 0; k < n; k++) 85 cout<<' '; 86 cout<<' '; 87 } 88 else if(ch[j] == '6'||ch[j] == '8'||ch[j] == '0') 89 { 90 cout<<'|'; 91 for(k = 0; k < n; k++) 92 cout<<' '; 93 cout<<'|'; 94 } 95 else{ 96 cout<<' '; 97 for(k = 0; k < n; k++) 98 cout<<' '; 99 cout<<'|'; 100 } 101 } 102 if(i == 2*n + 3) 103 { 104 if(ch[j] == '1'||ch[j] == '4'|| ch[j] == '7') 105 { 106 cout<<' '; 107 for(k = 0; k < n; k++) 108 cout<<' '; 109 cout<<' '; 110 } 111 else 112 { 113 cout<<' '; 114 for(k = 0; k < n; k++) 115 cout<<'-'; 116 cout<<' '; 117 } 118 } 119 if(j < len-1) 120 cout<<' '; 121 122 } 123 cout<<endl; 124 } 125 cout<<endl; 126 } 127 return 0; 128 }