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

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

題目
問題描述
  十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有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; }