HuracanAChan 发表于 2018-11-8 08:08:47

求助!二进制转十进制带小数的一段代码循环不出来!

#include<stdio.h>
#include<math.h>
int main(void)
{
        char a;                     //储存整数部分
        char b;                     //储存小数部分
        char ch;
        int i=0,j=0,counti=0,flag=0;
        double countj=0;
        int sumLeft=0;
        double sumRight=0;
       
        scanf("%c",&ch);
        while(ch!='#')
        {
                if(ch!='.'&&countj==0)
                {
                        a=ch;
                        i++;
                        counti++;
                        scanf("%c",&ch);
                }
                else
                {
                        scanf("%c",ch);
                        if(ch=='#')
                        {
                                ch=='#';
                        }

                        else
                        {
                        b=ch;
                        j++;
                        countj++;
                        }
                }
        }
        for(i=counti-1;i>=0;i--)                     //二进制转换十进制
    {
                sumLeft+=(a-'0')*((int)pow(2,counti-1-i));
        }
        for(j=0;j<countj;j++)                     //二进制转换十进制
    {
                sumRight+=(b-'0')*((double)pow(2,-(j+1)));
        }
        printf("%.6f\n",sumLeft+sumRight);
        printf("%.6f\n",countj);
        if(countj==0)
        {
                printf("%d",sumLeft);
        }
        else
        {
                printf("%.6f",sumLeft+sumRight);
        }
        return 0;
}

HuracanAChan 发表于 2018-11-8 08:09:22

输入与输出要求:
输入一个以“#”结尾的字符序列,代表待转换的二进制数。输出转换后的十进制数,如果二进制数有小数部分,则输出结果保留6位有效数字;如果二进制数没有小数部分,则输出结果中没有小数点和小数部分。

HuracanAChan 发表于 2018-11-8 13:29:21

噢   忘记加&了...自己解决了
页: [1]
查看完整版本: 求助!二进制转十进制带小数的一段代码循环不出来!