时间限制:
1000ms
内存限制: 65536kB
-
描述
- 你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。 输入
-
输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。
如果某行输入包括两个0,表示输入结束。这行不需要处理。
输出
- 显示的方式是:用s个'-'表示一个水平线段,用s个'|'表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。 样例输入
-
2 12345 3 67890 0 0
样例输出
-
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- ---
提示
-
数字(digit)指的是0,或者1,或者2……或者9。
数(number)由一个或者多个数字组成。 -
#include "stdio.h" #include "string.h" /* void cuLi1 (int row,int num) { int i = 0; if (num==4||num == 1) { for (i = 0;i < row +2;i++) { printf(" "); } }else if (num == 5) { for (i = 0;i < row;i++) { printf("-"); } printf(" "); }else { printf(" "); for (i = 0;i < row;i++) { printf("-"); } printf(" "); } } */ void cuLi1 (int row,int num) { int i = 0; if (num==4||num == 1) { for (i = 0;i < row +2;i++) { printf(" "); } }else { printf(" "); for (i = 0;i < row;i++) { printf("-"); } printf(" "); } } void cuLi2 (int row,int num) { int i = 0; if (num == 1 || num == 2 || num == 3||num == 7) { for (i = 0;i < row + 2 - 1;i++) { printf(" "); } printf("|"); }else if (num == 5 || num == 6) { printf("|"); for (i = 0;i < row +2 -1;i++) { printf(" "); } }else { printf("|"); for (i = 0;i < row;i++) { printf(" "); } printf("|"); } } void cuLi3 (int row,int num) { int i = 0; if (num == 0||num == 1 ||num == 7) { for (i = 0;i < row + 2;i++) { printf(" "); } }else { printf(" "); for (i = 0;i < row;i++) { printf("-"); } printf(" "); } } void cuLi4 (int row,int num) { int i = 0; if (num == 2) { printf("|"); for (i = 0;i < row + 2 -1;i++) { printf(" "); } }else if (num == 6||num == 8||num ==0) { printf("|"); for (i = 0;i < row;i++) { printf(" "); } printf("|"); }else { for (i = 0;i < row +2 - 1;i++) { printf(" "); } printf("|"); } } void cuLi5 (int row,int num) { int i = 0; if (num ==1||num == 4||num == 7) { for (i = 0;i < row + 2;i++) { printf(" "); } }else { printf(" "); for (i = 0;i < row;i++) { printf("-"); } printf(" "); } } void show_a_number (char row,char *ch) { int i = 0,j; int temp; int length = strlen(ch); for (i = 0;i < length;i++) { temp = ch[i] - 48; cuLi1 (row,temp); printf(" "); } printf("\n"); for (i = 0;i < row;i++) { for (j = 0;j < length;j++) { cuLi2(row,ch[j] - 48); printf(" "); } printf("\n"); } for (i = 0;i < length;i++) { cuLi3(row,ch[i] - 48); printf(" "); } printf("\n"); for (i = 0;i < row;i++) { for (j = 0;j < length;j++) { cuLi4(row,ch[j]-48); printf(" "); } printf("\n"); } for (i = 0;i < length;i++) { cuLi5(row,ch[i] - 48); printf(" "); } printf("\n"); } int main () { char s[20]; int n; while (1) { scanf ("%d%s",&n,s); if (n == 0 && strcmp("0",s) == 0) { break; } else { show_a_number (n,s); printf("\n"); } } return 0; }