已经给出了代码的情况下如何利用栈实现十进制转换成二进制呢 有没有知道怎么解决的 已经给了顺序栈的代码 可是我不知道mian.cpp的怎么写了不知道有没有知道怎么解决
#include <stdio.h>
#include <stdlib.h>
#define STACK_MAX_SIZE 50
int stack[STACK_MAX_SIZE]; // 定义一个栈
int top = -1; // 栈顶指针初始化为-1
int is_empty() {
return top == -1;
}
int is_full() {
return top == STACK_MAX_SIZE - 1;
}
void push(int value) {
if (is_full()) {
printf("Error: stack is full!\n");
exit(EXIT_FAILURE);
}
stack[++top] = value;
}
int pop() {
if (is_empty()) {
printf("Error: stack is empty!\n");
exit(EXIT_FAILURE);
}
return stack[top--];
}
int decimal_to_binary(int decimal) {
int binary = 0, digit, sign = 1;
if (decimal < 0) { // 负数的情况
decimal = -decimal;
sign = -1;
}
while (decimal > 0) {
digit = decimal % 2;
push(digit);
decimal /= 2;
}
while (!is_empty()) {
digit = pop();
binary = binary * 10 + digit;
}
return sign * binary;
}
int main() {
int decimal, binary;
printf("请输入一个十进制数:\n");
scanf("%d", &decimal);
binary = decimal_to_binary(decimal);
printf("%d的二进制表示为:%d\n", decimal, binary);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: