用栈方法写一个将十进制数转换为二进制数的c语言程序
时间: 2024-02-01 15:04:40 浏览: 88
以下是使用栈方法将十进制数转换为二进制数的C语言程序:
```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 is full!\n");
exit(1);
}
s->data[++s->top] = x;
}
// 出栈
int pop(Stack *s)
{
if (is_empty(s)) {
printf("Stack is empty!\n");
exit(1);
}
return s->data[s->top--];
}
// 十进制转二进制
void decimal_to_binary(int n)
{
Stack s;
init(&s);
while (n > 0) {
push(&s, n % 2);
n /= 2;
}
while (!is_empty(&s)) {
printf("%d", pop(&s));
}
}
int main()
{
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("Binary number: ");
decimal_to_binary(n);
printf("\n");
return 0;
}
```
这个程序使用了一个栈结构来实现十进制转二进制的功能。具体来说,它首先将十进制数中的每一位都压入栈中,然后再一次弹出并输出栈中的每一位,就可以得到该十进制数的二进制表示。
阅读全文