功能强大C ++

时间:2015-11-04 23:33:08

标签: c++

我需要编写需要一个函数来计算C ++中的power

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

离。 :base: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;
}

我做错了什么?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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");                                     
}    

答案 2 :(得分:1)

您要么打印函数power的地址,要么以编写代码的方式打印双power的未初始化值。 (从技术上讲,你正在击中一个未初始化的阴影变量)。在任何情况下,你甚至没有调用你写的函数......如何知道power函数被调用?有什么论据?

修复1.建议您删除&#39; double&#39; power 修复2.实际调用该函数并使用/存储/打印结果

例子。 收到用户的输入后执行以下操作:

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

打印结果。