进制转换

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 <stdio.h>
#include <stdlib.h>
#define N 33
void num (int n, int r, char a[]);
int main()
{
    char a[N];
    int n,r;
    while (scanf ("%d%d", &n, &r)!=EOF)
    {
        num(n, r, a);
    }
    return 0;
}
void num (int n, int r, char a[])
{
    int i = 0;
    if (n<0)
    {
        n = -n;
        printf("-");
    }
    while (n>0)
    {
        a[i]=n%r;
        if (a[i]>=10)
            a[i]='A'+a[i]-10;
        n = n/r;
        i++;
    }
    a[i] = '\0';
    for ( i = i-1; i>=0; i--)
    {
        if(a[i]>='A' && a[i]<='Z')
            printf("%c", a[i]);
        else
            printf ("%d", a[i]);
    }
    printf ("\n");

}
 
 
 
 
 
 
 
 
 

posted on 2015-01-18 16:08  梦林``ysl  阅读(108)  评论(0编辑  收藏  举报

导航