1. 二进制到十进制的转换,字符串处理
/*二进制数转换为十进制数*/
#include
main()
{
char ch;
int sum1=0,count=1,num;
double sum2=0,a,i;
printf("请输入二进制字符序列,以#结束:\n");
scanf("%c",&ch);
num=ch-'0';
while(num!='.'-'0'&&num!='#'-'0') //小数点之前的转换;
{
if(num==1&&count==1)
{
sum1=1;
count++;
}
else if(num==0&&count>=2)
{
sum1=sum1*2;
count++;
}
else if(num==1&&count>=2)
{
sum1=sum1*2+1;
count++;
}
scanf("%c",&ch);
num=ch-'0';
}
a=2;
while(num!='#'-'0') //小数点之后的转换;
{
if(num==0||num==1)
{
i=num/a;
sum2=sum2+i;
a=a*2;
}
scanf("%c",&ch);
num=ch-'0';
}
if(sum2==0)
printf("\n该二进制数对应的十进制数是:%d\n",sum1);
else
printf("\n该二进制数对应的十进制数是:%f\n\n",sum1+sum2);
return(0);
}
运行结果如图:
1. 二进制到十进制的转换,字符串处理
/*二进制数转换为十进制数*/
#include
main()
{
char ch;
int sum1=0,count=1,num;
double sum2=0,a,i;
printf("请输入二进制字符序列,以#结束:\n");
scanf("%c",&ch);
num=ch-'0';
while(num!='.'-'0'&&num!='#'-'0') //小数点之前的转换;
{
if(num==1&&count==1)
{
sum1=1;
count++;
}
else if(num==0&&count>=2)
{
sum1=sum1*2;
count++;
}
else if(num==1&&count>=2)
{
sum1=sum1*2+1;
count++;
}
scanf("%c",&ch);
num=ch-'0';
}
a=2;
while(num!='#'-'0') //小数点之后的转换;
{
if(num==0||num==1)
{
i=num/a;
sum2=sum2+i;
a=a*2;
}
scanf("%c",&ch);
num=ch-'0';
}
if(sum2==0)
printf("\n该二进制数对应的十进制数是:%d\n",sum1);
else
printf("\n该二进制数对应的十进制数是:%f\n\n",sum1+sum2);
return(0);
}
运行结果如图: