求余弦函数的近似值 求纠错请纠错,不要给出一大段别人的正确的代码……输入一个正整数 repeat (0

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 02:54:20
求余弦函数的近似值求纠错请纠错,不要给出一大段别人的正确的代码……输入一个正整数repeat(0求余弦函数的近似值求纠错请纠错,不要给出一大段别人的正确的代码……输入一个正整数repeat(0求余弦函

求余弦函数的近似值 求纠错请纠错,不要给出一大段别人的正确的代码……输入一个正整数 repeat (0
求余弦函数的近似值 求纠错
请纠错,不要给出一大段别人的正确的代码……
输入一个正整数 repeat (0

求余弦函数的近似值 求纠错请纠错,不要给出一大段别人的正确的代码……输入一个正整数 repeat (0
#include "stdio.h"
#include "math.h"
double fact(int n)
{
 double i,sum=1;
 for(i=2;i<=n;i++) 
  sum*=i;
 return sum;
}
double funcos(double e, double x)
{
     int i,m=1;//加一个标志位,在1和-1之前变换
     double sum=0,fenzi,fenmu,t;//这儿,你的sum没初值,结果必然是错的,初始化为0
     for(i=0;;i+=2)
     {
          fenzi=pow(x,i);
          fenmu=fact(i);
          t=m*fenzi/fenmu;
          if(fabs(t)<e)   // 由于存在负号,所以求绝对值 if(t<e) 
           break;
          sum+=t;
          m=-m;
          //加正项去负项的做法有问题 if((i+4)%4==0) sum+=t;
          // else sum-=t;
    }             
    return sum;
}
int main(void)
{
 int repeat, ri;
 double e, sum, x; 
 
 scanf("%d", &repeat);   
 for(ri = 1; ri <= repeat; ri++)
 {
      scanf("%lf%lf", &e, &x);//double类型最好用%lf 格式控制scanf("%le%le",&e,&x);
      sum=funcos(e,x);
      printf("sum = %f\n", sum);
 }
}
结果:


 你的样例1输出是错的
cos(0)==1
sin(0)==0才是对的哦