zoukankan      html  css  js  c++  java
  • 输入一个十进制整数N,将它转换成R进制数输出。(2<=R<=16, R!=10)

    题目:输入一个十进制整数N,将它转换成R进制数输出。(2<=R<=16, R!=10)

    思路:辗转相除法:

    这样我们就很清楚地知道是N一直在除以2,直至被除数为0。

    我们就将余数储存在一个数组里,到时候再将数组逆序输出

    其它进制也一样,不过是除数改变而已。!!!

    所以步骤就是:

    1.将余数储存在数组里    2.将数组逆序输出

    代码:

    /*输入一个十进制数N,将它转换成R进制数输出。R(2<=R<=16, R!=10) */
    
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main()
    {
        int n, r;//n为数,r为进制
        int a[10000];
        char b[10000];
        while (cin >> n >> r)//循环输入样例
        {
            if (n == 0) break;
            if (r < 2 || r>16) {
                cout << "INPUT ERROR!";
                break;
            }
            int t = 0, i = 0;
            int k = abs(n);//先用abs函数求出绝对值
            //进制小于10
            if (r < 10)
            {
                while (k != 0)//辗转相除法
                {
                    t = k % r;
                    a[i] = t;
                    i++;
                    k = k / r;
                }
                if (n > 0)//若n为正数
                {
                    for (int j = i - 1;j >= 0;j--)//倒序输出
                    {
                        cout << a[j];
                    }                
    cout
    << endl; } if (n < 0)//n为负 { a[i - 1] = a[i - 1] * (-1); for (int j = i - 1;j >= 0;j--) { cout << a[j]; } cout << endl; } } //进制大于10 if (r > 10) { while (k != 0) { t = k % r; if (t > 9) { if (t == 10) b[i] = 'A'; if (t == 11) b[i] = 'B'; if (t == 12) b[i] = 'C'; if (t == 13) b[i] = 'D'; if (t == 14) b[i] = 'E'; if (t == 15) b[i] = 'F'; } else { b[i] = t + 48;//数组b为字符数组,且0的ASCII码是48,要将b字符转化为0 - 9,所以加了48 } i++; k = k / r; } if (n > 0) { for (int j = i - 1;j >= 0;j--) { cout << b[j]; } cout << endl; } if (n < 0) { cout << "-"; for (int j = i - 1;j >= 0;j--) { cout << b[j]; } cout << endl; } } } }

    相关补充(超详细的进制转换知识详解):https://www.cnblogs.com/sqm724/p/12694754.html

  • 相关阅读:
    win10系统激活 快捷方式
    echarts 图表自适应外部盒子大小
    JS开发常用工具函数 总结
    课程学习总结报告
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    基于mykernel 2.0编写一个操作系统内核
    框架复习_SpringMvc
    框架复习_Mybatis
    框架复习_Spring
    IDEA调试
  • 原文地址:https://www.cnblogs.com/sqm724/p/12694611.html
Copyright © 2011-2022 走看看