這是進制轉換中非常基礎的一種題型。需要理解進制之間轉換的規律。十進制轉換成其他進制可以使用整除倒序取余法。其他進制轉換成十進制各個位置乘以10進制相應的位權即可(如果是16進制,那么會出現字母,可以用整形來存儲。字符串可以做加減運算,原理是ASCII碼之間的運算)
下面的代碼用的是遞歸,算法十分簡易。因為是遞歸,所以遇到很大的數字時,可能出現內存上溢。
#include<stdio.h>
int fact(int n)
{
if(n < 2) //將2換成其他數字如8就可以變成十進制轉八進制
return n;
else
return fact(n/2)*10+n%2;
}
int main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("%d",fact(n));
return 0;
}