进制的转换 有问题版本

来源:互联网 发布:独立ip linux虚拟主机 编辑:程序博客网 时间:2024/06/05 14:51

输入一个十进制数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<string.h>int main(){    int x, b, i, n,g, count;    int a[100];     while(~scanf("%d%d",&x,&b))    {        memset(a,0,sizeof(a));        g=x;        if(x>0 )        {            for(i=0; ; i++)            {                n=0;                n=x % b;                a[i] = n;                x = (x-n)/b;                count = i;                if (x<1)                break;        }   }        if(x<0 )            {            for(i=0; ; i++)            {                n=0;                n=x % b;                a[i] = n;                x = (x-n)/b;                count = i;                a[i]=-a[i];                if (x>-1)                break;            }                   }        if(g<0)            a[i]=-a[i];        for(i=count; i>=0; i--)        {            if(a[i]==10)            {                printf("A");                continue;            }            if(a[i]==11)            {                printf("B");                continue;            }            if(a[i]==12)            {                printf("C");                continue;            }            if(a[i]==13)            {                printf("D");                continue;            }            if(a[i]==14)            {                printf("E");                continue;            }            if(a[i]==15)            {                printf("F");                continue;            }            printf("%d",a[i]);        }        printf("\n");    }    return 0;}