代码题--C++--任意进制间转换将十进制数转换为任意进制
题目描述
设计一个函数, 可以将任意十进制的数, 转换成任意2到9的进制表示的形式。
输入描述:
需要转换的数字x(0<=x<=1e18) 转换使用的进制k(2<=k<=9)
输出描述:
对应进制的结果
示例1
输入
33 2
输出
100001
解题思路:首先要知道怎么算n进制的数,就是将数字除以n每次得到的余数将按n的0次方开始得出的值,然后先用一个长为64的数组存放值,然后从后向前输出数据,就是转换后的数据。
举例:NUM=13,n=2;
13%2 = 1; 13/2 = 6;
6%2 = 0; 6/2 = 3;
3%2 = 1; 3/2 = 1;
1%2 = 1; 1/2 = 0;
输出的二进制值为:1101。
代码如下:
#include <iostream>
using namespace std;
void Turn_n(unsigned long long NUM,unsigned int n)
{
int i = 0;
unsigned long long k = 0;
unsigned int Turnres[64] = {};
do{
Turnres[i] = NUM % n;
NUM /= n;
i++;
}while(NUM != 0);
for(i-- ; i >= 0; i --)//从后向前输出
{
cout << Turnres[i];
}
cout << endl;
return ;
}
int main()
{
unsigned long long NUM = 0;
unsigned int n;
cin >> NUM >> n;
Turn_n(NUM,n);
return 0;
}
结果: