这道题很好玩!
这个地方是 裁判测试的代码 也就是
#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;
}