洛谷B2143 进制转换

题目描述

用递归算法将一个十进制数 X 转换成任意进制数 M(M≤16)。

输入格式

一行两个数,第一个十进制数 X,第二个为进制M。

输出格式

输出结果。

输入输出样例

输入 #1

31 16 

输出 #1

1F
#include
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<

总结 

整体思路:

1.读取数据;

2.while 逐位转换;

3.for 倒序输出。

感谢阅读,有任何问题都可以评论或私信,支持一下up吧!

你可能感兴趣的:(算法,数据结构,c++)