题目描述
给定一个十进制数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;
}
运行结果:
如果发现有不对的地方希望大佬们批评指正!