当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 【TOJ 1386】进制转换

【TOJ 1386】进制转换

2018年03月07日  | 移动技术网IT编程  | 我要评论

山东张辉,筱崎爱av,女皇之刃叛乱

 

Description

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

Input

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

Output

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

Sample Input 

7 2
23 12
-4 3

Sample Output

111
1B
-11

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int n,r,t,a[101],i;
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        if(n<0)
        {
            n=-n;                        //如果十进制数n是负数,看成正数
            printf("-");                 //再打印负号
        }     
        if(n==0)
        printf("0");                     //如果十进制数是0,直接输出0
        for(i=1;n>0;i++)                 //当n=0时跳出
        {
            t=n%r;                       //t为十进制数除r进制数的余数
            a[i]=t;                      //保存该余数
            n=n/r;                       
        }    
        for(i=i-1;i>=1;i--)              //倒序输出
        { 
            if (a[i]==10)
            printf("A"); 
            else if (a[i]==11)
            printf("B"); 
            else if (a[i]==12)
            printf("C"); 
            else if (a[i]==13)
            printf("D"); 
            else if (a[i]==14)
            printf("E"); 
            else if (a[i]==15)
            printf("F"); 
            else printf("%d", a[i]); 
        }
        printf("\n");
    }
    return 0;
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网