2015-11-04 85 views
-4

我需要编写需要一个函数来计算power在C++功能功率C++

我不明白为什么我下面的代码是错误的。

ex。 :基地:2的指数3 - >结果:4.48498e-306 如果我使用 “INT” 的结果是 - > 2

#include <iostream> 
#include <cstdlib> 
#include <cmath> 

using namespace std; 

double power(double base, double exponent);  

int main() 
{  
    double base, exponent, power; 

    cout << "Enter a base " << endl; 
    cin >> base; 
    cout << "Enter an exponent" << endl; 
    cin >> exponent; 
    cout << "The result is ': "<< power << endl; 
    return 0; 
}  

double power(double base, double exponent) 
{ 
    int i; 
    double s=1; 
    for (i = 0; i < exponent; ++i) 
     s *= base; 
    return s; 
} 

我在做什么错?

+0

我无法重现此错误;我得到8. – Beta

+3

嗯...你永远不会打电话功能... – bolov

+0

除此之外,使exponente int和一切都很好。 – bolov

回答

1

您可能是打印功能power的地址或打印双power的初始化值你编写代码的方式。 (从技术上讲,你正在击中未初始化的阴影变量)。无论如何,你甚至不会调用你写的函数...... power函数怎么知道被调用?有什么论点?

修复1.建议删除power的“双”。
修复2.实际调用函数并使用/存储/打印结果

示例。 从用户获取输入之后:

double result = power(base, exponent); 
cout << result << endl; 

要打印结果。

+0

谢谢。我使用“结果”,我解决了。 – luke

1

你需要像这样的调用函数,参数: 这里是你的主。你不需要局部变量。你需要名称权力的呼叫功能。

int main() 
{  
double base,esponente;  
cout<<" \n Inserisci base \n"; 
cin>>base; 
cout<<"\nInserisci esponente\n"; 
cin>>esponente;             
cout<<"\nL'elevamento a potenza e': "<<power(base,esponente)<<endl; 
system ("PAUSE");          
}  
+1

告诉他删除局部变量'power' – bolov

4

在您的代码中,您有两个声明power

double power(double base, double esponente);

double base,esponente,power;

您声明变量power,但你可以在打印前从来没有初始化,所以这将是不确定的。重新运行你的程序实际上会给你一个不同的数字。您需要删除此局部变量声明,因为它会影响全局函数声明。

然后,而不是

cout<<"\nL'elevamento a potenza e': "<<power<<endl;

希望此行:

cout<<"\nL'elevamento a potenza e': "<<power(base, esponente)<<endl;