进制转换--给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数C++

题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
  • 输入描述:
    输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。

  • 输出描述:
    为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)

  • 示例1
    输入
    7 2

  • 输出
    111

代码实现:
#include<iostream>
using namespace std;

int main()
{
    //s表示通过进制转换后M的N进制数
    string s = "";
    string tables = "0123456789ABCDEF";//从二进制到十六进制的数的集合

    //输入某个数M,和需要转换的进制N
    int M = 0;
    int N = 0;
    cin >> M >> N;

    if (M == 0)
    {
        s = "0";
    }

    while (M)
    {
        if (M < 0)
        {
            M = -M;
            cout << "-";
        }

        s = tables[M%N] + s;
        M /= N;
    }

    //注意:因为s是字符串,最好在输出的时候将该字符串以C风格显示出来即就是s.c_str(),某些编译器可以跑过,但有的编译器就必须加上
    cout << s.c_str() << endl;
    return 0;
}
运行结果:

这里写图片描述
如果发现有不对的地方希望大佬们批评指正!

猜你喜欢

转载自blog.csdn.net/cherrydreamsover/article/details/81239162