首页 > 其他分享 >C语言经典20例(二进制数转换为十进制数)

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

时间:2024-10-23 17:46:31浏览次数:3  
标签:binary 20 函数 二进制 decimal C语言 字符串 十进制

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

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

标签:binary,20,函数,二进制,decimal,C语言,字符串,十进制
From: https://blog.csdn.net/lxsxjsj/article/details/143126167

相关文章

  • 剑来-2024秋软件工程第一小组项目展示
    |作业所属课程|班级的链接||---------|------------||作业要求|https://edu.cnblogs.com/campus/fzu/SE2024/homework/13290||作业的目标|开发一个基于LLM大模型接口的软件,为传统的软件赋予全新的体验和功能。||团队名称|银河战舰|......
  • 明解c语言入门篇练习4-2do语句延伸
    明解c语言练习4-2我们可以看到题目:编写一段程序,像右面这样读取两个整数的值,然后计算出他们之间所有整数的和。上次我发了一段这个练习4-2的代码可以看一下#include<stdio.h>intmain(void){  inta,b,max,min;  intsum=0;  printf("请输入两个整数:......
  • 2024年智能CRM系统推荐:4个主流CRM系统AI能力分析
    人工智能相关应用在商用软件领域迅速发展,各大CRM供应商近年来发力AI,在个性化客户互动、预测性分析、智能工作助手等方面,在CRM中加入更智能、更实用、更高效的人工智能相关功能。本篇文章盘点智能CRM系统,介绍各大CRM厂商在探索AI方面的主要成果和卖点,为您选型智能CRM系统提供参考。......
  • 2024.6.18
    2024.6.18T1题面给定若干个自然数\(a_{1\simn}\)。你需要选出其中一些数,然后将你选出的数划分为若干个集合。你需要最大化每个集合mex的异或和,输出这个值。\(1\lea_i\len\le10^6\)解法找出所有的\(0\to1\to2\to\cdots\tox\)链,每一个链对应集合\(\{0,1,\cdots,......
  • 2024-10-22
    注释scribt的输出方式scribt的数据类型原始类型复合类型示例:Math函数Date函数document获取元素documengt.getElementsByTagName()documengt.getElementsByClassName()document.getElementsByName()document.getElementsById()decument.querySelector()d......
  • 2024.6.17
    2024.6.17T1题面有一个\(n\)个节点的联通图给出一个\(n\timesn\)的矩阵,其中\(a_{i,j}\)表示节点\(i\)与节点\(j\)之间的最短路,求原图的边权之和的最小值,如果不合法,输出\(-1\)\(n\le300,1\lea\le10^9\)解法我们先利用\(floyd\)跑一下,如果存在\(a_{i,k}+a_{......
  • 信息学奥赛复赛复习20-CSP-S2019-01格雷码-数据类型范围、unsigned 关键字、无符号范
    PDF文档回复:202410231P5657[CSP-S2019]格雷码[题目描述]通常,人们习惯将所有n位二进制串按照字典序排列,例如所有2位二进制串按字典序从小到大排列为:00,01,10,11。格雷码(GrayCode)是一种特殊的nn位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地......
  • 2024秋软工实践 “银河护胃队”团队展示与选题报告
    作业所属课程https://edu.cnblogs.com/campus/fzu/SE2024/作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13290作业的目标团结队伍,任务分配,建立合作体系,调研、需求分析团队名称银河护胃队团队成员学号-名字072208130-曹星才(组长)052205144-张......
  • 信息学奥赛复赛复习20-CSP-S2019-01格雷码-数据类型范围、unsigned 关键字、无符号范
    PDF文档公众号回复关键字:202410231P5657[CSP-S2019]格雷码[题目描述]通常,人们习惯将所有n位二进制串按照字典序排列,例如所有2位二进制串按字典序从小到大排列为:00,01,10,11。格雷码(GrayCode)是一种特殊的nn位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同......
  • 招聘爬虫工程师(20-30k)
    岗位职责:1、负责设计、开发、维护爬虫系统;2、参与多平台信息的抓取和分析;3、建立完整的数据获取、解析、入库和监控流程,并不断优化迭代完善;4、设计爬虫反屏蔽规则,提升网页抓取的效率和质量;5、利用主流的大数据相关技术,对抓取后的网页数据进行清洗、存储等;并持续优化平台,......