c语言利用栈十进制转十六进制
时间: 2023-10-19 22:11:21 浏览: 40
以下是利用栈实现十进制转十六进制的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
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 == MAXSIZE - 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 DecimalToHex(int n) {
Stack s;
InitStack(&s);
while (n) {
Push(&s, n % 16);
n /= 16;
}
while (!IsEmpty(&s)) {
int x = Pop(&s);
if (x < 10)
printf("%d", x);
else
printf("%c", x - 10 + 'A');
}
}
int main() {
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("Hexadecimal equivalent: ");
DecimalToHex(n);
return 0;
}
```
该程序使用栈来实现十进制转十六进制。首先将输入的十进制数每次除以16并将余数压入栈中,直到商为0。然后依次弹出栈中的元素并输出即可。注意,当弹出的元素大于等于10时,需要将其转换为对应的十六进制字符(A-F)。