題目
把一個整數轉換爲任意進制(進制小於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;