如何使用for循环使用指数

时间:2015-03-06 19:46:08

标签: loops for-loop integer exponent

我正在为我的编程类开发函数HW,我正在尝试编写一个允许我进行指数数学运算的函数(以简单的形式)。 (哦,我不能使用实际的指数函数,我必须使用for循环,if语句或其他类似的东西编写我自己的函数。) EX:用户输入基数,然后输入电源进行提升。所以用户输入: 五 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);

3 个答案:

答案 0 :(得分:0)

嗯,你正在为循环和结果使用相同的变量。你不想这样做。

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

是你想要的。在循环计数上你也是一个人。用i&lt; = pow你有

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

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

i = 2,j * 5 = 125,i = 3。这是你要停止的地方,但是3&lt; = 3,所以它再次出现。

i = 3,j * 5 = 625,i = 4。 4不是&lt; = 3所以它将在此停止。

答案 1 :(得分:0)

循环显然是错误的:

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

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

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

答案 2 :(得分:0)

你想要一个从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);