实现任意两种进制之间的互相转换,数值为非负整数。(2进制~16进制)之间任意选择。 输入:包含三个参数,第一个参数为原本的进制,第二个参数为其数值,第三个参数为要转换的进制形式。 输出:输出要转换的进制形式 输入: 2 11010100 16 输出: D4 输入: 16 D4 2 输出: 11010100 具体测试案例,自己多想想,我这边就不再提供了 思路:分两步,第一步,a进制转换为10进制,我们从a进制的最后一位开始研究。第二步,利用得到的十进制,将数据转换为我们现在所需要的b进制。
//实现任意两种进制之间的转换 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int main(){ int a,b;//a,代表本来所属禁止,b代表将要转换的进制 string data;//使用data来存放a类型的数据 char data_b[100];//存放b进制的数据 cin>>a>>data>>b; int num_10=0;//作为中间变量,存储动态的中间10十进制 int value=1;//将value作为权重 for(int i=data.length()-1;i>=0;i--){//将源进制转换为十进制 int temp=0; if(data[i]>='0'&&data[i]<='9') temp=data[i]-'0'; else temp=data[i]-'A'+10;//求出该位对应的10进制数 num_10+=temp*value; value*=a; } cout<<"十进制数字为:"<<num_10<<endl; int b_cnt=0;//存储b类型中字符的个数 do{ int temp=0; temp=num_10%b; num_10/=b; if(temp>=10) data_b[b_cnt++]=temp-10+'A'; else data_b[b_cnt++]=temp+'0'; }while(num_10); cout<<"b类型数据为:"; for(int i=b_cnt-1;i>=0;i--) cout<<data_b[i]; cout<<endl; return 0; } 粥粥同学 认证博客专家 搬砖标兵 勤劳的网管 力大无穷,擅长搬运各种型号的服务器;推理大师,致力于各种网络故障排除;多才多艺,精通多种语言的“Hello World”。