用c语言写一段完整的代码:利用栈实现进制转换。给定一个十进制整数,编程将该数以二进制形式输出。
时间: 2024-05-08 14:19:39 浏览: 120
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
当然,我很乐意回答你的问题。以下是使用C语言编写栈来实现十进制转二进制的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 32 //栈的最大大小
typedef struct {
int top;
int stack[STACK_SIZE];
} Stack;
int push(Stack *S, int num) {
if (S->top >= STACK_SIZE) { //栈满,无法入栈
printf("The stack is full!\n");
return -1;
}
S->stack[S->top++] = num; //num入栈
return 0;
}
int pop(Stack *S) {
if (S->top <= 0) { //栈空,无法出栈
printf("The stack is empty!\n");
return -1;
}
--S->top; //栈顶指针减一
return S->stack[S->top]; //返回栈顶元素
}
int convertToBinary(int decimal) {
Stack S;
int remainder, binary = 0;
S.top = 0; //栈顶指针初始化为0
while (decimal > 0) { //不断取出十进制数的二进制位数,直到十进制数为0
remainder = decimal % 2;
push(&S, remainder); //将余数入栈
decimal /= 2;
}
while (S.top > 0) { //将栈中的二进制位数依次出栈
binary = binary * 10 + pop(&S); //出栈并累加到结果
}
return binary;
}
int main() {
int decimal, binary;
printf("Enter a decimal number: ");
scanf("%d", &decimal); //读入十进制数
binary = convertToBinary(decimal); //将十进制数转为二进制
printf("The binary equivalent of %d is %d\n", decimal, binary); //输出二进制数
return 0;
}
```
希望这个代码示例对您有帮助!
阅读全文