C语言自编程序实现pow()函数功能时程序遇到一个问题!求解

img
我学C语言不久,刚刚在做题,题目要求是编写pow()函数相同功能的 函数,箭头所指的那行代码有问题(其功能是将 2.0^3 再乘上 2.0^0.2 ,以实现pow()函数输出一个数2.0的3.2次幂),希望看到问题的纠正一下,谢谢!
代码如下:


#include<stdio.h>

int main()
{
    double pow(double x,double y);
    double x=2.0,y=3.2;
    double result;
    result=pow(x,y);
    printf("%f",result);
}
double pow(double x,double y)
{
    double z=x,i;
    for(i=1;i<(int)y;i++)
    {z=x*z;}
    z=z*(x^(y-(int)y));
    return z;
}

试了试题主最后发的,好像指数在0到1这个区间时,答案有点偏差
下面是我自己写的,可供参考:

#include<stdio.h>
#include <math.h>
double jc(int n)
{
    if(n==1 || n==0)
        return 1;
    else
        return n*jc(n-1);
}
double powx(double a,double x) //通过指数函数的泰勒展开式求值
{
    double sum=0,y=1;
    int i=0;
    for(i=0; i<300; i++)
    {
        y=y*x*log(a);
        sum=sum+y/jc(i+1);
    }
    if(x==0)
        return 1;
    else if(x>0)
        return sum+1;
}
int main(void)
{
    double a=0,x=0;
    while(1)
    {
        printf("输入底数和指数(非负实数):");
        scanf("%lf%lf",&a,&x);
        printf("自己写的的函数结果为:%lf\n",powx(a,x));
        printf("系统提供的函数结果为:%lf\n\n",pow(a,x));
    }
    return 0;
}

img

不能叫pow吧?改成powx试试

如有帮助,请采纳;

pow函数就是一个计算冥的
pow(a,b); = 计算a^b

然后你的问题就是说C语言中没有^ 这个符号(异或是数学逻辑运算式)
所以报错

^是按位异或,不能操作double吧

c中的^代表按位异或
c里面用来求幂的函数是math.h中引入的pow函数,所以也不建议你自己写函数起名叫pow
有帮助望采纳

img

img

看了各位大佬的反馈,我将前面出错的语句换了一种方式来表示指数函数,结果就不在报错了,且实验结果正确,和原本的pow()函数功能吻合。之前将异或符号^当成幂指数符号来用了0.0


#include<stdio.h>
#include<math.h>
int main()
{
    double po(double x,double y);
    double x=100.0,y=2.001;
    double result;
    result=po(x,y);
    printf("%f",result);
}
double po(double x,double y)
{
    double z=x,i;
    for(i=1;i<(int)y;i++)
    {z=x*z;}
    z=z*exp((y-(int)y)*log(x)); 
    return z;
}

不知道你实现这个函数的意义何在,既然调用的c的函数exp、log这么多函数,那就直接调用pow就好了!纯做练习就不多说了。