用c语言创建一个栈并实现进制转换
时间: 2024-05-15 07:15:01 浏览: 5
以下是用C语言创建一个栈并实现进制转换的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
int data[MAX_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 == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full.\n");
exit(1);
}
s->data[++s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
exit(1);
}
return s->data[s->top--];
}
// 进制转换
void convert(int num, int base) {
int rem;
Stack s;
initStack(&s);
while (num > 0) {
rem = num % base;
push(&s, rem);
num /= base;
}
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
int main() {
int num, base;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Enter a base (2-16): ");
scanf("%d", &base);
if (base < 2 || base > 16) {
printf("Invalid base.\n");
exit(1);
}
printf("The number in base %d is: ", base);
convert(num, base);
return 0;
}
```
使用方法:
1. 编译代码:`gcc stack.c -o stack`
2. 运行程序:`./stack`
3. 输入一个十进制数和一个进制数(2-16之间),程序将输出转换后的数值。
例如,如果输入`15`和`2`,程序将输出`1111`,表示十进制数`15`在二进制下的表示。