c语言用栈结构通过递归实现进制转换
时间: 2024-10-29 10:13:49 浏览: 8
C语言用栈实现十进制转换为二进制的方法示例
5星 · 资源好评率100%
在C语言中,我们可以利用栈数据结构以及递归来实现十进制数到其他进制(如二进制、八进制、十六进制)的转换。这个过程通常涉及到将十进制数字除以目标基数,然后将余数压入栈,最后从栈中弹出元素并连接起来形成目标进制表示。
下面是一个简单的示例,用于将十进制整数转换成二进制字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 函数声明
void decimalToBinary(int num, char* binary);
int main() {
int decimal = 42; // 要转换的十进制数
char binary[32]; // 存储结果的数组
decimalToBinary(decimal, binary);
printf("十进制 %d 转换成二进制为: %s\n", decimal, binary);
return 0;
}
// 递归函数:将十进制转换为二进制
void decimalToBinary(int num, char* binary) {
if (num == 0) { // 递归结束条件,当num为0时停止
binary[0] = '\0'; // 结束字符串
return;
}
// 计算当前位的值
int remainder = num % 2;
binary(strlen(binary)) = remainder + '0'; // 将余数存入字符串,并转换为字符
// 递归处理下一个位
decimalToBinary(num / 2, binary); // num除以2,相当于向左移一位
}
```
阅读全文