在C语言中输入二进制数主要有以下两种方法,具体使用需根据需求选择:
一、使用 `scanf` 函数直接输入二进制数
通过指定格式字符串 `%b` 或 `%B`,可以直接读取二进制数并转换为整数类型(如 `unsigned int`)。
示例代码:
```c
include
int main() {
unsigned int binaryNum;
printf("Enter a binary number: ");
scanf("%b", &binaryNum);
printf("You entered the binary number: %dn", binaryNum);
return 0;
}
```
二、通过字符数组输入二进制字符串后转换
若输入为二进制字符串(如 `1011`),需手动解析并转换为整数。此方法适用于需要处理非固定长度二进制数的场景。
示例代码:
```c
include include int main() { char str; int n = 0; printf("请输入二进制数: "); scanf("%s", str); // 读取二进制字符串 // 检查输入是否为有效二进制 for (int i = 0; str[i] != '0'; i++) { if (str[i] != '0' && str[i] != '1') { printf("不是二进制数n"); return 1; } } int value = 0; for (int i = 0; i < strlen(str); i++) { value = value * 2 + (str[i] - '0'); } printf("转换后的十进制数为: %dn", value); return 0; } ``` 注意事项
直接使用 `%b` 时,输入需严格为二进制(0和1),否则会导致错误。若输入为字符串,需额外验证字符合法性。
`scanf("%b")` 通常支持最多32位无符号整数,超过需使用其他方法(如位运算)。
直接转换字符串的方法更灵活,但效率较低;使用 `%b` 速度更快,但输入限制严格。
根据实际需求选择合适的方法,若需处理固定长度的二进制数据,推荐使用 `scanf("%b")`;若输入为可变长度的二进制字符串,则需手动解析转换。