写一个c语言程序,能够将任意输入的10进制数据(10进制正整数,负整数,或小数),显示对应的二进制,八进制,16进制。
时间: 2024-12-15 08:14:05 浏览: 33
在C语言中,我们可以使用`scanf()`函数读取用户输入的十进制数,并使用`itoa()`、`octtoa()`和`htoa()`函数将其转换为对应的二进制、八进制和十六进制形式。但是要注意的是,在标准库中并没有直接提供`itoa()`、`octtoa()`和`htoa()`函数,因此我们需要自定义这些函数或者使用第三方库(如`<inttypes.h>`中的`PRId32`等宏)。下面是简化的示例:
```c
#include <stdio.h>
#include <string.h>
// 自定义将整型转为字符串的函数
char* int_to_str(int num, char base) {
char str[33] = "0";
int idx = 0;
while (num > 0) {
str[idx++] = num % base + '0';
num /= base;
}
// 如果数字为负,添加负号
if (num == -1) str[idx++] = '-';
// 反转字符串
str[idx] = '\0';
reverse(str);
return str;
}
void reverse(char* s) {
int start = 0, end = strlen(s) - 1;
while (start < end) {
char temp = s[start];
s[start] = s[end];
s[end] = temp;
start++;
end--;
}
}
int main() {
int decimal;
printf("请输入一个十进制数: ");
scanf("%d", &decimal);
printf("二进制: %s\n", int_to_str(decimal, 2));
printf("八进制: %s\n", int_to_str(decimal, 8));
printf("十六进制: %s\n", int_to_str(decimal, 16));
return 0;
}
```
注意:上述代码中的`int_to_str()`函数用于处理整数,对于浮点数的转换,C语言标准库并不支持直接转换。如果你需要处理浮点数,请使用`fprintf()`配合其他库。
阅读全文
相关推荐


















