9. 整數轉化爲其它進制數字

題目

把一個整數轉換爲任意進制(進制小於65, 爲什麼是36呢, 因爲有26個英文字母, 外加0, 1, 2,… 9)

解題思路

我們首先必須知道進制轉化的方法是除基取餘, 就是反覆的除以進制數, 然後用商作爲基數, 繼續除以進制數, 直到商爲0. 然後逆序的餘數就是結果。

舉個栗子:

  1. 111 轉化爲8進制, 111 / 8 = 13 餘 7, 也就是111 包含13個整8, 外加一個餘數7. 那麼很自然的, 7 就是最低位了。
  2. 13 / 8 = 1 餘 5. 也就是對13 來說有一個 整8, 外加餘數 5. 5就是當前數的最低位了。
  3. 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;

運行結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章