输入一个二进制数(你认为该二进制数转换成十进制后,十进制数是大于等于0的正整数,int满足其存储要求),将其转换为十进制输出用C语言怎么解
时间: 2024-12-21 22:30:57 浏览: 63
在C语言中,将一个二进制数转换为十进制的过程可以使用循环和位运算来实现。这里是一个简单的函数示例:
```c
#include <stdio.h>
// 函数用于将二进制字符串转换为十进制整数
int binaryToDecimal(char *binary) {
int decimal = 0;
int base = 1; // 乘基数从右向左开始
int len = strlen(binary); // 获取输入字符串长度
for (int i = len - 1; i >= 0; i--) {
if (binary[i] == '1') { // 如果当前位是1
decimal += base; // 加入当前的基数
}
base *= 2; // 移到下一位,基数翻倍
}
return decimal; // 返回转换后的十进制值
}
int main() {
char binary[20]; // 假设用户输入的二进制最多16位
printf("请输入一个二进制数(以0开头): ");
scanf("%s", binary);
// 检查输入是否合法
if (binary[0] != '0' || binary[len-1] != '1') {
printf("输入错误! 请输入一个非负的二进制数。\n");
return 1;
}
int decimalValue = binaryToDecimal(binary);
if (decimalValue >= 0 && decimalValue <= INT_MAX) {
printf("二进制 %s 转换为十进制是 %d\n", binary, decimalValue);
} else {
printf("转换后的十进制超出了int类型的范围。\n");
}
return 0;
}
```
在这个程序中,我们首先从二进制的最低位开始,逐位检查每个位是否为1,并相应地累加到十进制结果上。然后将基数翻倍继续处理高位。最后检查返回的十进制值是否在int类型的范围内。
阅读全文
相关推荐


















