#include<iostream>
#include<cmath>
using namespace std;
int binary_conversion(int e,int w,int q,int n,int i)
{
while(abs(w)>=1){//abs(e) to ensure that for negative numbers
if(abs(w)>=1){
e=w%2;
w=w/2;
}
else
{
w=0;
}cout<<"i is"<<i<<"\n";cout<<"q is before"<<q<<"\n";
int r=pow(10,i);cout<<" r is"<<r;
q=q+pow(10,i)*e;cout<<"q is"<<q<<"\n";
i++;
} return q ;
}
int main(){
int n,w,q=0;int i=0,e;
cin>>n;w=n;e=n;
binary_conversion(e,w,q,n,i);
cout<<q;
}
这个程序把一个整数转换成二进制数,我在这个程序中得到的错误是它没有正确的给出10^i的值,它没有给出想要的输出的那一行是
q=q+pow(10,i)*e;cout<<"q is"<<q<<"\n";
i
在第三次迭代中的值是2
,10^i应该是100
,但它是99
。
1条答案
按热度按时间ve7v8dk21#
您的表达式
10^i
可以迭代表示:上面的代码不涉及浮点,因此不会有转换的损失。
您可能希望将表达式计算更改为迭代方法。