6-12 使用函数求余弦函数的近似值分数 15

这道题很好玩!

这个地方是 裁判测试的代码 也就是

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

double funcos( double e, double x );

int main()
{    
    double e, x;

    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
    
    return 0;
}

/* 你的代码将被嵌在这里 */

而我们所需要做的就是写出这个代码的后面的部分,我们可以用阶乘来算出来这个地方的分母

(这个题里面是l) 

//c和k必须是double类型 否则就会运行超时!

double funcos(double e,double x)
{
    double l=1,c,k=1;//c和k必须是double类型 否则就会运行超时!
    int d=1;
    for(int i=2;;i+=2)
    {
        d++;
        if(i>0)
        l=l*i*(i-1);//使用阶乘来算出分母,因为如果i是4的话 需要是1*2*3*4 但是由于我们这里的i在循环的过程中不会出现3,所以就只能是i-1来算出阶乘;
        if(d%2==1){    //这个地方很好理解,d是判断是第几项的,第1 3 5等等的都是加 其他的都是减;
            k=k+pow(x,i)/l;
        }
        else k=k-pow(x,i)/l;
        if(fabs(c-k)<=e) break;
        c=k;//这里的c储存的是上一次的k 要将上一次的k与这次的k进行比较 小于e 就行!
    }
    return k;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值