今天这道题目呢,与之后要讲到的“龟兔赛跑”都是从PAT的基础编程题目中节选过来的。
难度不是很大,但是特别基础,复习到了基础知识,也就是二进制、十进制两者之间的相互转换。
我们先来看看这道题目的要求:
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。
所以,如果一个BCD数的十六进制为0x12,那么它的十进制也是12。
此时有一位小伙伴并不知道BCD数的运算规则,直接把0x12当作二进制来转换成十进制,那就会得到18。
现在呢,我们就期望能把这个错误得到的十进制,转换成我们期望得到的十进制数值。
给定的这个错误十进制范围为[0,153]。
题目要求呢我们都清楚了,接下来就是如何解决这个问题。
这里呢,主要涉及到的是十六进制和十进制之间以及二进制和十进制之间的转换。
但我呢,好像把这道题目给想复杂了emm,结果导致简单问题复杂化,实在是不应该啊。
理清逻辑,画出流程图,这是十进制转换为二进制再进行BCD解密
程序要写正确的话,流程图用来帮助理清逻辑非常好用,这张流程图画的有些小,真的有些不好意思。
可以从这张流程