用C语言栈写一个十进制转换二进制的代码
时间: 2024-05-07 13:16:41 浏览: 12
好的,以下是一个用C语言栈写的十进制转换二进制的代码:
```C
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 20
struct stack {
int top;
int items[STACK_SIZE];
};
void push(struct stack *s, int x) {
if (s->top == STACK_SIZE-1) {
printf("Stack overflow\n");
exit(EXIT_FAILURE);
}
s->items[++(s->top)] = x;
}
int pop(struct stack *s) {
if (s->top == -1) {
printf("Stack underflow\n");
exit(EXIT_FAILURE);
}
return s->items[(s->top)--];
}
void decimal_to_binary(int n) {
struct stack s;
s.top = -1;
while (n > 0) {
int rem = n % 2;
push(&s, rem);
n = n / 2;
}
printf("Binary number is: ");
while (s.top != -1) {
printf("%d", pop(&s));
}
printf("\n");
}
int main() {
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
decimal_to_binary(n);
return 0;
}
```
该程序使用了一个栈来存储每个二进制位。在进行转换时,将给定的十进制数除以2,将余数压入栈中,直到得到的商为0。然后从栈中弹出每个元素并打印出来,这样就可以得到该十进制数的二进制表示。