想要实现十进制数转任意进制数,就需要用到短除法。先定义变量:
int n,x;
n代表准备转换的数,x代表需要把转换成几进制的数。
接着我们定义一个数组用来存放每次短除的值:
int ans[45];
定义一个t,是每次短处ans的下标:
int t = 1;//本人喜欢从1下标开始,不要见怪
然后实现短处:
while(n != 0)
{
ans[t] = n%x;
t++;
n /= x;//更新数字n
}
最后实现输出,如果ans[i]大于等于0并且小于等于9,那么输出ans[i]-'0'(需要把ASCLL码转换成数字),否则,进行一个强转,将ans[i]-55之后在输出(字符串学好的一定能看懂):
for(int i = t-1;i >= 1;i--)
{
if(ans[i] >= 0 && ans[i] <= 9)
{
cout << ans[i];
}
else
{
cout << (char)(ans[i]+55);
}
}
全部代码如下:
#include<iostream>
using namespace std;
int ans[45];
int main()
{
int n,x;
cin >> n;
cin >> x;
int t = 1;
while(n != 0)
{
ans[t] = n%x;
t++;
n /= x;//更新数字n
}
//最后一个余数
for(int i = t-1;i >= 1;i--)
{
if(ans[i] >= 0 && ans[i] <= 9)
{
cout << ans[i];
}
else
{
cout << (char)(ans[i]+55);
}
}
return 0;
}