0%

进制转换

问题:
把一个读入的十进制数字以十六进制的形式输出,同时统计转换成的十六进制数字的长度。

分析:
非常经典的一类问题,只要递归一下,或者用堆栈,或者16进制可以选择二进制顺序每四位读取等等多种方式

代码:
只是试试写在一行里,行数是少了,可读性比较差

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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;
}