C语言用栈和递归写一个10进制转2进制的代码
时间: 2023-09-04 21:12:04 浏览: 47
以下是使用栈和递归实现10进制转2进制的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int item) {
if (top == MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = item;
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
}
return stack[top--];
}
void decimalToBinary(int decimal) {
while (decimal > 0) {
push(decimal % 2);
decimal /= 2;
}
while (top != -1) {
printf("%d", pop());
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
使用递归实现:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
if (decimal == 0) {
return;
}
decimalToBinary(decimal / 2);
printf("%d", decimal % 2);
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
两种方法的输出结果是相同的。