进制转换---实验

题目

问题描述:输入一个十进制数N,将它转换成R进制数输出。

输入说明:输入数据包含测试实例个数M,每个测试实例包含两个数N和R(2<=R<=9)。

输出说明:为每个测试实例输出转换后的数,每个输出占一行。

输入样例:

3

7      3

-0.5     2

10.5     8

输出样哩:

21

-0.1

12.4

代码

package demo8;


import java.util.Scanner;

public class jiszu {

    public static void fun1(int n,int r)//整数部分
    {
        int[] c = new int[100];
        int len=0;
        if(n==0){
            System.out.print(n);
        }
        else{
            while(n!=0){
                c[len++]= (n%r);//求余数
                n=n/r;
            }
            for(;len>0;len--)
            {
                System.out.print(c[len-1]);//倒序输出
            }
        }
    }

    public static void fun2(double n,int r){//小数部分
        int i, len = 0;
        int[] a = new int[100];
        while (n!=0) {
            int temp = (int)(n * r);//只保留整数部分
            a[len++] = temp;
            n = r * n - temp;//得到新的小数部分继续循环
        }
        if(len!=0)
        {
            System.out.print(".");
            for (i = 0; i < len; i++) {
                System.out.print(a[i]);
            }
        }
    }
    public static void main(String[] args) {
        int r, m;//r表示要转成几进制,m表示要测试实例个数
        double n;//十进制数
        System.out.println("请输入数据包含测试实例个数:");
        Scanner scanner = new Scanner(System.in);
        m = scanner.nextInt();
        while (m!=0) {
            System.out.println("");
            System.out.println("请输入一个十进制数及要转成几进制:");
            n = scanner.nextDouble();
            r = scanner.nextInt();
            int t = (int)n;//用t表示输入十进制数的整数部分
            double x = n - t;//小数部分
            if(n>0){
                fun1(t, r);
                fun2(x, r);}
            else{
                System.out.print("-");
                fun1(-t, r);
                fun2(-x, r);
            }
            m--;
        }
    }

}

运行截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值