用c语言输入一个二进制数N,将它转换成八进制数和十六进制数输出
时间: 2024-09-09 10:02:49 浏览: 160
在C语言中,我们可以使用`scanf`函数读取用户输入的二进制数,并通过位运算将其转换为八进制和十六进制。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 将二进制字符串转换为十进制整数
int binary_to_decimal(const char *binary) {
int decimal = 0;
int base = 1;
for (int i = strlen(binary) - 1; i >= 0; i--) {
if (binary[i] == '1') {
decimal += base;
}
base <<= 1;
}
return decimal;
}
// 将十进制整数转换为八进制和十六进制字符串
void convert_to_octal_hex(int number) {
char octal[50], hex[50];
sprintf(octal, "%o", number); // 转换为八进制
sprintf(hex, "%x", number); // 转换为十六进制
printf("八进制数: %s\n", octal);
printf("十六进制数: %s\n", hex);
}
int main() {
char binary[50];
printf("请输入一个二进制数(N): ");
scanf("%s", binary);
int decimal_num = binary_to_decimal(binary);
convert_to_octal_hex(decimal_num);
return 0;
}
```
在这个程序中,我们首先定义了一个`binary_to_decimal`函数,用于从二进制字符串转换到十进制。然后,`convert_to_octal_hex`函数接受这个十进制数并分别转换为八进制和十六进制。最后,在`main`函数里,用户输入二进制数,我们进行相应的转换并打印结果。
阅读全文