9. 整数转化为其它进制数字

    技术2022-07-10  120

    题目

    把一个整数转换为任意进制(进制小于65, 为什么是36呢, 因为有26个英文字母, 外加0, 1, 2,… 9)

    解题思路

    我们首先必须知道进制转化的方法是除基取余, 就是反复的除以进制数, 然后用商作为基数, 继续除以进制数, 直到商为0. 然后逆序的余数就是结果。

    举个栗子:

    111 转化为8进制, 111 / 8 = 13 余 7, 也就是111 包含13个整8, 外加一个余数7. 那么很自然的, 7 就是最低位了。13 / 8 = 1 余 5. 也就是对13 来说有一个 整8, 外加余数 5. 5就是当前数的最低位了。1/ 8 = 0 余 1. 也就是对1 来说有0个 整8, 外加余数 1. 1就是当前数的最低位了

    代码实现

    #include<stdio.h> #include<stdlib.h> void translate(int n, int radix) { int temp; if (n) { translate(n / radix, radix); temp = n % radix; if (temp < 10) { printf("%d", temp); } else { printf("%c", temp - 10 + 'A'); } } } int main() { int a; scanf("%d", &a); int b; scanf("%d", &b); translate(a, b); return 0;

    运行结果

    Processed: 0.009, SQL: 9