注册 登录
编程论坛 C++教室

2进制和10进制的转换?

兜兜里有枪 发布于 2007-04-22 10:10, 654 次点击

#include <iostream>
using namespace std;
double power(double x,int n);

int main()
{
int i;
int value;
char ch;

cout<<"enter an 8 bit binary number";
for(i=7;i>=0;i--)
{
cin>>ch;
if(ch=='1')
value+=int(power(2,i));
}
cout<<"the total is"<<value<<endl;
}
double power(double x,int n)
{
double val=1.0;
while(n--)
val*=x;
return(val);


}假如输入01101001,运行结果真么和预期的比一样呢?

4 回复
#2
wfpb2007-04-22 10:25
value没有初始化
#3
边城路人2007-04-22 11:01
for(i=7;i>=0;i--)
{
cin>>ch;
if(ch=='1')
value+=int(power(2,i));
}
把它换个位置试试
#4
yuyunliuhen2007-04-22 11:55

#include <iostream>
using namespace std;
double power(double x,int n);

void main()
{
int i;
int value=0;
char ch;

cout<<"enter an 8 bit binary number:\n";
for(i=7;i>=0;i--)
{
cin>>ch;
if(ch=='1')
value+=power(2,i);

}
cout<<"the total is"<<value<<endl;
}
double power(double x,int n)
{
int val=1;
while(n--)
val*=x;
return val;


}
这样可以了

#5
yuyunliuhen2007-04-22 12:00
int(power(2,i));
在进行double 向 int的强制转换很可能出现问题,最好开始就定义为int的类型,在二进制与十进制转换的时候不需要 double型的
1