一、
题目:
小明写了一个十六进制数ABCDEF,他问你对应的十进制数是多少?
思路:不能被带偏,想要自己将十六进制数转化位十进制数,再输出,其实不需要。只需要利用printf函数使用格式化打印%d即可。
但需要输入前缀0x,不然以为是字符串!
%x是打印十六进制数,十六进制的字母大小写区分和你格式化打印时的x有关。
源码:
输出结果:
二:
题目:
不使用累计乘法的基础上,利用移位运算符<<计算2的n次方。
思路:
左移运算符对1的二进制位进行左移,每左移一位就是相当于乘一次2!
源码:
三、
题目:
变种水仙花数:把任意的数字,从中间拆分成两个数字,比如1461可以拆分成(1和461),(14和61),(146和1),如果拆分后的乘积之和等于自身,则满足题目要求。
例如1461=1461+1461+146*1.求出5位数中所有满足题目要求的数字。
思路:
之前一直不会做这种题,把一个数字拆分成上述的形式(想用字符串,可是还要转化为十进制)。
经过老师指点,这类题目有特殊的算法,将这个数字分别/10,%10,就可以得到准确的十进制位,/100,%100以此类推!
只要 求一个数字的 后几位 或者 前几位 就可以%几位数!