首页 > 解决方案 > 使用 while 循环而不是 pow:这个错误是什么意思?

问题描述

我正在尝试使用 C 编程创建一些代码,这些代码可以使用用户指定的两个值来显示一定幂的数字。我想在第一部分使用 pow,在第二部分使用 while 循环。但是,我遇到了一个我似乎无法摆脱的当前代码错误。

这是我不熟悉的错误:

error: invalid operands to binary * (have ‘int (*)(int,  int)’ and ‘int’)
       result2 = result2 * base;

我试过用同样的错误调查其他问题,但它们差异很大,我无法理解。

我已经尝试过研究“long”,但我还没有通过我的 C 教科书体验过它,所以如果可能的话,我想避免使用它。

#include <stdio.h>
#include <math.h>

int result2(int base, int exponent);

int main(void)
{
    double base;
    double exponent;
    double result1;

    puts("Please enter a value as the base and another as the exponent.");
    scanf("%lf%lf", &base, &exponent);

    result1 = pow(base, exponent);

    printf("Library solution: %lf\n", result1);

    printf("My solution: %d\n", result2(base, exponent));
}

int result2(int base, int exponent)
{
    int i;


    for(i=1; i<=exponent; i++)
    {
        result2 = result2 * base;
    }
    return;
}

我希望能够使用这两种方法和用户的值正确计算方程。但是,有了这个错误,我似乎无法超越并实现这一目标。谢谢你。

标签: c

解决方案


int result2(int base, int exponent)
{
    int i;

    for(i=1; i<=exponent; i++)
    {
        result2 = result2 * base;
    }
    return;
}

result2是您的函数的名称。与其像使用可以累积循环结果的变量一样使用它,不如创建一个变量来完成这项工作。然后在最后返回变量的值。

int result2(int base, int exponent)
{
    int i;
    int result = 1;

    for(i=1; i<=exponent; i++)
    {
        result = result * base;
    }
    return result;
}

更好的是,给函数起一个不同的名字。result2听起来像一个变量的名称。该函数应该被命名为表明它做什么的东西。既然pow被拍了,怎么power办?

int power(int base, int exponent)
{
    int result = 1;

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

    return result;
}

其他一些小的改进是int ifor循环内声明,并result *= base用作result = result * base.


推荐阅读