7. 十进制转换任意进制
题目编号 :Exp06-Enhance05,freshman-1022题目名称:十进制转换任意进制
题目描述:编写程序,用递归方法将十进制的正整数 N 转换为 b 进制数(2≤b≤36),其中字符、ASCII码值和数值之间的对应关系如下:
输入:一行输入两个非负整数,分别是十进制的 N 和 b ,其中 0 <=N <=2^31 ,2 <=b <= 36 。
输出:N 的 b 进制数。
样例1:
输入:
579 8
输出:
1103
样例2:输入:
579 20
输出:
18J
先上代码
#include <iostream>
using namespace std;
void trans(long long a, int n)
{
if (0 == a)
return;
trans(a / n, n);
cout << "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[a % n];
}
int main()
{
long long a;
int n;转化为n进制
cin >> a >> n;
if (a == 0)cout << "0";
else trans(a, n);
return 0;
}
这里先写了一个递归函数,
退出条件为当a==0时,即a的位数全被取完时退出递归
根据a%n的值确定取字符串中的位数即可,
此解法运用了递归的思想,比较简单粗暴