牛客刷题——进制转换

进制转换

  • 题目描述
  • 题目分析
  • 代码实现

题目链接:进制转换

题目描述

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
在这里插入图片描述

题目分析

根据题目描述,该题目需要将输入的m转换为相应的n进制数。这里的进制范围为2到16进制。这里需要先定义一个字符数组,大小为16,其中字符从0开始一直到f,也就是16进制中可能出现的数字。想要提取n进制的各个位只需要将m模上n,便可以得到n进制的一个位,再将m除以n赋值给m进行下一次计算直到m为0,此时就可以提取出m的n进制的各个位,最后再进行逆置即可。代码实现如下:

代码实现

#include
#include
#include
using namespace std;

int main()
{
	string s;
	string table = "0123456789ABCDEF";
	int m, n;
	cin >> m >> n;
	if(m==0)
    {
        cout<<m<<endl;
    }
	bool flag = false;
	if (m < 0)//判断正负
	{
		m = -m;
		flag = true;
	}
	while (m != 0)
	{
		s += table[m % n];
		m /= n;
	}
	if (flag == true)
	{
		s += "-";
	}
	reverse(s.begin(), s.end());
	cout << s << endl;
	return 0;
}

牛客刷题——进制转换_第1张图片

你可能感兴趣的:(C++,C语言,c++,开发语言)