用C语言中的栈写一个十进制整数到二进制整数的转换程序
时间: 2024-05-15 17:17:18 浏览: 189
用C语言顺序栈实现十进制和二进制的转换.docx
好的,我可以回答这个问题。以下是一个用C语言中的栈写的十进制整数转二进制整数的程序:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Stack {
int top;
int arr[MAX_SIZE];
} Stack;
// 函数声明
void push(Stack *s, int x);
int pop(Stack *s);
int decimal_to_binary(int n);
int main() {
int n;
printf("请输入一个十进制整数:");
scanf("%d", &n);
printf("转换为二进制数为:%d\n", decimal_to_binary(n));
return 0;
}
// 压栈操作
void push(Stack *s, int x) {
if (s->top < MAX_SIZE) {
s->arr[++s->top] = x;
}
}
// 出栈操作
int pop(Stack *s) {
if (s->top == -1) {
return -1;
}
return s->arr[s->top--];
}
// 十进制转二进制
int decimal_to_binary(int n) {
Stack s;
s.top = -1;
while (n != 0) {
push(&s, n % 2);
n /= 2;
}
int binary = 0;
while (s.top != -1) {
binary = binary * 10 + pop(&s);
}
return binary;
}
```
这个程序使用了一个栈来实现十进制转二进制的操作。首先将十进制数从低到高的每一位依次除以2并将余数压入栈中,直到商为0停止。然后从栈中取出每个元素并按顺序乘以10的幂,将它们相加得到二进制数。
阅读全文