杭电2031——进制转换C++版

Problem Description
输入一个十进制数N,将它转换成R进制数输出。

Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

Sample Input
7 2
23 12
-4 3

Sample Output
111
1B
-11

#include<iostream>
using namespace std;
int main()
{
    long n;
    int k;
    int p,c,m=0,i,a;
    while(cin>>n>>p)
    {
        a=10;
        if(n<0)
        {
            a*=-1;
            n*=-1;
        }
        m=0;
        int s[100]={0};
        while(n!=0)//进制转换,结果存入数组中s[m] 
        {
            c=n%p;
            n=n/p;
            s[m]=c;
            m++;
        }
        if(a<0)
        cout<<"-";
        for(k=(m-1);k>=0;k--)
        {
            if(s[k]>=10)
            cout<<(char) (s[k]+55);
            else
            cout<<s[k];
        }
        cout<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43289087/article/details/88646596