用栈写一个十进制转换二进制的代码
时间: 2023-12-01 13:01:32 浏览: 97
好的,以下是使用栈写的十进制转换二进制的代码(使用Python语言编写):
```python
def decimal_to_binary(decimal_num):
stack = []
while decimal_num != 0:
remainder = decimal_num % 2
stack.append(remainder)
decimal_num = decimal_num // 2
binary_num = ""
while stack:
binary_num += str(stack.pop())
return binary_num
```
其中,decimal_num是需要转换的十进制数,stack是栈,remainder是余数。该代码通过不断将得到的余数入栈,再依次出栈得到二进制数的各个位。
相关问题
用C语言栈写一个十进制转换二进制的代码
好的,以下是一个用C语言栈写的十进制转换二进制的代码:
```C
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 20
struct stack {
int top;
int items[STACK_SIZE];
};
void push(struct stack *s, int x) {
if (s->top == STACK_SIZE-1) {
printf("Stack overflow\n");
exit(EXIT_FAILURE);
}
s->items[++(s->top)] = x;
}
int pop(struct stack *s) {
if (s->top == -1) {
printf("Stack underflow\n");
exit(EXIT_FAILURE);
}
return s->items[(s->top)--];
}
void decimal_to_binary(int n) {
struct stack s;
s.top = -1;
while (n > 0) {
int rem = n % 2;
push(&s, rem);
n = n / 2;
}
printf("Binary number is: ");
while (s.top != -1) {
printf("%d", pop(&s));
}
printf("\n");
}
int main() {
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
decimal_to_binary(n);
return 0;
}
```
该程序使用了一个栈来存储每个二进制位。在进行转换时,将给定的十进制数除以2,将余数压入栈中,直到得到的商为0。然后从栈中弹出每个元素并打印出来,这样就可以得到该十进制数的二进制表示。
用栈写一个将十进制转换为二进制
好的,下面是使用栈实现将十进制转换为二进制的代码(C++实现):
```cpp
#include <iostream>
#include <stack>
using namespace std;
void decimalToBinary(int decimal) {
stack<int> binaryStack;
while (decimal > 0) {
int remainder = decimal % 2;
binaryStack.push(remainder);
decimal /= 2;
}
while (!binaryStack.empty()) {
cout << binaryStack.top();
binaryStack.pop();
}
}
int main() {
int decimal;
cout << "Enter a decimal number: ";
cin >> decimal;
cout << "Binary equivalent: ";
decimalToBinary(decimal);
return 0;
}
```
代码实现的思路是:先用余数法得到十进制数的二进制位数,将每一位二进制数压入栈中,最后弹出栈中元素,即可得到逆序的二进制数。
阅读全文