今天老师要求写一个十进制转其他进制的小程序。就是输入一个十进制数,输出它的2-16进制数。自己写了半天,二进制就不说了,三进制开始,输出就全是0了,实在不会写了。来找大神求助、、、
在线等!!!!,谢谢大家帮忙!!!进制转换二进制八进制十六进制

解决方案 »

  1.   

    记得以前做ACM的时候做过
    题目是: 输入基数b(2≤b≤16)和正整数n(十进制),任务:输出n的b进制。
    代码给楼主,你自己改下输出就可以了#include "stdio.h"
    #include "string.h"
    int main() {
    //freopen("1129.in", "r", stdin);
    int b, i=0, j, temp;
    char a[17] = "0123456789abcdef";
    char sum[100], flag;
    long n; scanf("%d%ld", &b, &n); if (b<2 || b>16){
    printf("Error Input!");
    return 0;
    }
    if(n==0){
    sum[0]='0';
    i++;
    } while (n != 0){
    temp = (n % b);
    sum[i++] = a[temp];
    n /=  b;
    }
    sum[i] = 0;
    for(j=0; j < i/2; j++){
    flag = sum[j];
    sum[j] = sum[i-j-1];
    sum[i-j-1] = flag;
    }
    puts(sum); return 0;
    }
      

  2.   

    可是我的是java,算法什么的没有变化吧?!
      

  3.   

    还是不会改成java的程序原谅我的编程水平吧
      

  4.   

    import java.util.*;
    public class Tre {
    public static void main(String args[]){
    int b = 2;
    int i=0;
    int j;
    int temp;
    char a[]= new char[17];
    a[17] = ("0123456789abcdef");//这句编译的时候报错
    char sum[] = new char[100];
    char flag;
    Scanner sc=new Scanner(System.in);
    int n = sc.nextInt();

    if(n==0){
    sum[0]='0';
    i++;
    } while (n != 0){
    temp = (n % b);
    sum[i++] =(a[temp]);
    n /=  b;
    }
    sum[i] = 0;
    for(j=0; j < i/2; j++){
    flag = sum[j];
    sum[j] = sum[i-j-1];
    sum[i-j-1] = flag;
    }
    System.out.println(sum);
    sc.close();
    }
    }
      

  5.   

    做了一个只能转换整数的。package cn.dzr.csdn;
    public class jinzhi {
        public static void main(String[] args)
        {
            String str = test(18,16);
            System.out.println(str);
        }
        
        public static String test(int num,int p)
        {
            //将10进制的数num转为 p进制
            //
            //
            //   1000/8  = 125   余   0
            //    125/8  =  15   余   5
            //      15/8  =  1   余   7
            //       1/8  =  0   余   1
            //    1000  的  10 进制  转 8进制  为  1750
            
            int i;
            int j;
            StringBuffer sb = new StringBuffer("");
            
            do{
                i=num/p;
                j = num%p;
                if(j<10)
                sb.insert(0, j);
                if(j==10)
                    sb.insert(0, 'A');
                if(j==11)
                    sb.insert(0, 'B');
                if(j==12)
                    sb.insert(0, 'C');
                if(j==13)
                    sb.insert(0, 'D');
                if(j==14)
                    sb.insert(0, 'E');
                if(j==15)
                    sb.insert(0, 'F');
         
                num = i;
            }while(i!=0);
            
            return sb.toString();
            
        }
    }
      

  6.   


    public static void main(String[] args) {
    int i16 = Integer.parseInt("12", 16);//转为16进制的
    int i8 = Integer.parseInt("12", 8);
    int i4 = Integer.parseInt("12", 4);
    int i2 = Integer.parseInt("12", 2);
    }
      

  7.   

    String str = "";
    while (num > 0) {
    int mod = (num % radix); if (mod >= 10) {
    str = (char) ('A' + (mod - 10)) + str;
    } else {
    str = mod + str;
    } num /= radix;
    }
    return str;
    只能处理正数,负数需要根据不同长度补符号位
      

  8.   

    java.util.Integer
    里面有  public static String toString(int i, int radix) {}
    直接参考吧
      

  9.   

    楼主是想要自己写算法还是要直接用JDK Integer现成的api Integer.toString(int num,int radix)这就能满足你要自己写算法的话你可以直接参考jdk,Integer.toString(int num,int radix)的源码来写
      

  10.   

    public class StringTest {
    public static void main(String[] args) {
    int a=456;
    System.out.println(jingzhi(a,4));
    }
    public static String jingzhi(int deci,int num){
    if(deci/num!=0)
    return jingzhi(deci/num,num)+deci%num;
    else
    return deci%num+"";
    }}
    无聊写了2-10进制的
      

  11.   


    Integer a = 16;//待转的数
    for (int i = 2; i <= 16; i++) {
    String s = Integer.toString(a, i);
    System.out.println(i+"进制="+s);
    }结果为:2进制=10000
    3进制=121
    4进制=100
    5进制=31
    6进制=24
    7进制=22
    8进制=20
    9进制=17
    10进制=16
    11进制=15
    12进制=14
    13进制=13
    14进制=12
    15进制=11
    16进制=10