求余弦公式:![cos=\frac{x^{0}}{0!}-\frac{x^{2}}{2!}+\frac{x^{4}}{4!}-\frac{x^{6}}{6!}+...](https://latex.csdn.net/eq?cos%3D%5Cfrac%7Bx%5E%7B0%7D%7D%7B0%21%7D-%5Cfrac%7Bx%5E%7B2%7D%7D%7B2%21%7D+%5Cfrac%7Bx%5E%7B4%7D%7D%7B4%21%7D-%5Cfrac%7Bx%5E%7B6%7D%7D%7B6%21%7D+...)
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/b10c1a7cc2f9e8411a24df138594933a.png)
C语言代码如下:
#include <stdio.h>
#include <math.h>
double fn(int n);
double funcos(double e,double x);
int main()
{
double e,x;
printf("请输入精度e,值x:");
scanf("%lf%lf",&e,&x);
printf("\nCosx = %lf",funcos(e,x));
return 0;
}
double fn(int n) //阶层计算
{
double sum=1;
int i;
for(i=2;i<=n;i++)
sum=sum*i;
return sum;
}
double funcos(double e,double x) //求余弦函数的近似值
{
double item=1; //每一项的值
int flag=1,i=2; //flag用于变正负号,i用于循环
double sum=1; //近似值,并把第一项的值赋给sum
while(fabs(item)>=e) //最后一项绝对值不小于e
{
flag=-flag; //变号
item=flag*1.0*pow(x,i)/fn(i); //具体一项的计算
sum=sum+item; //依次把每一项值赋给sum
i=i+2; //循环次数每次跳两个
printf("%lf ",item);
}
return sum;
}
注意:funcos函数的while循环里面是先算出每一项的值item,然后再加到sum里面,所以最后一项也是加到了sum里面的。因此退出循环后不需要再把最后一项item加到sum,不然就加重复了。