#include <stdio.h>

#include <math.h>

int factorial(int n) { int result = 1,i; for ( i = 1; i <= n; i++) { result *= i; } return result; }

int main() { int n,i,k; float x,re=0,m;

scanf("%f %d", &x,&n);
  for (i=1;i<=n;i++)
  {
   m=pow(-1, i-1)*pow(x,2*i-1) / factorial(2*i-1);
      re=re+m;
  }
printf("%.8f",re);
return 0;

}

这个代码 软件对我说'pow': 对重载函数的调用不明确,怎么办?

这个错误是因为在调用 pow 函数时,传入的参数类型不明确,导致编译器无法确定使用哪个重载版本的 pow 函数。解决方法是明确指定参数的类型。

在代码中,将 pow 函数调用处的参数类型改为相应的类型即可。例如,将 pow(-1, i-1) 改为 pow(-1.0, i-1.0),将 pow(x,2i-1) 改为 pow(x,2.0i-1.0)。

修改后的代码如下:

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

int factorial(int n)
{
    int result = 1,i;
    for ( i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

int main()
{
    int n,i,k;
    float x,re=0,m;

    scanf("%f %d", &x,&n);

    for (i=1;i<=n;i++)
    {
        m=pow(-1.0, i-1.0)*pow(x,2.0*i-1.0) / factorial(2*i-1);
        re=re+m;
    }

    printf("%.8f",re);
    return 0;
}

这样修改后,代码应该可以正常编译和运行。

C语言 pow 函数重载调用错误解决方法

原文地址: https://www.cveoy.top/t/topic/o7X5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录