輸入一個十進制數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;
}