求助!二进制转十进制带小数的一段代码循环不出来!
#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;
} 输入与输出要求:
输入一个以“#”结尾的字符序列,代表待转换的二进制数。输出转换后的十进制数,如果二进制数有小数部分,则输出结果保留6位有效数字;如果二进制数没有小数部分,则输出结果中没有小数点和小数部分。 噢 忘记加&了...自己解决了
页:
[1]