写一个c语言代码用堆栈实现进制的转换
时间: 2024-05-21 15:13:13 浏览: 58
数据结构进制转换
当然可以,以下是一个用堆栈实现进制转换的 C 语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct
{
int top;
int data[MAX_SIZE];
} Stack;
// 初始化堆栈
void initStack(Stack *stack)
{
stack->top = -1;
}
// 入栈
void push(Stack *stack, int num)
{
if (stack->top < MAX_SIZE - 1)
{
stack->data[++stack->top] = num;
}
else
{
printf("Stack overflow!\n");
exit(EXIT_FAILURE);
}
}
// 出栈
int pop(Stack *stack)
{
if (stack->top >= 0)
{
return stack->data[stack->top--];
}
else
{
printf("Stack underflow!\n");
exit(EXIT_FAILURE);
}
}
// 十进制转换成任意进制
void decimalToAny(int decimalNum, int anyNum)
{
Stack stack;
initStack(&stack);
while (decimalNum != 0)
{
push(&stack, decimalNum % anyNum);
decimalNum /= anyNum;
}
printf("Convert to %d: ", anyNum);
while (stack.top >= 0)
{
int value = pop(&stack);
if (value < 10)
{
printf("%d", value);
}
else
{
printf("%c", value - 10 + 'A');
}
}
printf("\n");
}
int main()
{
int decimalNum = 123;
decimalToAny(decimalNum, 2); // 十进制转二进制
decimalToAny(decimalNum, 8); // 十进制转八进制
decimalToAny(decimalNum, 16); // 十进制转十六进制
return 0;
}
希望能够帮到你,如有疑问请随时提出。
阅读全文