曲终人尽散、物是已人非 2021-08-27 12:01 采纳率: 100%
浏览 123
已结题

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;
}

  • 写回答

7条回答 默认 最新

  • aabyte 2021-08-27 13:58
    关注

    试了试题主最后发的,好像指数在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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日
  • 创建了问题 8月27日

悬赏问题

  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件