1. 程式人生 > >十進制轉化成八進制(一到十六進制)

十進制轉化成八進制(一到十六進制)

pac 整數 turn algo post pan 轉換 tdi %d

【問題描述】

用遞歸算法,把任一給定的十進制正整數轉換成八進制數輸出。

思路就是將該數不斷除以8取余,直到商為0。再將所得余數倒著輸出。到這輸出就想到棧,棧就可以用遞歸實現。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 using namespace std;
 7 int n;
 8 void change(int x)
 9 {
10     int r = x % 8
; 11 x /= 8; 12 if(x != 0) change(x); 13 printf("%d", r); 14 } 15 int main() 16 { 17 scanf("%d", &n); 18 change(n); 19 return 0; 20 }

以此類推,就可以轉化成任意1到16進制的數。只不過當余數大於9時就要用 ABCDEF 代替。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5
#include<cstring> 6 using namespace std; 7 int n, m; 8 char cha[6] = {A, B, C, D, E, F}; 9 void change(int x, int y) 10 { 11 int r = x % y; 12 x /= y; 13 if(x != 0) change(x, y); 14 if(r < 10) printf("%d", r); 15 else printf("%c", cha[r - 10]); 16 } 17 int main()
18 { 19 scanf("%d%d", &n, &m); 20 change(n, m); 21 return 0; 22 }

輸入:156 16 輸出:9C

十進制轉化成八進制(一到十六進制)