杭電acm2031進制轉換

進制轉換

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 25514    Accepted Submission(s): 14219


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
C語言程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int a,b,i,s[1000],flag;
    while (scanf("%d%d",&a,&b)!=EOF)
    {
        flag=0;
        if (a<0)
        {
            a=-a;
            flag=1;
        }
        for (i=0;a!=0;i++)
        {
            s[i]=a%b;
            a=a/b;

        }
        if (flag==1)
            printf("-");
        for (i=i-1;i>=0;i--)
        {
            if (s[i]>9)
                switch (s[i])
                {
                case 10:
                    printf("A");
                    break;
                case 11:
                    printf("B");
                    break;
                case 12:
                    printf("C");
                    break;
                case 13:
                    printf("D");
                    break;
                case 14:
                    printf("E");
                    break;
                default:
                    printf("F");
                }
                else
                printf("%d",s[i]);
                if(i==0)
                printf("\n");

        }
    }

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章