在算法练习时,经常碰到进制转换的问题,这些问题大同小异,这里就简单的写个程序方便自己复用进制转换算法。
#include<iostream>
#include<string>
using namespace std;
//num是需要是转换的数字,form是要目标进制
string trans(int num,int form) {
string str;
while (num)
{
int a = 0;
a = num % form;
num /= form;
if (a>10)
{
str += a - 10 + 'A' ;
}
else
{
str += a + '0';
}
//此时得到的字符串是逆置的,需要进行转换
}
return str;
}
string reverse(string &s) {
char temp;
for (int i = 0, j = s.length() - 1; i < j; i++,j--)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
return s;
}
int main() {
int n, form;
string ret;
while (cin>>n>>form,n)//两个数都输入后,n为0则退出循环
{
ret = trans(n, form);
reverse(ret);
cout << ret << endl;
}
system("pause");
return 0;
}