
求职指导郭老师为您分享以下优质知识
在C语言中输入二进制数可以通过以下两种方式实现:
一、使用 `scanf` 函数输入固定长度的二进制数
使用 `%b` 或 `%B` 格式说明符指定输入为二进制数。例如:
```c
include
int main() {
unsigned int binaryNum;
printf("请输入一个32位二进制数(0b开头):");
scanf("%b", &binaryNum);
printf("您输入的二进制数是:%dn", binaryNum);
return 0;
}
```
注意:`%b` 对输入长度有限制,且输入必须是纯二进制字符(0或1),否则会导致输入错误。
示例运行
输入 `0b1010`,输出 `10`。
二、逐位读取二进制字符串
当输入的二进制数超过 `unsigned int` 的存储范围时,需使用字符数组读取二进制字符串,再手动转换为整数:
```c
include
include
int main() {
char binaryStr;
printf("请输入一个二进制数(0b开头):");
scanf("%99s", binaryStr); // 限制输入长度为99位,留1位给终止符
int decimalNum = 0;
int power = 1;
for (int i = strlen(binaryStr) - 1; i >
= 0; i--) {
if (binaryStr[i] == '1') {
decimalNum += power;
} else if (binaryStr[i] != '0') {
printf("输入的不是有效二进制数
");
return 1;
}
power *= 2;
}
printf("对应的十进制数是:%d
", decimalNum);
return 0;
}
```
说明
使用 `scanf("%99s", binaryStr)` 读取二进制字符串,限制输入长度为99位(含终止符)。
通过循环遍历字符串,将二进制位转换为十进制并累加。
其他注意事项
输入验证
- 使用 `%b` 时需注意输入格式,建议在二进制数前添加 `0b` 前缀。
- 手动解析字符串时需检查每个字符是否为 `0` 或 `1`,避免非法输入。
扩展应用
- 若需处理非整数二进制数(如浮点数),需使用专门的库函数(如 `strtobin`)。
通过以上方法,可灵活实现二进制数的输入,根据需求选择固定长度读取或动态解析。