用c++语言 利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制整数,编程将该数以八进制形式输出。
时间: 2023-10-29 18:08:07 浏览: 116
```c
#include <stdio.h>
#define STACK_SIZE 100 // 定义栈的最大容量
typedef struct {
int data[STACK_SIZE]; // 存储栈的元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == STACK_SIZE - 1;
}
// 入栈操作
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full.\n");
return;
}
s->data[++s->top] = x;
}
// 出栈操作
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top--];
}
// 十进制转八进制
void decimalToOctal(int n) {
Stack s;
initStack(&s);
while (n > 0) {
push(&s, n % 8);
n /= 8;
}
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
int main() {
int n;
printf("Input a decimal number: ");
scanf("%d", &n);
printf("Octal number: ");
decimalToOctal(n);
return 0;
}
```
阅读全文