C语言实现任意两种进制之间互相转换

题目描述

实现任意两种进制之间的互相转换,数值为非负整数。(2进制~16进制)之间任意选择。
输入:包含三个参数,第一个参数为原本的进制,第二个参数为其数值,第三个参数为要转换的进制形式。
输出:输出要转换的进制形式
输入:
2 11010100 16
输出:
D4
输入:
16 D4 2
输出:
11010100
具体测试案例,自己多想想,我这边就不再提供了
思路:分两步,第一步,a进制转换为10进制,我们从a进制的最后一位开始研究。第二步,利用得到的十进制,将数据转换为我们现在所需要的b进制。

//实现任意两种进制之间的转换 
#include
#include
#include
#include
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<<"十进制数字为:"<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<cout<return 0;
} 

你可能感兴趣的:(水题大作战)