时月oe 2019-07-05 16:38 采纳率: 50%
浏览 446
已采纳

关于二进制转化为十进制的问题

关于二进制转化为十进制的问题

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n;            //二进制数
    int count;                  //用来存储数字个数

    cin >> count ;
    cin >> n;
    int * p = new int[count];    //定义一个数组存储每一个数字
    for(int i = count -1;i>=0;i--)      /*循环的目的是把数字存入数组中*/
    {
        p[count - i - 1] = n /pow(10.0,i);
        n = n - p[count - i - 1] * pow(10.0,i);
    }

    int S = 0;      
    for(int i = 0;i<count ;i++)       //这个循环负责转换二进制,公式我就不写啦
    {
        S = S + p[i]*pow(2.0,count - i - 1) ;
    }
    cout << S << endl;
    return 0;
}

这个代码我测试这没问题,随便试了几个二进制数字也是可以转化的,但是在一个编程网站上显示10组数据中通过了8组,请问这是为什么??希望有大佬可以指点一下。

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-07-05 17:15
    关注

    不要用pow,而应该移位,否则可能存在浮点误差,导致错误
    还有就是负数、小数、超大数这些你的程序不支持,看题目怎么说

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 12月28日

悬赏问题

  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启