用栈进行输入十进制的数转化为二进制的数用C写出来
时间: 2024-09-27 17:17:44 浏览: 49
将十进制数转换成二进制数可以使用栈的数据结构,因为栈的特性恰好符合这个过程:从低位开始依次处理每一位数字,并将结果压入栈中。以下是使用C语言实现的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// Stack operations
typedef struct Node {
int data;
struct Node *next;
} Node;
Node* createStack() {
return (Node*)malloc(sizeof(Node));
}
void push(Node** stack, int value) {
Node* newNode = createStack();
newNode->data = value;
newNode->next = *stack;
*stack = newNode;
}
int pop(Node** stack) {
if (*stack == NULL) {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
int value = (*stack)->data;
Node* temp = *stack;
*stack = (*stack)->next;
free(temp);
return value;
}
// Convert decimal to binary using stack
void decToBin(int num) {
Node* stack = createStack();
while (num > 0) {
push(&stack, num % 2);
num /= 2;
}
// Pop and print the binary digits in reverse order
printf("Binary representation: ");
while (stack != NULL) {
printf("%d", pop(&stack));
}
printf("\n");
}
int main() {
int decimalNum;
printf("Enter a decimal number: ");
scanf("%d", &decimalNum);
decToBin(decimalNum);
return 0;
}
```
在这个程序中,我们首先创建一个空栈,然后遍历给定的十进制数的每一位,将其对2取余的结果压入栈中。最后,我们将栈顶的元素逐个弹出并打印,得到的就是对应的二进制数字。
阅读全文