使用栈的基本运算,帮我用c语言写一个十进制转成二进制的函数代码
时间: 2024-12-18 14:15:49 浏览: 3
C语言十进制转二进制代码实例
5星 · 资源好评率100%
在C语言中,我们可以使用栈数据结构将十进制数转换为二进制。这里是一个简单的函数示例,它使用了一个辅助数组`binary[]`来存储二进制结果:
```c
#include <stdio.h>
#include <string.h>
// 定义栈结构体
typedef struct {
int stack[100]; // 栈大小限制
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack* s) {
s->top = -1;
}
// 入栈操作
void push(Stack* s, int value) {
if (s->top < sizeof(s->stack) - 1) {
s->stack[++s->top] = value;
}
}
// 出栈操作
int pop(Stack* s) {
if (s->top != -1) {
return s->stack[s->top--];
} else {
return -1; // 如果栈空,则返回-1表示错误
}
}
// 十进制转二进制
char* decimalToBinary(int num) {
Stack binaryStack;
char binary[40]; // 用于存放最终二进制字符串,假设最大位数为39(包括前导零)
int i = 0;
// 将数字一直除以2并记录余数,直到商为0
while (num > 0) {
push(&binaryStack, num % 2);
num /= 2;
}
// 从栈中弹出元素,反转顺序并转化为字符形式
while (!binaryStack.top == -1) {
binary[i++] = '0' + pop(&binaryStack);
}
binary[i] = '\0'; // 添加终止符
return binary;
}
int main() {
int decimal;
printf("请输入一个十进制数: ");
scanf("%d", &decimal);
char* binaryStr = decimalToBinary(decimal);
printf("该十进制数的二进制表示为: %s\n", binaryStr);
free(binaryStr); // 注意释放动态分配的内存
return 0;
}
```
这个程序首先将输入的十进制数不断除以2,并将余数压入栈中,然后依次取出栈顶元素,形成二进制序列。注意,在实际应用中,需要处理内存管理以避免内存泄漏。
阅读全文