问题:
把一个读入的十进制数字以十六进制的形式输出,同时统计转换成的十六进制数字的长度。
分析:
非常经典的一类问题,只要递归一下,或者用堆栈,或者16进制可以选择二进制顺序每四位读取等等多种方式
代码:
只是试试写在一行里,行数是少了,可读性比较差
#include <stdio.h>
int Print_Decimal(int n)
{
return (n&(1<<31)?putchar('-'),n*=(~0):0),(!(n>>4)?(n += 1<<4):(n = ((Print_Decimal(n>>4)+1<<4)+(n&15)))),putchar((n&15)+'0'+(((n&15)>9)?7:0)),n>>4;
}
int main()
{
int number;
scanf("%d",&number);
int len = Print_Decimal(number);
printf("\nlen = %d\n",len);
return 0;
}