用c语言利用栈实现数制转换:将十进制数 转换为二进制数输出,其转换方法利用辗转除以2取余数法, 顺序栈初始化栈顶为数组大小的源代码
时间: 2024-10-13 15:02:40 浏览: 47
在C语言中,我们可以使用栈数据结构和循环来实现十进制数到二进制数的转换。这里是一个简单的例子,我们将使用动态内存分配来创建一个顺序栈,并使用辗转除以2取余数法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_STACK_SIZE 32 // 栈的最大容量
// 定义栈结构体
typedef struct {
int data[MAX_STACK_SIZE]; // 存储数字的栈
size_t top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 入栈操作
void push(Stack *stack, int value) {
if (stack->top < MAX_STACK_SIZE - 1) {
stack->data[++stack->top] = value;
} else {
printf("Stack overflow! Cannot push more values.\n");
}
}
// 出栈操作
int pop(Stack *stack) {
if (stack->top >= 0) {
return stack->data[stack->top--];
} else {
return -1; // 如果栈为空,则返回-1表示出栈失败
}
}
// 将十进制数转换为二进制并入栈
void decimal_to_binary(int decimal, Stack *stack) {
while (decimal > 0) {
push(stack, decimal % 2);
decimal /= 2;
}
}
// 主函数
int main() {
Stack binaryStack;
init(&binaryStack);
int decimalNumber;
printf("Enter a decimal number to convert to binary: ");
scanf("%d", &decimalNumber);
decimal_to_binary(decimalNumber, &binaryStack);
printf("Binary representation (in reverse order): ");
while (pop(&binaryStack) != -1) {
printf("%d", pop(&binaryStack)); // 因为栈是后进先出(LIFO),所以需要倒序输出
}
printf("\n
阅读全文