BASIC-11 十六進位制轉十進位制
阿新 • • 發佈: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
題解
十進位制轉十六進位制一般採用十進位制除以16取餘的方法來做。涉及到程式設計設計中的迴圈、判斷、求餘、整除等方法。
首先,把十六進位制數放在一個字元陣列c裡。
第一步判斷,第一種情況,輸入的十進位制數是否在0~16(即 0 <= a < 16)之間,如果在這個範圍內,直接用a % 16通過迴圈找到該數所對應的十六進位制數的下標,並將其輸出。
第二種情況,就是輸入的十進位制數不在0~16範圍內,這個時候,我們就利用迴圈對16取餘,整除等操作,將a取餘16的每一步結果存放在一個數組b中,即,b[i] = a % 16; a = a / 16;,然後再利用b數組裡面的值與十六進位制數匹配,然後輸出。
程式碼:
#include<iostream>
using namespace std;
int main(){
int a;
int b[100];
char c[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
cin >> a;
if(a >= 0 && a < 16){
int m = a % 16;
for(int i = 0;i < 16;i++){
if(m == i){
cout << c[ i];
}
}
}
else{
int i = 0;
while(a != 0){
b[i] = a % 16;
a = a / 16;
i++;
}
for(int j = i - 1;j >= 0;j--){
if(b[j] == 10)
cout << "A";
else if(b[j] == 11)
cout << "B";
else if(b[j] == 12)
cout << "C";
else if(b[j] == 13)
cout << "D";
else if(b[j] == 14)
cout << "E";
else if(b[j] == 15)
cout << "F";
else
cout << b[j];
}
}
return 0;
}