c++ 进制转换
题目描述
关于把整数N由十进制转化为R进制,我们习惯用的办法是“除R倒取余”,这种方法需要用N反复对R进行除法操作,并在做除法操作的时候记录每个余数,最后反序输出。实际上,关于进制转换,用递归的方法求解会更加简洁明了,你知道怎么做么?
输入
两个正整数N,R。1 <= N <= 10000,2 <= R <= 10。
输出
用递归的方法求十进制的N转化为R进制的结果。
样例输入
52 2
样例输出
110100
提示
Source Code
#include <iostream>
using namespace std;
int main()
{
long n;
int p,c,m=0,s[100];
cin >> n;//n是要转换的数 (有可能很长)
cin >> p;//p是进制数
while (n != 0)//当n被取完时退出循环
{
c = n % p;//c是分离出来此进制的第一位
n = n / p;//对2取整
m ++;//转换后一共有几位
s[m] = c;//把转换后的单个位放到数组里面
}
for(int k = m;k >= 1;k --)//按格式输出
{
if(s[k] >= 10)
cout << (char)(s[k]+55);
else
cout << s[k];
}
cout << endl;
return 0;
}