数学问题之进制转换(M进制转换成N进制)_45

该程序实现将M进制的数字转换为N进制,通过读取输入的M和N值以及M进制的数X,首先将其转换为十进制,然后转换为N进制。转换过程中使用了栈数据结构,输出的N进制数按逆序输出。注意,输入的大写字母在输出时会转换为小写。
摘要由CSDN通过智能技术生成

进制转换
描述
将M进制的数X转换为N进制的数输出。
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
示例1
输入:
10 2
11
输出:
1011
备注:
注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。

#include<bits/stdc++.h>
using namespace std;
//M进制转换为N进制 
long long charTOint(char ch){
	if(ch>='0' && ch<='9'){
		return ch-'0';
	}
	else{
		return ch-'A'+10;
	}
}
char intTOchar(int temp){
	if(temp>=0 && temp<=9){
		return temp+'0';
		//整数变字符,如果写 -'0'就会变成汉字
		//跟ASCII码有关系 
	}
	else{
		return temp-10+'a';
	}
	
}
int main(){
	int m,n;
	string str;
	//因为可能含有符号所以必须是字符串的形式 
	cin>>m>>n;
	cin>>str;
	stack<char> data;
	long long num=0;
	//m进制先转换成十进制
	//题目备注说输入时会有大写字母出现
	for(int i=0;i<str.length();i++){ 
		num*=m;
		num+=charTOint(str[i]);
	}
	//十进制再转换成n进制 
	//题目备注说输出时应该输出小写字母
	while(num!=0){
		int temp=num%n;
		data.push(intTOchar(temp));
		num=num/n;
	}
	while(!data.empty()){
		cout<<data.top();
		data.pop();
	}
	return 0;
}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江星竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值