我(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;
}
}
答案 0 :(得分:0)
问题出在以下代码部分:
else if (power < 0)
{
for (int i = 0; i > power; i--)
{
result = result*(1/base);
}
}
在计算(1/base)
时,由于1
和base
均为int
,因此结果也将转换为{{1 }}(如果int
大于0
)。您可以通过将base
定义为1
,使用base
而不是float
或使用explicit type casting来避免这种情况:
1.0
答案 1 :(得分:0)
只需更改此行
result = result*(1/base);
到
result = result*(1.0/base);
您将得到正确的结果。