PTA 编程题(C语言)

您所在的位置:网站首页 pta题库答案c语言Q进制转换T进制 PTA 编程题(C语言)

PTA 编程题(C语言)

2024-07-14 21:26| 来源: 网络整理| 查看: 265

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:

输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:

输出对应的十进制数。

输入样例: 18 输出样例: 12 思路:这个题目没有描述清楚,下面展开说一下

1. 0x12一般表示十六进制数12,0x就是十六进制的标志,一个数如果前面带了0x就表示它是十六进制数。

2. ox12本来换算成十进制数是18,但是BCD的规则偏偏要用ox12表示12,算是一种简单的加密。(也就是说BCD数0x12,转算成十进制数是12)

3. 小明现在把BCD数,例如0x12,都按照十六进制转换成十进制数了,例如ox12转换成18了。(题目中说当做二进制数,应该是笔误)

4. 那么现在要把错误的数,正确的转换为BCD规则下的十进制,也就是说把18转换成12。

5. 不难看出,题目说了一堆,其实就是读入一个[0,153]范围内的十进制数n,把n转化为十六进制数然后输出。

 代码1: #include int main () { int num; // [0,153]的十进制数转化为16进数,最多2位 scanf("%d", &num); // 只需要考虑16^1位上的数字,和16^0位上的数字 if (num > 16) { printf("%d",num/16); // 如果num>16,说明16^1位的系数不为零,系数为 num/16 } printf("%d",num%16); // 输出16^0位的系数 num%16 return 0; } 代码2:更简单的办法就是直接用格式转换说明符%x,直接输出就行 #include int main () { int num; scanf("%d", &num); printf("%x\n", num); return 0; } 更多PTA题目的的参考代码,可以在wx小程序里搜“PTA刷题助手”,或扫下面的二维码



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3