#include
#include
const double eps = 1e-6;
double fact(int i)//求参数i的阶乘阶乘的函数
{
double n=1;
while(i>1)
{
n *= i;
i--;
}
return n;
}
int main(void)
{
double sum=0, S, Sn;
int i, j, m;
for (j=0; j<4; j++,sum=0)//4个测试点
{
scanf("%lf", &S);
for (i=1; ;i++)
{
if (i%2 == 0)
Sn = -1 * pow(S, 2*i-1) / fact(2*i-1);//pow函数是求S的2*i-1次方
else
Sn = pow(S, 2*i-1) / fact(2*i-1);
if (fabs(Sn) < eps)//如果该项的绝对值小于精度,那么就要退出循环了,
{
m = i-1;//m要记录的是最后一个大于精度的数的项数,所以是i-1
break;//退出当前的循环
}
else
sum += Sn;
}
printf("%d,%.6lf\n", m, sum);
}
return 0;
}
就是F%前面加上你要精确到的位数就好了