问题:
把一个读入的十进制数字以十六进制的形式输出,同时统计转换成的十六进制数字的长度。
分析:
非常经典的一类问题,只要递归一下,或者用堆栈,或者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; }
|