栈的应用——数值转换为任意进制
2016-12-01 20:28
260 查看
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct sqstack { int *base; int *top; int stacksize; }sqstack; int InitStack(sqstack *s ) { s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!s->base)return 0; s->top=s->base; s->stacksize=STACK_INIT_SIZE; return 1; } int Push(sqstack *s ,int e) { if(s->top-s->base>=s->stacksize) { s->base=(int *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int)); if(!s->base)return 0; s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top++=e; return e; } int Pop(sqstack *s, int e) { if(s->top==s->base)return 0; e=*--s->top; return e; } int StackEmpty(sqstack *s) { if(s->top==s->base)return 1; else return 0; } int main() { int n,e,sh; sqstack sq; InitStack(&sq); printf("输入要转化的数字\n"); scanf("%d",&n); printf("输入要转化成几进制数\n"); scanf("%d",&sh); printf("%d数转化成%d进制\n",n,sh); while(n) { Push(&sq,n%sh); n=n/sh; } while(!StackEmpty(&sq)) { e=Pop(&sq,e); switch(e) { case 10: printf("A");break; case 11: printf("B");break; case 12: printf("C");break; case 13: printf("D");break; case 14: printf("E");break; case 15: printf("F");break; default: printf("%d",e); } } printf("\n"); return 0; }
相关文章推荐
- 任意进制的数值转换 C++版
- 十进制数任意转换2-9进制数——栈的应用
- 十进制转换成任意进制(栈的应用)
- 十进制任意整数类型向常见数值类型进制转换的通用办法
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- 任意进制相互转换
- 栈的应用:进制转换和简易计算器的实现
- 任意进制间的转换
- 新手学习数据结构与算法---堆栈的应用之进制转换
- 将任意二进制转换成十进制
- 任意十六进制数转换成十进制数----不管你输入多长都能转换
- 2-36之间的任意进制之间转换的代码
- 十进制转换为任意进制
- 任意十六进制数转换成十进制数----不管你输入多长都能转换
- 任意十六进制数转换成十进制数----不管你输入多长都能转换
- 将10进制数转换为任意进制数进行显示
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- AS3中各个数值进制之间的转换
- 转帖:c#任意进制转换(2-36进制之间的转换)