用栈实现进制转换c语言
时间: 2023-08-30 11:12:33 浏览: 103
下面是用栈实现进制转换的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100
// 定义栈结构体
typedef struct {
int top;
int data[STACK_SIZE];
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isStackEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isStackFull(Stack *s) {
return s->top == STACK_SIZE - 1;
}
// 元素入栈
void push(Stack *s, int x) {
if (isStackFull(s)) {
printf("Error: Stack is full.\n");
exit(1);
}
s->data[++s->top] = x;
}
// 元素出栈
int pop(Stack *s) {
if (isStackEmpty(s)) {
printf("Error: Stack is empty.\n");
exit(1);
}
return s->data[s->top--];
}
// 十进制转换为任意进制
void conversion(int num, int base) {
int remainder;
Stack s;
initStack(&s);
// 将余数入栈
while (num != 0) {
remainder = num % base;
push(&s, remainder);
num /= base;
}
// 将栈中元素出栈,输出即为转换结果
while (!isStackEmpty(&s)) {
printf("%d", pop(&s));
}
}
int main() {
int num, base;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Enter a base: ");
scanf("%d", &base);
printf("%d in base %d is: ", num, base);
conversion(num, base);
return 0;
}
```
该程序首先定义了一个栈结构体,包含栈顶指针和存储元素的数组。然后定义了一系列操作栈的函数,如初始化栈、判断栈是否为空、元素入栈、元素出栈等。最后实现了一个十进制转换为任意进制的函数,该函数将余数入栈,再将栈中元素出栈,输出即为转换结果。程序中的主函数首先读取十进制数和目标进制数,然后调用转换函数输出结果。
阅读全文