BCD 数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个 BCD 数的十六进制是 0x12,它表达的就是十进制的 12。但是小明没学过 BCD,把所有的 BCD 数都当作二进制数转换成十进制输出了。于是 BCD 的 0x12 被输出成了十进制的 18 了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。
提示:你可以把 18 转换回 0x12,然后再转换回 12。
输入格式:
输入在一行中给出一个 [0, 153] 范围内的正整数,保证能转换回有效的 BCD 数,也就是说这个整数转换成十六进制时不会出现 A-F 的数字。
输出格式:
输出对应的十进制数。
输入样例:
18
输出样例:
12
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/14/exam/problems/784
提交:
题解:
#include<stdio.h>
int main() {
int num;
scanf("%d", &num);
// 将输入的整数转换位十六进制。一个字节占 8 位,前 4 位为 quotient,后 4 位为 remainder
int quotient = num / 16;
int remainder = num % 16;
printf("%d", quotient * 10 + remainder);
return 0;
}