C语言经典20例(二进制数转换为十进制数)

 
#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. 循环结束后,返回计算出的十进制数。

通过这个程序,用户可以输入一个二进制数,程序会输出其对应的十进制数。

猜你喜欢

转载自blog.csdn.net/lxsxjsj/article/details/143126167