给定一个十进制数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;
}

 

 
 
 
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值