藍橋杯演算法題庫 進位制轉換_十進位制轉16進位制
阿新 • • 發佈:2018-12-23
藍橋杯演算法題庫 十進位制轉16進位制
題目
問題描述
十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。
它有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
解題思路
1、定義一個字元組,儲存10,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號用於字元轉換。
2、第把十進位制數字除16取餘,直到商為0為止具體見圖,在這裡我用字串str儲存餘數便於相加
3、輸出str。
//java程式碼
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x = n;
//儲存0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號
char[] m = new char[16];
for (int i = 0; i < 10; i++) {
m[i] = (char) (i + '0');
}
for (int i = 10; i < 16; i++) {
m[i] = (char) ('A' + (i - 10));
}
String str = "";
while (x != 0) {
str = m[x % 16] + str;
x = x / 16;
}
System.out.println(str);
}