将十进制的数字转换成各种不同的进制,这里以八进制为例,其实就是不断的除以八然后取余数,虽然用数组也不难实现,但是显然栈的后进先出的特性使得更容易理解了,具体实现方法如下:
int main(void)
{
SqStack S;
InitStack(S);
int num;
printf("请输入一个十进制数字:\n");
// 将一个十进制数存在num中
scanf("%d", &num);
while( num > 0 )
{
// 取余数,并将余数入栈
Push(S, num%8);
// 取余数之后将整数除以八进行下一次取余直到最后一位
num = num / 8;
}
printf("转换为八进制:\n");
while( !StackEmpty(S) )
{
// 依次将栈中的内容取出
Pop(S, num);
printf("%d", num);
}
system("pause");
}
想要转换成其它进制也是类似的方法,只要把8替换掉就可以了。在测试程序时,需要与我上一篇日志所提供的代码结合起来用,地址。