BASIC-10十進位制轉十六進位制
阿新 • • 發佈:2019-01-12
題目
問題描述
十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有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;
}