6-进制转换

100 阅读1分钟

问题描述:

输入一个十进制数 N,将它转换成R 进制数输出。在 10≤R≤16的情况下,用'A'表示 10,用'B'表示11,用'C'表示12,用'D'表示13,用'E'表示14,用'F'表示15。

输入格式

输入包含两个整数 N(N≤10000)和 R(2≤R≤16)。

注意,N有可能是负整数。

输出格式

输出一行,表示转换后的数。

样例输入
23 12
样例输出

1B

代码详解:

#include<bits/stdc++.h>  
using namespace std;  
int main()  
{  
    int N,R;  
    cin>>N>>R;  
    int val=abs(N);  //取绝对值 
    char t[10010];  //开辟数组 
    int count=0;  //数组下标 
    int yushu;  
    while(val)  //进行%和/=循环运算 
    {  
        yushu=(val%R);  //  %和/=进制转换关键 
        if(yushu>=10)  
        {  
            switch(yushu)  
            {  
                case 10:t[count++]='A';break;  
                case 11:t[count++]='B';break;  
                case 12:t[count++]='C';break;  
                case 13:t[count++]='D';break;  
                case 14:t[count++]='E';break;  
                case 15:t[count++]='F';break;  
            }  
        }  
        else  
            t[count++]=yushu+'0';  
        val/=R;  //  %和/=进制转换关键 
    }  
    if(N<0)  
        cout<<"-";  //负数 
    if(count==0)   
        cout<<0;  //0
    else  
    {  
        for(int i=count-1;i>=0;i--)  
            cout<<t[i];  
    }  
    return 0;  
}  

\