算法如下:
1)开辟一个整型数组a,用于存放指定的进制数。输入整数X和需要的进制数r,n=1
2)n=n+1,a[n]=x mod r,x=x div r
(上面的mod是取余数运算,div是取整数商运算。举个例:17 mod 5=2,17 div 5 = 3)
3)若x>0,转2)
4)输出a[n],a[n-1],...,a[2],a[1],就是指定整数的r进制值,算法结束。
不断除一个数取整取余..倒着拼接成字符串就出来了...
比如81 它的9进制就是
81/9 = 9 + [0]
9/9 = 1 + [0]
1/9 = 0 + [1]
等到除完结果为0就结束 拼接出来的结果就是"100"
#include
#define MAX_SIZE 100
int main()
{
int stack[MAX_SIZE];
int top;
int num;
int temp;
printf("请输入十进制数:");
scanf("%d", &num);
printf("请输入待转换的进制:");
scanf("%d", &temp);
top = 0;
do
{
stack[top++] = num % temp;
num /= temp;
} while (num);
while (top)
{
printf("%d", stack[--top]);
}
printf("\n");
return 0;
}