LC-显示器2297

时间限制 : 1.000 sec  内存限制 : 128 MB

题目描述

你的一个朋友刚买了一台新电脑。 到目前为止,他曾经使用过的最强大的计算机是袖珍计算器。 现在,看着他的新电脑,他有点失望,因为他非常喜欢他的计算器的LC显示器。 所以你决定编写一个程序,在他的计算机上以类似LC显示的方式显示数字。

输入

输入包含多行,每行显示一个。 每行包含两个整数s,n(1 <= s <= 10,0 <= n <= 99 999 999),其中n是要显示的数字,s是应显示的大小。 输入文件将由包含两个零的行终止。 不应处理此行。

输出

以LC显示样式输出输入文件中给出的数字,使用s“ - ”表示水平线段和s“|” 表示垂直线段。 每个数字正好占据s + 2列和2s + 3行。 (确保用空格填充数字占据的所有空白区域,也包括最后一个数字。)两个数之间必须有一列空白。 在每个数字后输出一个空行。 (您将在示例输出中找到每个数字的样本。)

样例输入 

样例输出 

直接上代码

代码

#include <bits/stdc++.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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值