C语言实现利用栈实现数制转换:将十进制数 转换为二进制数输出,其转换方法利用辗转除以2取余数法。
时间: 2024-10-17 21:14:24 浏览: 104
C语言用栈实现十进制转换为二进制的方法示例
5星 · 资源好评率100%
在C语言中,我们可以使用栈来实现二进制转换。辗转除以2取余数法,也称为“除2取余”法,是将十进制数转换成其他任意进制的一种通用方法。以下是利用栈实现的一个简单示例:
首先,我们需要创建一个栈来存储每一位的余数,从最低位开始存储。
```c
#include <stdio.h>
#include <string.h>
#define MAX_DIGITS 32 // 为了处理较大的数字,假设最大位数不超过32位
// 将二进制数字符串逆序
void reverse(char binary[]) {
int len = strlen(binary);
for (int i = 0; i < len / 2; ++i) {
char temp = binary[i];
binary[i] = binary[len - 1 - i];
binary[len - 1 - i] = temp;
}
}
// 主函数:十进制转二进制
void decimal_to_binary(int decimal) {
Stack* stack = init_stack(); // 初始化栈
while (decimal > 0) {
// 取余数并入栈
push(stack, decimal % 2);
decimal /= 2;
}
// 从栈里弹出每一位的余数,组成二进制数
char binary[MAX_DIGITS + 1];
binary[0] = '0'; // 假定二进制数以0开头
while (!isEmpty(stack)) {
binary[strlen(binary)] = '1';
binary++;
decimal = pop(stack);
}
// 输出结果前加上'0b'
printf("0b");
reverse(binary); // 由于我们是从低到高存余数,所以需要逆序显示
printf("%s\n", binary);
}
int main() {
decimal_to_binary(42); // 测试输入
return 0;
}
```
以上代码首先将十进制数转换为二进制余数序列,然后按照相反的顺序把它们压入栈,最后从栈中取出并输出二进制数。
阅读全文