递归进制转换
算法问题总是很复杂,我每次都觉得会了,每次一到稍微涉及一点儿算法的地方都要想好久。
以下 10进制转换成2进制:
#include <iostream> void tenToB(int a); void packageForT2B(int a); int main() { packageForT2B(13); packageForT2B(6); return 0; } void packageForT2B(int a){ printf("输入的十进制数字是%d,它的二进制形式是:\n",a); tenToB(a); printf("\n"); } void tenToB(int a){ int rest=a%2; if(a/2>2){ tenToB(a/2); }else{ printf("%d",a%2); } printf("%d",rest); }
10进制转化成16进制。
示例代码:
#include <iostream> void tenToHex(int a); void function1(void); void packageForT2H(int a); int main() { //function1 packageForT2H(100); packageForT2H(239); return 0; } void function1(void){ char str[]={"0123456789ABCDEF"}; printf("%c",str[15]); printf("%c",str[8]); printf("%c",str[1]); } void packageForT2H(int a){ printf("输入的十进制数字是%d,它的16进制形式是:\n",a); tenToHex(a); printf("\n"); } void tenToHex(int a){ char str[]={"0123456789ABCDEF"}; int rest=a%16; if(a/16>16) { tenToHex(a/16); } else{ printf("%c",str[a/16]); } printf("%c",str[a%16]); }
运行结果: