本文主要是介绍进制换换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
求任意两个不同进制非负整数之间的转换,
输入只有一行三个数a,n,b,表示将a进制的n转换为b进制、
#include <iostream>
#include <string>using namespace std;int main()
{int a,b,i,j;string str;while(cin>>a>>str>>b){int tmp = 0; //存放a进制的n转化为10进制的结果int lenth = str.length();//字符串的长度int c = 1;//各个数位的权重初始化为1,最低位权证为1,之后每位权重是前一位权重的a倍for(i = lenth-1; i>=0; i--){int x;//计算该位上的数字if(str[i]<='9'&&str[i]>='0'){x = str[i] - '0';}else if(str[i]>='a'&&str[i]<='z'){x = str[i] - 'a' + 10; //大于十的要加10}else if(str[i]>='A'&&str[i]<='Z'){x = str[i] - 'A' + 10;}tmp +=x*c; //数值乘以权重相加c *= a; //不断改变权重}char ans[40],size = 0;do{int x = tmp%b;ans[size++] = (x<10)?x+'0':x+'A'-10;//将数字转换为字符tmp /= b;}while(tmp != 0);for(int k = size-1; k >= 0;--k){cout<<ans[k];}cout<<endl;}return 0;
}
这篇关于进制换换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!