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

题目:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。

输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10
用A表示,等等)
示例1:
输入
7 2
输出
111

分析:

将一个十进制数M转换成N进制数,就是用M模N取到对应的最后一位,然后M除以N就去掉一位,继续进行下一位...直到M为0、因为N进制的数就是0~N-1,因此模N就是拿到对应位。

void radix_reverse()
{
	//由于N的取值范围是2~16
	string ret;
	string table("0123456789ABCDEF");

	int M;
	int N;
	cin >> M >> N;

	int flag = 1;//默认是正数
	if (M < 0)//假如是负数
	{
		flag = 0;
		M = -M;
	}

	while (M)
	{
		ret += table[M%N];
		M /= N;
	}

	if (flag == 0)//是负数
	{
		ret += '-';
	}
	//得反转一下字符串(之前是从后到前倒着存的)
	reverse(ret.begin(), ret.end());
	cout << ret << endl;
}
 
 
 

猜你喜欢

转载自blog.csdn.net/lyl194458/article/details/89243293