使用if / else if的函数输出问题

时间:2019-05-30 21:59:45

标签: c++

我(c ++的新手)尝试手动创建幂函数,并遇到以下问题:如果输入的幂为负,则结果总是打印为0。我怀疑其中一个变量可能不是正确声明,请您帮忙

#include <iostream>

using namespace std;

int power;
float result = 1, base;

int firs();
void pow(int base, int power);

int main()
{
    firs();
    pow(base, power);

    return 0;
}

int firs()
{
    cout << "Enter a base input: ";
    cin >> base;

    cout << "Enter a power input: ";
    cin >> power;

    return base, power;
}

void pow(int base, int power)
{
    cout << "With a given base of " << base << " and a given power of " << power << endl;

    if (power > 0)
    {
        for (int i = 0; i < power; i++)
        {
            result = result*base;
        }

    cout << "The final answer is: " << result;

    }
    else if (power < 0)
    {
        for (int i = 0; i > power; i--)
        {
            result = result*(1/base);
        }

    cout << "The final answer is: " << result;
    }
    else
    {
        cout << "The final answer is: " << 1;
    }
}

2 个答案:

答案 0 :(得分:0)

问题出在以下代码部分:

    else if (power < 0)
    {
        for (int i = 0; i > power; i--)
        {
            result = result*(1/base);
        }
    }

在计算(1/base)时,由于1base均为int,因此结果也将转换为{{1 }}(如果int大于0)。您可以通过将base定义为1,使用base而不是float或使用explicit type casting来避免这种情况:

1.0

还有return base, power only returns power

答案 1 :(得分:0)

只需更改此行

        result = result*(1/base);

        result = result*(1.0/base);

您将得到正确的结果。