如何使用 for 循环使用指数

How to use exponents using a for loop

我正在为我的编程开发函数 HW class,我正在尝试编写一个允许我进行指数数学运算(以简单形式)的函数。 (哦,我不能使用实际的指数函数,我必须使用 for 循环、if 语句或类似的东西编写自己的函数。) EX:用户输入基地,然后输入提升它的权力。所以用户输入: 5个 3个 它应该是 5 的 3 次方,所以它应该输出 125 (5x5x5)。但是我的 for 循环无法正常工作。我应该如何构造我的 for 循环以正确处理指数数学? 代码: int main(){

int base, pow;

scanf("%d", &base);
scanf("%d", &pow);

int i;
for (i=0; i<=pow; i++) {
    i *= base;
    printf("%d\n", i);
}

printf("%d", i);

好吧,您正在为循环和结果使用相同的变量。你不想那样做。

int j = 1;
for(i =  0; i < pow; i++)
{
      j*= base;
}

就是你想要的。您的循环计数也差了一个。使用 i <= pow 你有

i=0,j*5=5,i=1

i=1,j*5=25,i=2

i=2,j * 5 = 125,i=3。这是你想停下来的地方,但 3 <= 3 所以它又走了。

i=3,j*5=625,i=4。 4 不是 <= 3 所以它会停在这里。

循环明显错误:

for (i=0; i<=pow; i++) {
    i *= base;
    printf("%d\n", i);
}

您出于某种原因将循环计数器乘以基数,这不会产生任何好处。 正确的是:

int result = 1;
for (i=0; i < pow; i++) {
    result *= base;
}

您想要一个从 1 开始并且每次都乘以基数的累加器。这个累加器也不应该是 i(因为它会在 for 循环的每一步发生变化)。

尝试

int base, pow;

scanf("%d", &base);
scanf("%d", &pow);

int i, accumulator;
accumulator = 1
for (i=0; i<pow; i++) {
  accumulator *= base;
  printf("%d\n", accumulator);
}

printf("%d", accumulator);