C语言实现十进制数转换为八进制数
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 //定义栈元素的数据类型 typedef int SElemType; typedef struct { SElemType data[MAXSIZE]; int top; int base; } SqStack;
void conversion(SqStack *s, int n) { SElemType e; //将n除8取余,并将余数入栈 while (n != 0) { e = n % 8; Push(s, e); n = n / 8; } }
void InitStack(SqStack *s) { s->top = 0; s->base = 0; }
int StackEmpty(SqStack *s) { if (s->top == s->base) return TRUE; else return FALSE; }
int Push(SqStack *s, SElemType x) { //如果栈满,溢出 if (s->top == MAXSIZE) { printf('栈满,无法入栈'); return OVERFLOW; } //否则入栈,栈顶指针加1 else { s->data[s->top] = x; s->top++; return OK; } }
int Pop(SqStack *s, SElemType *e) { //如果栈空,则下溢 if (StackEmpty(s)) { printf('栈已空,不能出栈'); return OVERFLOW; } //否则栈顶指针先减1,再出栈 else { s->top--; *e = s->data[s->top]; return OK; } }
int main() { SqStack *s = (SqStack *)malloc(sizeof(SqStack)); SElemType e; int n; //初始化栈 InitStack(s); printf('请输入要转换的十进制数:'); scanf('%d', &n); //初始化一个栈 conversion(s, n); //如果栈不空,则出栈,并输出 printf('十进制数%d转换成八进制为:', n); while (!StackEmpty(s)) { Pop(s, &e); printf('%d', e); } return 1; }
原文地址: https://www.cveoy.top/t/topic/pmiK 著作权归作者所有。请勿转载和采集!