利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制整数,编程将该数以八进制形式输出。C语言版
时间: 2023-10-29 07:13:26 浏览: 134
采用静态顺序栈方式实现-数据结构体
以下是C语言实现:
```c
#include <stdio.h>
#define STACK_SIZE 50
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 overflow!\n");
return;
}
S->top++;
S->data[S->top] = x;
}
int pop(Stack *S) {
if (isEmpty(S)) {
printf("Stack underflow!\n");
return -1;
}
int x = S->data[S->top];
S->top--;
return x;
}
void convertToOctal(int n) {
Stack S;
initStack(&S);
while (n > 0) {
push(&S, n % 8);
n /= 8;
}
while (!isEmpty(&S)) {
printf("%d", pop(&S));
}
}
int main() {
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("Octal equivalent is: ");
convertToOctal(n);
printf("\n");
return 0;
}
```
首先定义了一个结构体表示栈,包含一个数组和一个栈顶指针。然后实现了栈的基本操作:初始化、判断是否为空、判断是否为满、入栈、出栈。最后实现了进制转换的函数,采用栈来辅助转换。程序输入一个十进制数,输出其八进制形式。
阅读全文