2031--進制轉換

輸入一個十進制數N,將它轉換成R進制數輸出。

##


進制轉換常用的一個方法就是除基取餘法,而十六進制所不同的特點是它可以用字母表示,比較複雜了,所以用一個數組來存放十六進制中可能出現的數字和字母,然後除基取餘,用另一個數組來存放對應的十六進制數,最後結果是倒序輸出的。注意這兩個數組都是字符型的。
需要轉換的 十進制數也有可能是一個負數,這時不能直接用負數進行計算,而是先轉換成一個正數,轉換成十六進制後在前面加上字符“-”。對輸入數字要進行正負判斷,分別處理。

#include<stdio.h>
int main()
{
    int i,n,r,x;
    char a[1000],b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    while (scanf ("%d%d",&n,&r)!=EOF)
    {
        if (n>0)
            x=1;
        else
            x=-1;
        n=n*x;
        for (i=0;i>=0;i++)
        {
            a[i]=b[n%r];
            if (n/r==0)
                break;
            n=n/r;
        }
        if (x<0)
            a[++i]='-';
        for (;i>=0;i--)
            printf ("%c",a[i]);
        printf ("\n");
    }
    return 0;
}
發佈了41 篇原創文章 · 獲贊 0 · 訪問量 8095
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章