• 输入一个十进制整数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

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/sqm724/p/12694611.html
Copyright © 2020-2023  润新知