用c语言编写把十进制正整数分别转换为二、八、十六进制数输出的函数
时间: 2024-11-29 21:37:03 浏览: 12
在C语言中,你可以编写三个不同的函数分别用于十进制到二进制、八进制和十六进制的转换。这里我们主要关注二进制和八进制,因为十六进制通常通过库函数`itoa()`或者`printf()`直接输出。下面是一个简单的顺序栈实现的例子:
1. **二进制转换**[^2]:
```c
void decimal_to_binary(int decimal) {
int binary[] = {0}; // 初始化一个大小为1的栈
int remainder;
while (decimal > 0) {
remainder = decimal % 2; // 取余数
binary[0] = binary[0] * 10 + remainder; // 把余数添加到栈顶
decimal /= 2; // 除以2
}
printf("Binary representation: ");
while (binary[0]) {
printf("%d", binary[0] % 10);
binary[0] /= 10; // 移位并减去个位
}
printf("\n");
}
```
2. **八进制转换**[^1]:
```c
void decimal_to_octal(int decimal) {
int octal[] = {0}; // 初始化一个大小为1的栈
int quotient, remainder;
while (decimal > 0) {
quotient = decimal / 8; // 除以8取商
remainder = decimal % 8; // 取余数
octal[0] = octal[0] * 10 + remainder; // 把余数添加到栈顶
decimal = quotient; // 更新decimal为商
}
printf("Octal representation: ");
while (octal[0]) {
printf("%d", octal[0] % 10);
octal[0] /= 10; // 移位并减去个位
}
printf("\n");
}
```
请注意,这些函数假设输入的是正整数,对于负数或非整数的转换可能需要额外的逻辑。
阅读全文