次筆試時候遇到的關於十進制轉換成十三進制的編程題。
先說說簡單的思路吧:
1、十進制數 num 轉換為 n進制
num%n結果肯定為n進制數的最后一位
結果存入一個數組中
2、進入一個循環num!=0時候
num=num/n
重復1的操作
將倒數第二位、倒數第三位。。。到最終結果存入數組
3、遍歷數組從 count到0
代碼如下
- package com.cslience.test;
- /*
- * 作者:cslience
- * 功能:十進制轉換成任意進制的方法
- * 求余數將其存入數組中
- *
- */
- public class Transformation {
- /**
- * @param args
- */
- public void transform(int num,int n){
- //參數num為輸入的十進制數,參數n為要轉換的進制
- int array[]=new int[100];
- int location=0;
- while(num!=0){//當輸入的數不為0時循環執行求余和賦值
- int remainder=num%n;
- num=num/n;
- array[location]=remainder;//將結果加入到數組中去
- location++;
- }
- show(array,location-1);
- }
- private void show(int[] arr,int n){
- for(int i=n;i>=0;i--){
- if(arr[i]>9){
- System.out.print((char)(arr[i]+55));
- }
- else
- System.out.print(arr[i]+"");
- }
- }
- public static void main(String[] args)
- {
- // 測試用例
- Transformation t=new Transformation();
- t.transform(18, 8);
- }
- }