题目描述
你的一个朋友刚买了一台新电脑。 到目前为止,他曾经使用过的最强大的计算机是袖珍计算器。 现在,看着他的新电脑,他有点失望,因为他非常喜欢他的计算器的LC显示器。 所以你决定编写一个程序,在他的计算机上以类似LC显示的方式显示数字。
输入
输入包含多行,每行显示一个。 每行包含两个整数s,n(1 <= s <= 10,0 <= n <= 99 999 999),其中n是要显示的数字,s是应显示的大小。 输入文件将由包含两个零的行终止。 不应处理此行。
输出
以LC显示样式输出输入文件中给出的数字,使用s“ - ”表示水平线段和s“|” 表示垂直线段。 每个数字正好占据s + 2列和2s + 3行。 (确保用空格填充数字占据的所有空白区域,也包括最后一个数字。)两个数之间必须有一列空白。 在每个数字后输出一个空行。 (您将在示例输出中找到每个数字的样本。)
样例输入 Copy
2 12345 3 67890 0 0
样例输出 Copy
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | || | | | |-- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | |--- --- --- | | | | | | | | | | | | | | | | | | | | | | | |--- --- --- ---
代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{int a[10];int n,i,s,j,t,k;while(scanf("%d%d",&s,&n)!=EOF){if(s==0 && n==0) break;t=0;if(n==0){t=1;a[t]=0;}else{while(n!=0){t++;a[t]=n%10;n=n/10;}}for(j=t;j>=1;j--){if(a[j]==1 || a[j]==4){for(i=1;i<=s+2;i++){printf(" ");}}else{printf(" ");for(i=2;i<=s+1;i++){printf("-");}printf(" ");}printf(" ");}printf("\n");k=s;while(k--){for(j=t;j>=1;j--){if(a[j]==5 || a[j]==6){printf("|");for(i=2;i<=s+2;i++){printf(" ");}}else if(a[j]==1 || a[j]==2 || a[j]==3 || a[j]==7){for(i=2;i<=s+2;i++){printf(" ");}printf("|");}else{printf("|");for(i=2;i<=s+1;i++){printf(" ");}printf("|");}printf(" ");}printf("\n");}for(j=t;j>=1;j--){if(a[j]==1 || a[j]==7 || a[j]==0){for(i=1;i<=s+2;i++){printf(" ");}}else{printf(" ");for(i=2;i<=s+1;i++){printf("-");}printf(" ");}printf(" ");}printf("\n");k=s;while(k--){for(j=t;j>=1;j--){if(a[j]==2){printf("|");for(i=2;i<=s+2;i++){printf(" ");}}else if(a[j]==1 || a[j]==4 || a[j]==3 || a[j]==7 || a[j]==5 || a[j]==9){for(i=2;i<=s+2;i++){printf(" ");}printf("|");}else{printf("|");for(i=2;i<=s+1;i++){printf(" ");}printf("|");}printf(" ");}printf("\n");}for(j=t;j>=1;j--){if(a[j]==1 || a[j]==4 || a[j]==7){for(i=1;i<=s+2;i++){printf(" ");}}else{printf(" ");for(i=2;i<=s+1;i++){printf("-");}printf(" ");}printf(" ");}printf("\n");printf("\n");}return 0;
}