用C语言完成一个使用栈的基本操作实现把一个十进制数转换成二进制的程序
时间: 2024-05-14 10:13:50 浏览: 101
当然,我会尽力回答你的问题。以下是使用栈实现将十进制数转换为二进制的程序。请注意,本程序假定输入的数不是负数。
```
#include <stdio.h>
#include <stdlib.h>
#define STACKSIZE 20
typedef struct Stack {
int top;
int items[STACKSIZE];
} Stack;
void push(Stack *s, int item) {
if (s->top == STACKSIZE-1) {
printf("Stack is full!\n");
exit(EXIT_FAILURE);
} else {
s->top++;
s->items[s->top] = item;
}
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack is empty!\n");
exit(EXIT_FAILURE);
} else {
int item = s->items[s->top];
s->top--;
return item;
}
}
int main() {
Stack s;
s.top = -1;
int decimal, binary = 0, base = 1;
// Input decimal number
printf("Enter decimal number: ");
scanf("%d", &decimal);
// Convert decimal to binary using stack
while (decimal != 0) {
push(&s, decimal % 2);
decimal = decimal / 2;
}
// Create binary number from stack
while (s.top != -1) {
binary += pop(&s) * base;
base *= 10;
}
printf("Binary number: %d\n", binary);
return 0;
}
```
这段程序使用了栈来保存转换后的数字,并依次弹出栈上的值以创建二进制数。
阅读全文