嗯.812 2022-11-10 14:26 采纳率: 100%
浏览 107
已结题

c语言进制转换和二分搜索

用C语言编写一个程序,将字符串形式输入的二进制整数转换为对应的十进制数,然后用二分查找法的思想将这个十进制数转换为对应的二进制数并输出。并说明计算机系统执行该程序的过程。(提示:假如需要转换的十进制数是77,则需要在0-127的区间中查找77,查找过程中可以通过对77和区间中间数的比较结果确定对应的二进制数的最高位的值和下一次查找的区间范围,以此类推。) 程序代码和程序执行过程的说明都放入同一个word文档中。

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-11-10 14:32
    关注

    二进制只有0或1,逐个字符读入,不断乘以2

    #include <stdio.h>
    int main()
    {
        char s[9];
        int r[8] = {0};
        gets(s);
        int n = 0,i=0,m=1;
        while(s[i] != '\0')
        {
            n = n*2 + s[i]-'0';
            i++;
        }
        printf("%d\n",n);
    
        int left = 0;
        int right = 128;
        while(left <= right)
        {
            int mid = (left + right)/2;
            if(n>mid)
            {
                r[m++] = 1;
                left = mid;
            }
            else if(n<mid)
            {
                r[m++] = 0;
                right = mid;
            }
            else
            {
                r[m++] = 1;
                break;
            }
    
        }
        for(i=0;i<8;i++)
            printf("%d",r[i]);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 11月10日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分