#include <stdio.h>
#include <string.h>
// 函数原型声明
int binaryToDecimal(const char *binary);
int main() {
char binary[100]; // 声明一个字符数组,用于存储用户输入的二进制数,假设最大长度为99
int decimal; // 用于存储转换后的十进制数
// 提示用户输入二进制数
printf("Enter a binary number: ");
scanf("%s", binary); // 使用scanf函数读取字符串,%s格式指定读取字符串
// 调用binaryToDecimal函数进行转换,并将结果存储在decimal变量中
decimal = binaryToDecimal(binary);
// 输出转换后的十进制数
printf("Decimal equivalent: %d\n", decimal);
return 0; // 程序正常结束
}
// 函数定义:将二进制字符串转换为十进制整数
int binaryToDecimal(const char *binary) {
int decimal = 0; // 初始化十进制结果为0
int base = 1; // 初始化基数(2的0次方)为1
int len = strlen(binary); // 获取二进制字符串的长度
// 从字符串的末尾开始遍历,因为二进制数从右向左表示2的幂次
for (int i = len - 1; i >= 0; i--) {
// 如果当前字符是'1',则将base加到decimal上
if (binary[i] == '1') {
decimal += base;
}
// base每次循环乘以2,因为二进制数向左移动一位相当于乘以2
base *= 2;
}
// 返回转换后的十进制数
return decimal;
}
以下是程序的详细解释:
1. 包含必要的头文件stdio.h和string.h。stdio.h用于输入输出操作,string.h用于字符串操作。
2. 声明binaryToDecimal函数原型,它将一个指向二进制字符串的指针作为参数,并返回一个整数。
3. 在main函数中,声明一个字符数组binary用于存储用户输入的二进制数,以及一个整数decimal用于存储转换后的十进制数。
4. 使用printf函数提示用户输入一个二进制数。
5. 使用scanf函数读取用户输入的二进制字符串。
6. 调用binaryToDecimal函数,将用户输入的二进制字符串转换为十进制数。
7. 使用`printf`函数输出转换后的十进制数。
8. 定义binaryToDecimal函数,该函数接受一个二进制字符串并返回其十进制等价值。
9. 在binaryToDecimal函数中,初始化十进制结果为0,基数base为1。
10. 使用strlen函数获取二进制字符串的长度。
11. 使用一个for循环从字符串的末尾开始遍历,因为二进制数是从右向左表示2的幂次的。
12. 在循环中,检查当前字符是否为1。如果是,则将当前的base值加到decimal上。
13. 在每次循环结束时,将base乘以2,因为二进制数向左移动一位相当于乘以2。
14. 循环结束后,返回计算出的十进制数。
通过这个程序,用户可以输入一个二进制数,程序会输出其对应的十进制数。