用C语言写一个用栈实现十进制数转二进制数的代码程序
时间: 2024-05-03 20:20:50 浏览: 15
好的,下面是用C语言实现用栈实现十进制数转二进制数的代码程序:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 //定义栈的最大长度
typedef struct {
int data[MAX_SIZE]; //定义栈空间
int top; //定义栈顶指针
} Stack;
void initStack(Stack *s) //初始化栈
{
s->top = -1;
}
int isEmpty(Stack *s) //判断栈是否为空
{
return s->top == -1;
}
int isFull(Stack *s) //判断栈是否已满
{
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int x) //入栈操作
{
if (isFull(s)) {
printf("stack is full\n");
return;
}
s->data[++s->top] = x;
}
int pop(Stack *s) //出栈操作
{
if (isEmpty(s)) {
printf("stack is empty\n");
return -9999;
}
return s->data[s->top--];
}
void convert(Stack *s, int num) //十进制转二进制
{
int temp = num;
while (temp) {
push(s, temp % 2);
temp /= 2;
}
}
int main()
{
int dec, bin = 0, base = 1;
Stack s;
initStack(&s);
printf("请输入一个十进制数:");
scanf("%d", &dec);
convert(&s, dec);
printf("十进制数 %d 转换为二进制数为:", dec);
while (!isEmpty(&s)) {
bin += pop(&s) * base;
base *= 10;
}
printf("%d\n", bin);
return 0;
}
```
回答完毕。如果您有其它问题,请继续提出。