递归解决:
char ch[]="0123456789ABCDEF"; //进制所使用的数字
void Convert(int num, int d) //递归算法
{
if(num==0) cout<<"转换结果:"; //开始输出
else
{ Convert (num/d, d); //对商进行转换
cout<<ch[num%d]<<" "; //注意此输出动作的位置
}
}
非递归解决,利用栈的特点:
char ch[]="0123456789ABCDEF";
void Convert (int num, int d) //非递归算法
{ SqStack S; DataType result; int r;
InitStack(S);
while(num!=0){
r=num%d; //取余数r
Push(S,ch[r]); //余数入栈
num=num/d; //利用商进行下一次运算
}
while(StackEmpty(S)!=1){
Pop(S, result); cout<<result;
}
}