利用栈实现十进制转八进制c语言
时间: 2023-11-20 20:09:59 浏览: 82
当然,我可以帮你回答这个问题。以下是一个使用栈实现十进制转八进制的c语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 32
struct stack {
int data[STACK_SIZE];
int top;
};
void init_stack(struct stack *s) {
s->top = -1;
}
void push(struct stack *s, int x) {
if (s->top == STACK_SIZE - 1) {
printf("Stack overflow!");
exit(1);
} else {
s->data[++(s->top)] = x;
}
}
int pop(struct stack *s) {
if (s->top == -1) {
printf("Stack underflow!");
exit(1);
} else {
return s->data[(s->top)--];
}
}
int main() {
int num, remainder;
struct stack s;
init_stack(&s);
printf("Enter decimal number: ");
scanf("%d", &num);
while (num != 0) {
remainder = num % 8;
push(&s, remainder);
num /= 8;
}
printf("Octal equivalent: ");
while (s.top != -1) {
printf("%d", pop(&s));
}
printf("\n");
return 0;
}
```
这个程序使用了一个栈来辅助进行十进制转八进制的运算。具体来说,它将输入的十进制数不断除以8,然后将余数压入栈中。最后再依次弹出栈中的元素,就能得到对应的八进制数了。
阅读全文