#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 = 5
和exponent = 0
,该函数应该返回1
,但是当前我的程序正在输出5
。我需要使用while
循环来解决此问题。谢谢。
答案 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语句。