[Java] 藍橋杯BASIC-12 基礎練習 十六進位制轉八進位制
問題描述
給定n個十六進位制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為一個正整數n (1<=n<=10)。
接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進位制數不會有前導0,比如012A。
輸出的八進位制數也不能有前導0。
樣例輸入
2
39
123ABC
樣例輸出
71
4435274
【提示】
先將十六進位制數轉換成某進位制數,再由某進位制數轉換成八進位制。
package base12; import java.util.Scanner; public class Main { public static void main(String[] args) { char[] str; int[] des = new int[100]; long sum = 0; Scanner in = new Scanner(System.in); int n = in.nextInt(); in.nextLine(); str = in.next().toCharArray(); in.close(); //16進位制轉換成10進位制 for (int i = 0; i < str.length; i++) { if (str[i] >= 'A' && str[i] <= 'F') { sum = sum * 16 + str[i] - 'A' + 10; } else { sum = sum * 16 + str[i] - '0'; } } int k = 0; //10進位制轉8進位制 while (sum > 0) { des[k++] = (int) (sum % 8); sum /= 8; } for (int i = k - 1; i >= 0; i--) { System.out.print(des[i]); } } }ofollow,noindex" target="_blank">❤❤點選這裡 -> 訂閱PAT、藍橋杯、GPLT天梯賽、LeetCode題解離線版❤❤
