C语言编程用指针编写函数,将一个二进制数(以字符串形式表示)转换为十进制数。请给出运算结果

函数原型如下:
double binTodec(char *str);
其中str为接收的二进制数,函数的返回值为对应的十进制数。

如输入:
1010
则输出为:
10.000000
又如输入:
100.11
则输出为:
4.75

double binTodec(char *str)
{
    int i = 0, j;
    double p1 = 1, p2 = 0.5;
    double res = 0;
    
    while(str[i]!='\0' && str[i]!='.')
        j = i++;
        
    do{
        res += (str[j--]-'0')*p1;    //    计算整数 
        p1 *= 2;
    }while(j >= 0);
    
    if(str[i] == '.')
    {
        do{
            res += (str[++i]-'0')*p2;    //    计算小数     
            p2 /= 2;
        }while(str[i+1] != '\0');
    }
    
    return res;
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网