本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:
cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯
本题:需注意x的0次方为1,0的阶乘为1
#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;
}
/* 你的代码将被嵌在这里 */
double funcos( double e, double x )
{
double sum = 0;
double a = 1.0;
int i = 0;
int k = 0;
int z = 0;
int q = 1;
while( 1 )
{
if( i == 0 )
{
a = 1.0;
i++;
}
else
{
a = a*k*(k-1)*1.0; 阶乘的另外形式
}
if( pow(x,k)/a < e )
{
sum = sum + (pow(x,k)/a) * q;
break;
}
sum = sum + (pow(x,k)/a) * q;
k = k + 2;
q = q*(-1);
}
return sum;
}