1. 程式人生 > >BASIC-10十進位制轉十六進位制

BASIC-10十進位制轉十六進位制

題目
問題描述
  十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進位制數的0至15。十六進位制的計數方法是滿16進1,所以十進位制數16在十六進位制中是10,而十進位制的17在十六進位制中是11,以此類推,十進位制的30在十六進位制中是1E。
  給出一個非負整數,將它表示成十六進位制的形式。
輸入格式
  輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
  輸出這個整數的16進製表示
樣例輸入
30
樣例輸出
1E
題解
用遞迴完成這道題
思路是10進位制數不斷整除16,直到最後除不盡,開始返回,返回的時候不斷把餘數轉換為16進位制並新增到字串尾部。最後輸出。

#include<iostream>
#include<string>
using namespace std;
string str_16="";

string switch_10_16(int ch)
{
    switch(ch)
    {
        case 0:return"0";break;
        case 1:return"1";break;
        case 2:return"2";break;
        case 3:return"3";break;
        case 4:return"4";break;
        case
5:return"5";break; case 6:return"6";break; case 7:return"7";break; case 8:return"8";break; case 9:return"9";break; case 10:return"A";break; case 11:return"B";break; case 12:return"C";break; case 13:return"D";break; case 14:return
"E";break; case 15:return"F";break; } } long long int change(long long int num) { if(num<16) { str_16+=switch_10_16(num); return 0; } else { change(num/16); str_16+=switch_10_16(num%16); } } int main() { long long str_10; cin>>str_10; change(str_10); cout<<str_16<<endl; return 0; }