编程题——进制转换


编程题——进制转换


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

示例:
输入
7 2
输出
111


程序代码如下:



#include <iostream>
#include <string>
using namespace std;

/*十进制转其他进制:除权取余倒着读
 *不断除N直到M为0,取余数对应保存到s,最后逆置s输出即可
 *考虑几种情况:
 *	负数:先转为正数,最后再补'-';
 *	余数超过9:直接创建table来对应保存,如10对应为第10个元素A
*/
int main()
{
	int M, N;
	bool flag = false;//用来判断是否为负数以进行加'-'操作
	string s, table = "0123456789ABCDEF";
	cin >> M >> N;
	if (M < 0)
	{
		M = 0 - M;
		flag = true;
	}
	while (M)
	{
		s += table[M%N];
		M /= N;
	}
	if (flag)
		s += '-';
	reverse(s.begin(), s.end());
	cout << s << endl;
	return 0;
}


程序运行结果如下:


在这里插入图片描述

发布了140 篇原创文章 · 获赞 156 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览