C语言通过栈实现将十进制转为八进制输出
2017-03-30 15:48
399 查看
# include<stdio.h> #include<malloc.h> # define stackincrement 10 # define stack_size 100 typedef int ElemType; typedef int status; typedef int SelemType; # define OK 1 # define OVERFLOW -1 # define ERROR -1 typedef struct { int *base; int *top; int stacksize; } SqStack; status InitStack(SqStack *S){ S->base = (SelemType *)malloc(stack_size * sizeof(ElemType)); if (!S->base) { exit(OVERFLOW); } S->top = S->base; S->stacksize = stack_size; return OK; } status GetTop(SqStack *S,SelemType e){ if(S->top == S->base) return ERROR; e = (*S->top - 1); return OK; } status Push(SqStack *S,SelemType e){ if ((S->top - S->base ) >= S->stacksize) { S->base = (ElemType*)realloc(S->base,(S->stacksize + stackincrement) * sizeof(ElemType)); if (!S->base) exit(OVERFLOW); S->top = S->base + S->stacksize; S->stacksize += stackincrement; } *S->top++ = e; return OK; } status StackEmpty(SqStack *S){ if (S->base == S->top) { return 1; }else{ return 0; } } status Pop(SqStack *S,SelemType *e){ if (S->top == S->base) { return ERROR; } S->top = S->top - 1; *e = *S->top; return OK; } void conversion(SqStack *S,int num){ int a; while(num){ a = num % 2; Push(S,a); num /= 2; } printf("转换的八进制数:"); while(!StackEmpty(S)){ SelemType e; Pop(S,&e); printf("%d", e); } } main (){ SqStack stack; InitStack(&stack); int num; printf("请输入一个十进制数:"); scanf("%d",&num); conversion(&stack,num); }
实现结果:
相关文章推荐
- 十进制,八进制,十六进制在C语言当中的输出
- 指针实现字符串IP地址转化为十进制IP地址输出-c语言
- c语言实现,输入一个数,转为16进制输出
- C语言实现输出单精度、双精度小数十进制形式
- C语言将十进制整数输出为八进制和十六进制
- C语言十进制,八进制,十六进制输出分析
- C语言实现十进制转八进制
- 栈的应用-用栈实现八进制的顺序输出(c语言实现)
- C语言实现数值转换(十进制转八进制)
- 将十进制整形数转换成二进制,然后通过字符型输出 自己实现的一个简单的例子
- C语言——十进制转为二进制、八进制、十六进制的函数转换
- 【C语言】简易实现八进制转十进制(最大四位数)
- 进制转换 十进制转化为八进制 通过栈实现
- c语言之辗转相除法实现十进制转换为八进制
- 通过编程实现将十进制整数转换为二进制
- 初入C语言!整数算法练习1:通过编程实现,统计1~n有多少个9 ? 提示:n通过参数传入!
- 用不同的方法实现字符串的逆序输出(C语言实现)
- Lua里实现将Table转为String输出,Debug神器
- C语言:实现一个函数,打印乘法口诀表,如:输入9,输出9*9口诀表
- c语言实现输出二维蛇形矩阵