C ++代码不起作用,如果我在指数中置零

时间:2018-11-20 23:58:44

标签: c++ algorithm

#include<iostream>

using namespace std;

void power(void)
{
    int base, exponent=1, result, loopstart=1;
    cout << "enter base: ";
    cin >> base;
    cout << "enter exponent: ";
    cin >> exponent;
    result = base;
    while(loopstart < exponent)
    {
        result = base * result;
        loopstart++;
    }
    cout << "the result is: " << result;
}

int main()
{
    power();
    return 0;
}

这是我写的C ++代码,用于查找所需的数字幂。如果base = 5exponent = 0,该函数应该返回1,但是当前我的程序正在输出5。我需要使用while循环来解决此问题。谢谢。

2 个答案:

答案 0 :(得分:2)

出现此问题的原因是您的程序只能计算1或更高的幂。循环之前的初始值是1的幂的基数。

result = base;
while(loopstart < exponent)
{
    result = base * result;
    loopstart++;
}

要改善这一点,显然您需要从0幂开始。这意味着您的循环需要为剩余的功率执行一个额外的步骤,这可以通过将loopstart初始化为0来实现。

loopstart = 0;
result = 1;
while(loopstart < exponent)
{
    result = base * result;
    loopstart++;
}

答案 1 :(得分:0)

#include<iostream>
using namespace std;
void power(void)
{
int base,exponent=1,result,loopstart=1;
cout<<"enter base: ";
cin>>base;
cout<<"enter exponent: ";
cin>>exponent;
result=base;
if (exponent == 0){
    result = 0;
    }
else{
while(loopstart<exponent)
{
    result=base*result;
    loopstart++;
}
}
cout<<"the result is: "<<result;
}
int main()
{
power();

return 0;
}

问题在于,甚至在运行while循环之前,您都将结果设置为基础。因此,即使while循环不运行,结果也将始终是基础,如您所愿。尝试像上面一样添加if语句。