代码如下:
注意:
1、p48页 算法3.1
2、把此段代码添加到“数据结构(严蔚敏)顺序栈” 就可以了
对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数
void conversion() /* 算法3.1 */
{ SqStack s;
unsigned n; /* 非负整数 */
SElemType e;
InitStack(&s); /* 初始化栈 */
printf("n(>=0)=");
scanf("%u",&n); /* 输入非负十进制整数n */
while(n) /* 当n不等于0 */
{
Push(&s,n%8); /* 入栈n除以8的余数(8进制的低位) */
n=n/8;
}
while(!StackEmpty(s)) /* 当栈不空 */
{
Pop(&s,&e); /* 弹出栈顶元素且赋值给e */
printf("%d",e); /* 输出e */
}
printf("/n");
}
对于输入的任意一个非负10进制整数,打印输出与其等值的16进制数
void conversion()
{ SqStack s;
unsigned n; /* 非负整数 */
SElemType e;
InitStack(&s); /* 初始化栈 */
printf("n(>=0)=");
scanf("%u",&n); /* 输入非负十进制整数n */
while(n) /* 当n不等于0 */
{
Push(&s,n%16); /* 入栈n除以16的余数(16进制的低位) */
n=n/16;
}
while(!StackEmpty(s)) /* 当栈不空 */
{
Pop(&s,&e); /* 弹出栈顶元素且赋值给e */
if(e<=9)
printf("%d",e);
else
printf("%c",e+55);
}
printf("/n");
}
本文提供了一种使用栈数据结构将非负十进制整数转换为等值的八进制和十六进制数的方法。通过逐步除以目标进制并利用栈来反转数字顺序,实现了进制转换。
顺序栈_数制转换&spm=1001.2101.3001.5002&articleId=1643651&d=1&t=3&u=0837a78607a74fb285f5f3bea8a7e158)
8957

被折叠的 条评论
为什么被折叠?



