#include
#include
void main()
{
float sum=0,s=1,t=1,x; /*s,t最好用浮点,要不然经常溢出,另外初值应当是1*/
int i,k=1;
scanf("%f",&x);
for(i=0;i<=100;i+=2) /*最多50项*/
{
if ((t/s)>=1e-6)
{
sum+=(t/s)*k;
k*=-1;
}
else
break;
s*=(i+1)*(i+2); /*阶乘的计算要乘以两项*/
t*=x*x;
}
printf("x=%f\nmycos=%f\tcos=%f\n",x,sum,cos(x));
getch();
}
#include
#include
#include
void main()
{
float sum=1.0,x,s=1,t=1;
int i,k=1,n=1;
scanf("%f",&x);
for(i=2;i<=20;i=i+2)
{
s = s * i * (i-1);
t = t * x * x;
k = k * (-1);
if( fabs(t/s) >=1e-6) { sum=sum + (t/s)*k; } else break;
}
printf("%f -- %f\n",sum,cos(x));
}
试算:
x=0
1.000000
x=0.5
0.877582
#include
#include
#include
void
main()
{
float
sum=1.0,x,s=1,t=1;
int
i,k=1,n=1;
scanf("%f",&x);
for(i=2;i<=20;i=i+2)
{
s
=
s
*
i
*
(i-1);
t
=
t
*
x
*
x;
k
=
k
*
(-1);
if(
fabs(t/s)
>=1e-6)
{
sum=sum
+
(t/s)*k;
}
else
break;
}
printf("%f
--
%f\n",sum,cos(x));
}
试算:
x=0
1.000000
x=0.5
0.877582
sdcdsvasdfvsdvsdafvafdrgbvfdvfdrvdsfvardfarsdfsdarfar