题目描述
用递归算法将一个十进制数 X 转换成任意进制数 M(M≤16)。
输入格式
一行两个数,第一个十进制数 X,第二个为进制M。
输出格式
输出结果。
输入输出样例
输入 #1
31 16
输出 #1
1F
#include<bits/stdc++.h>
using namespace std;
//初始化数组(来存储转换过后的数)
int m[100005];//定义在外面是因为怕函数里会爆掉,个人习惯
int main(){
int n,k,i=1;//初始化 原数 进制 统计变量
cin>>n>>k;
//while循环 转换每一位数字
while(n!=0){
m[i] = n%k;
n = n/k;//注意变化原数的值
++i;//记录转换后的位数
}
--i;//最后i会多1,需要减掉
//for循环 倒序输出每一位
for(int j=1;j<=i;j++){
//数组中会出现10,11这样大于9的数,需要用字母表示
if(m[i-j+1]==10) cout<<'A';//注意是倒序输出 首项-末项+1
else if(m[i-j+1]==11) cout<<'B';//大小写也要注意
else if(m[i-j+1]==12) cout<<'C';
else if(m[i-j+1]==13) cout<<'D';
else if(m[i-j+1]==14) cout<<'E';
else if(m[i-j+1]==15) cout<<'F';
else cout<<m[i-j+1];
}
return 0;
}
总结
整体思路:
1.读取数据;
2.while 逐位转换;
3.for 倒序输出。
感谢阅读,有任何问题都可以评论或私信,支持一下up吧!