C语言习题5.19--进制转换

C语言习题5.19--进制转换

时间: 1ms        内存:64M

描述:

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

输入:

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

输出:

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

示例输入:

7 2
23 12
-4 3

示例输出:

111
1B
-11

提示:

参考答案(内存最优[752]):

#include <stdio.h>
char f(char n)
{
return (n<10?(n+'0'):(n-10+'A'));
}
int main()
{
 char b[32];
 int n, m, i, k;
 while (scanf("%d %d", &n, &m) == 2){
   if (n == 0){
    printf("0\n");
    continue;
   }
   if (n < 0){
    printf("-");
    n = -n;
   }
   k = 0;
   while (n > 0){
    b[k++] = n%m;
    n /= m;
   }
   for (i=k-1; i>=0; i--){
    printf("%c", f(b[i]));
   }
   printf("\n");
 }
 return 0;
}

参考答案(时间最优[0]):

#include <stdio.h>
void DectoR(int n,int radix)
{
    if(n==0)
        return ;
    DectoR(n/radix,radix);
    int r = n%radix;
    if (r<10)
        putchar(r+'0');
    else
        putchar(r-10+'A');
}
int main()
{
    int n, m;
    while (scanf("%d %d", &n, &m) == 2)
    {
        if (n == 0)
        {
            printf("0\n");
            continue;
        }
        if (n < 0)
        {
            printf("-");
            n = -n;
        }
        DectoR(n,m);
        printf("\n");
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注