c语言十进制整数转二进制以字符串形式输出
时间: 2024-10-10 12:07:20 浏览: 50
在C语言中,将十进制整数转换成二进制并以字符串形式输出,可以使用库函数`itoa()`或者自定义一个递归函数实现。这里我将介绍一种常见的手动方法,即使用除2取余法:
```c
#include <stdio.h>
#include <stdlib.h> // 包含itoa函数所在的头文件
// 自定义函数将十进制转换为二进制字符串
char* decimal_to_binary(int num) {
char binary[33]; // 存储结果的数组,最大支持32位整数
if (num == 0) {
binary[0] = '0';
return binary;
}
int i = 0;
while (num > 0) {
binary[i++] = num % 2 + '0'; // 将余数加一转为字符(ASCII)
num /= 2; // 向左移位
}
// 如果最开始有前导零,则不需要补零
binary[i] = '\0';
reverse(binary); // 反转字符串,因为一开始是从低位到高位存储的
return binary;
}
// 用于反转字符串的辅助函数
void reverse(char *str) {
int start = 0, end = strlen(str) - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
int decimal = 42;
char *binary_str = decimal_to_binary(decimal);
printf("十进制 %d 转换成二进制为: %s\n", decimal, binary_str);
free(binary_str); // 注意释放内存
return 0;
}
```
阅读全文