2031 HDOJ 进制转换

你说的曾经没有我的故事 提交于 2019-11-29 17:53:58
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>
#include<algorithm> 
#include<string> 
using namespace std;
int main()
{
    int N,R;
    string a("0123456789ABCDEFG");     
    while(cin>>N>>R)                   //输入数字N,要转换到的进制R 
    {
        string s="";
        bool flag=true;
        if(N<0)                       //若N为负,进行处理  
        {
            flag=false;
            N=-N;
        }
        if(N==0)                     
        cout<<0<<endl; 
        while(N>0)          
        {
            s=s+a[N%R];
            N/=R;
        }
        if(!flag)
        {
            s="-"+s;
         } 
        reverse(s.begin(),s.end());  //将s逆序 
        cout<<s<<endl;
    }
    return 0;
 } 

 

这仅仅是十进制转换为其他进制的问题,后续还要做更加全面的完善。

00:14:3800:14:432019-09-16

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!