运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
double jc(int n)
{
double s = 1;
int i = 1;
for (i = 1; i <= n; i++)
s *= i;
return s;
}
int main()
{
double x, sx =0;
int flag = 1;
int i = 1;
double fz, fm = 1, v;
scanf("%lf", &x);
fz = x;
v = fz / fm;
while (fabs(v) >= 1e-5)
{
sx += flag * v;
i += 2;
fz = pow(x, i);
fm = jc(i);
flag = -flag;
v = fz / fm;
}
printf("%lf", sx);
return 0;
}
最后一项小于10的-5次方,用do...while比较合适,代码稍后
#include <stdio.h>
int main()
{
double sin = 0,fz=0,fm=0;
double item = 0,x;
int i=1;
scanf("%lf",&x);
fz = x;
fm = i;
int flag = 1;
do
{
item = fz/fm;
sin += item * flag;
flag = -flag;
fz *= x*x;
fm *= (i+1)*(i+2);
i+=2;
}while(item >= 1e-5);
printf("%lf",sin);
return 0;
}