c语言用栈结构实现进制转换
时间: 2024-10-29 22:13:53 浏览: 43
在C语言中,可以使用栈数据结构来实现进制转换,特别是从十进制到其他进制(如二进制、八进制或十六进制)。这里我们以将十进制数转换成二进制为例来说明:
首先,创建一个空栈用于存储二进制位。遍历十进制数,对于每一位:
1. 取余法:对当前的十进制数除以2,得到余数,这将是二进制数的最低有效位(MSB)。
2. 入栈:将余数压入栈中,因为栈顶元素代表了最右边的位。
3. 更新原数:去除余数后,继续对商取余,直到商为0。
4. 输出结果:当商变为0时,开始弹出栈里的数字,按照顺序组成完整的二进制字符串。
下面是一个简单的示例函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
void decimalToBinary(int num) {
int stack[100], top = -1;
while (num > 0) {
stack[++top] = num % 2; // 把余数压入栈
num /= 2; // 更新原数
}
printf("二进制表示为:");
while (!top == -1) {
printf("%d", stack[top--]); // 从栈底开始输出
}
}
int main() {
int decimal = 42;
decimalToBinary(decimal);
return 0;
}
```
当你运行这个程序,它会输出`42`的二进制表示:`101010`。
阅读全文