/* 利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能。 */ /**********************************/ /*文件名称:lab4_01.c */ /**********************************/ #include "seqstack.h" /*请将本函数补充完整,并进行测试*/ void Dto16(int m) { seqstack s; /*定义顺序栈*/ init(&s); printf("十进制数%u对应的十六进制数是:",m); //%d 输出有符号十进制数 %u 输出无符号十进制数 while (m) { push(&s,m%16); m=m/16; } while (!empty(&s)) printf("%x",pop(&s)); printf(" "); } int main() { int m; printf("请输入待转换的十进制数: "); scanf("%u",&m); Dto16(m); return 0; }
/* 利用链式栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能。 */ /**********************************/ /*文件名称:lab4_02.c */ /**********************************/ #include "linkstack.h" /*请将本函数补充完整,并进行测试*/ void Dto16(unsigned int m) { linkstack s; s=init(); printf("十进制数%u对应的十六进制数是:",m); while (m) { s=push(s,m%16); m/=16; } while (!empty(s)) { printf("%x",read(s)); s=pop(s); } printf(" "); } int main() { unsigned int m; printf("请输入待转换的十进制数: "); scanf("%u",&m); Dto16(m); return 0; }
#include <stdio.h> #include "stack.h" /*引入自定义的字符栈结构*/ /**********************/ /* 判断是否为运算符 */ /*********************/ int is_op(char op) { switch(op) { case '+': case '-': case '*': case '/':return 1; default:return 0; } } /****************************/ /* 判断运算符的优先级 */ /****************************/ int priority(char op) { switch(op) { case '(':return 0; case '+': case '-':return 1; case '*': case '/':return 2; default: return -1; } } /*********************************/ /*中缀表达式,转换为后缀表达式 */ /*********************************/ void postfix(char e[],char f[]) {seqstack opst; int i,j; initstack(&opst); push(&opst,'