c语言代码实现利用栈实现十进制向二进制转换,输入若干个十进制非负整数,输出他们的二进制形式
时间: 2023-06-01 18:03:16 浏览: 89
十进制与十六进制的转换 数据结构c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
void init(Stack* s) { // 初始化栈
s->top = -1;
}
int is_empty(Stack* s) { // 判断栈是否为空
return s->top == -1;
}
int is_full(Stack* s) { // 判断栈是否已满
return s->top == MAX_SIZE - 1;
}
void push(Stack* s, int x) { // 入栈
if (is_full(s)) {
printf("Stack Overflow\n");
exit(1);
}
s->top++;
s->data[s->top] = x;
}
int pop(Stack* s) { // 出栈
if (is_empty(s)) {
printf("Stack Underflow\n");
exit(1);
}
int x = s->data[s->top];
s->top--;
return x;
}
void decimal_to_binary(int n) { // 十进制转二进制
Stack s;
init(&s); // 初始化栈
while (n) {
push(&s, n % 2); // 余数入栈
n /= 2;
}
while (!is_empty(&s)) {
printf("%d", pop(&s)); // 依次出栈并输出
}
printf("\n");
}
int main() {
int n;
printf("Please enter decimal non-negative integers (enter -1 to end):\n");
while (1) {
scanf("%d", &n);
if (n == -1) {
break;
}
decimal_to_binary(n); // 十进制转二进制
}
return 0;
}
阅读全文