C语言问题:输入一个二进制数,输出其对应的十进制数。(包括正数、负数、小数)

【注意】不能用到数组的知识。谢谢!
因为我才学到循环语句,所以别用太复杂的语句。

第1个回答  2011-10-23
11(二进制)=3 (十进制) 对了要加分
第2个回答  2011-10-23
下面这个算法不用数组,是直接从键盘输入的。输入一串01字符串,开头可以有负号,中间也可以有小数点,遇到其他字符(包括空格、回车等等)就算结束。
该算法的结果是double型。
然后你在主程序中用printf("%lf",bi_input());就可以按十进制输出了。

double bi_input()
{
double x=0.0,y=1.0;
int f=1,flag=0;
while(1)
{
switch(flag)
{ case 0: switch(getchar()) /* flag==0:第一个字符,可以是负号或小数点,也可以是0或1 */
{ case '1': flag=1;x=1; break;
case '0': flag=1; break;
case '-': flag=1;f=-1; break;
case '.': flag=2; break;
default: return(x*f);/* 遇非法字符(包括回车)结束输入 */
}
break;
case 1: switch(getchar()) /* flag==1:整数部分,可以是0或1,也可以是小数点 */
{ case '1': x=x*2+1;break;
case '0': x=x*2;break;
case '.': flag=2; break;
default: return(x*f);/* 遇非法字符(包括回车)结束输入 */
}
break;
case 2: y=y/2; /* flag==2:小数部分,可以是0或1 */
switch(getchar())
{ case '1': x+=y;break;
case '0': break;
default: return(x*f);/* 遇非法字符(包括回车)结束输入 */
}
}
}
}
【说明】
上述算法中各变量说明:
x是已经输入部分的绝对值,f是正负号。y是当前小数位的单位值。
flag是状态标志:0——处理首字符;1——处理整数部分;2——处理小数部分。本回答被提问者采纳

C语言问题:输入一个二进制数,输出其对应的十进制数。(包括正数、负数...
11(二进制)=3 (十进制) 对了要加分

C语言 将一个二进制数,转换为对应的十进制数。
include<math.h> int main(){ int a[10] = {1,0,0,1,0,1,1,0,0,0};\/\/这里只是预先写好的二进制数,可以自行改为主动输入,主要体现过程 int i = 0;int sum = 0;for(i = 9;i>=0;i--)\/\/9为数组最后一位 { sum = sum + a[i];pow(2,abs(i-9));\/\/i- 9 的绝对...

c语言,将一个二进制数转换成10进制数输出?
将二进制转成十进制,按权值展开求和即可。可以通过以下代码解决:include <stdio.h> include <stdlib.h> int main(){ char a[17];gets(a);int len,i,sum=0,m,j;len=strlen(a);if(len<=16){ for(i=0;i<len;i++){ m=1;if(a[i]=='1'){ for(j=1;j<=len-i-1;j++)m*...

求用C语言编写代码,输入二进制数,输出十进制数,八进制数,十六进制数
void main(void){ char binary[33],i=0,x;int n=0;printf("Type a binary(<33 bit)...\\n");while((x=getchar())=='0' || x=='1'){ binary[i++]=x;if(i==33) break;} binary[i]='\\0';for(i=0;binary[i];(n*=2)+=binary[i++]-'0');printf("To Dec is %d...

C语言:编程实现二进制数转换成十进制数
include <stdio.h> int main(){ int a=0,b=0,c=0;printf("请输入一个二进制数:");scanf("%d",&a);\/\/这里我就不对输入进行检查了 for(int i=0;;i++){ if(a==0)break;b=a%2;a=a\/10;for(int j=i;j>0;j--){ if(b==0)break;else b=b*2;} c+=b;} printf("%d...

c语言把二进制数转换成十进制数的程序怎么写.输入
include<stdio.h> include<string.h> void main(){ char a[10000];int i, num = 0;scanf("%s", &a);for(i=strlen(a)-1; i>=0; i--){ num*=2;num+=a[i]-'0';} printf("%d\\n", num);}

C语言将二进制数字转化为十进制数
n = n * 2 + p[i] - '0';

C语言中如何用循环实现二进制数转换成十进制数
void main(){ cout<<"请输入二进制数";char num[30];char num2[30];cin.getline(num,30);for(int i=0;num[i];i++){ num2[i]=num[i]-'0';\/\/把字符型转成整型 } \/\/补充 int result = 0;for(int j=0;j<i;j++){ if(num2[j])result += pow(2,i-j-1);} cout <<...

用C语言编写输入一个二进制数输出整数
你等下,我写下 include <stdio.h>unsigned int Bin2Int(char str[]){unsigned n=0;int i;for(i=0;str[i];i++)if(str[i]=='1')n=n*2+1;else n=n*2; return n;} int main(){unsigned n;char str[32];scanf("%s",str);n=Bin2Int(str);printf("%u\\n",n);} ...

C语言中如何用循环实现二进制数转换成十进制数
cout<<endl<<"你输入的是一个浮点二进制数"<<endl;else cout<<endl<<"你输入的是个整型二进制数"<<endl;sum=0;for(int j=0;j<d;j++)if(num[j]=='1')sum+=ss(j);if(p==1)for(int k=strlen(num)-1;k>=f;k--)if(num[k]=='1')sum+=ss((f-k));cout<<sum<<endl;...

相似回答