-1

响应此提示:

编写一个integerPower( base, exponent )返回基指数值的函数。例如,integerPower( 3, 4 ) == 3 * 3 * 3 * 3。假设它exponent是一个正的非零整数并且base是一个整数。该函数integerPower应该使用fororwhile来控制计算。不要使用任何数学库函数。

我写了这个程序:

#include <iostream>
#include <conio.h>
using namespace std;

int integer (int a, int b) {
  int e;

  for (int i = 1; i <= b; i++)
    e *= a;

  return (e);
}

int main () {
  cout << "enter number and exponent";
  cin >> num >> exp;
  cout << num << "to the power" << exp << "is" <<;
  int num, exp, n;
  integer (num, exp, n);
  getch ();
  return 0;
}

出于某种原因,integer (int a, int b)无论aand的值是什么,该函数都会返回 0 b。为什么?

4

4 回答 4

3

您应该将 e 初始化为 1。

int e = 1;

此外,您没有在正确的位置声明类型numexp

int main () {
  cout << "enter number and exponent";
  int num, exp;
  cin >> num >> exp;
  cout << num << "to the power" << exp << "is" << integer (num, exp); // remove the third parameter
  getch ();
  return 0;
}
于 2013-12-21T11:37:31.040 回答
0

在函数内部integer,像这样初始化e

int e = 1;

另外,在声明int num, exp, n;之前移动。cin

于 2013-12-21T11:37:03.047 回答
0

正如您在其他答案中所读到的,您必须在主函数中声明 num 和 exp 变量,并在函数整数中将 e 初始化为 1。但是您不需要使用命名空间std,您只需将std:: 添加到其成员的引用中,例如std::cin、std::cout,您的代码将会更加清晰。干杯!

于 2013-12-21T12:43:00.113 回答
0

首先,不清楚为什么等于 0 的指数被排除在可接受的值之外。我会用以下方式编写函数

int integerPower( int base, unsigned int exponent )
{
   int result = 1;

   while ( exponent-- != 0 ) result *= base;

   return ( result );
}
于 2013-12-21T13:08:26.247 回答