返回信息流题目是把输入的二进制数转换为十进制输出。
我做的这个程序输入个100,1111,什么的都没问题。可是输入1111111111,就会出现0,我的电脑是64位的,不应该是存储空间的问题呀。求真相。。。。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{int d,e,g,h,b,i,c;
double a,f;
a=2;d=0;e=0;g=0;h=0;i=0;
scanf("%d",&b);
for(c=10,f=0;c<=10*b;c=c*10,f++)
{d=b%c;
g=(d-h)*10/c;if(g>=2)break;
e=g*pow(a,f);
h=d;
i=i+e;
}
printf("%d\n",i);
system("pause");
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #75139同步于 2013/11/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求大神指教,大一的c语言,二进制转换,谢谢。
yy2013
2013/11/10镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
少年,我觉得你这个程序不太好;
你可以这么写:
int i ;
int result =0;
while(cin >> i ){
result = result *2 +i;
}
输入 101;输出5;
高位在前读入的话,是没问题的;