将输入的十进制数转换为对应的2位8位16位进制的数
//链表栈,顺序栈的基本操作请参考之前的文章http://t.csdn.cn/By5Ko
//栈的应用1:数值的转换
void conversion(void)
{
LinkStack s=stack_init();
uint num,N;//需要转换的十进制,进制
printf("plz input A num:");
scanf("%d",&num);
printf("plz input decimal(2 8 16):");
scanf("%d",&N);
int ret;
while(num)//进栈
{
//计算num和N取模的结果,并将过入栈
ret=num % N;
if(ret>=0 && ret<=9)
Push(&s,ret+'0');//存放字符类型
else if(ret>=10 && ret<=15)
Push(&s,ret-10+'A');
num=num/N;
}
//出栈
ElemType data;
while (s)
{
pup(&s,&data);
printf("%c",data);//打印的为字符类型,注意输出为%c
}
printf("\n");
}
注意:栈的的数据类型为字符类型,将十进制转化为对应的其他进制就是在这个十进制的数的基础上连续除以10取余,然后以此存放到栈中入栈,直到取余为0时,出栈打印出对应的值,即为对应的。
结果显示: