debugging C++中的幂函数输出错误

5vf7fwbs  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(99)
#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

ve7v8dk2

ve7v8dk21#

您的表达式10^i可以迭代表示:

int power_10 = 1;
int value = 0;
for (int j = 0; j < i; ++j)
{
  power = power * 10;
}

上面的代码不涉及浮点,因此不会有转换的损失。
您可能希望将表达式计算更改为迭代方法。

相关问题