H.数码管(选做)

背景

数码管是一种廉价的十进制数字显示装置,它的基本工作原理是:一个数码管有 7 段,我们将它对应成八位二进制的 8 位。这 8 位的编号从左向右分别是 7、6、5、4、3、2、1、0。数码管的一段对应二进制的一位,如果要点亮某一段,则需要将相应的二进制位置 1,其余不亮的段要将对应的位置 0。下图表示了 7 个二进制在数码管上对应的位置:

  2
 +---+
3|   |4
 | 1 |
 +---+
5|   |6
 | 0 |
 +---+ 

例如,我们要显示出数字“1”,则应该点亮数码管的第4和6段。这样对应的8位二进制数就是:0101 0000。如果用十六进方式表示出来就是 50。

同理,要显示出“3”,应该点亮:0、1、2、4、6;对应的二进表示为:0101 0111,用十六进制表示就是 57。

请编写一个程序,用 5 个数码管显示一个 16 位 (bit) 的正整数。

说明:如果需要显示的数据不足5位,则在数据前面补0。例如120要显示为00120。

输入

程序的输入是一系列 16 位(bit)的正整数(10进制形式),数与数之间允许用空白符隔开,当数字为 0 时程序结束。

输出

针对每个正整数,输出 5 个字节的十六进制数,它们可以表示 5 个数码管的状态。其中右侧第 1 个数表示输入数字的个位,第 2 个数表示十位,以此类推。

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 10103↵
  2. 30301↵
  3. 0↵
以文本方式显示
  1. 50 7D 50 7D 57↵
  2. 57 7D 57 7D 50↵
1秒64M0

#include <stdio.h>

int main() {
	int num;
	int a, b, c, d, e;
	char arr[10][3] = {"7D", "50", "37", "57", "5A", "4F", "6F", "54", "7F", "5F"};
	while (1) {
		scanf("%d", &num);
		if (num == 0)
			break;
		a = num / 10000;
		b = num / 1000 % 10;
		c = num / 100 % 10;
		d = num / 10 % 10;
		e = num % 10;
		printf("%s %s %s %s %s\n", arr[a], arr[b], arr[c], arr[d], arr[e]);
	}
	return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值