计算数列 1-1/3!+1/5!-1/7!+1/9!-…的和至某项的绝对值小于 1e-5 时为止(该项不累加)。(注意精度控制)
三种方法,答案都不一样。第一种是给的答案(答案总错所以有点不敢信)0.6几,第二种是自己写的-0.72几,第三种是网上搜索加自己改编0.78几。
求问哪里错了?正确的怎样的?C语言。
1、#include<stdio.h>
#include<math.h>
void main()
{
float s=1,t=1,i=3;
while(fabs(1/t)>=1e-5)
{
t=-t*(i-1);
s=s+1/t;
i+=2;
}
printf("%.6f",s);
}
2、#include <stdio.h>
#include <math.h>
void main()
{
float sum=0,i=1;
int n;
for (n=1;fabs(1/i)>=1e-5;n=n+2)
{
i=-i*n;
sum=sum+1/i;
}
printf("%.6f",sum);
}
3、#include <stdio.h>
#include <math.h>
int main( )
{
int temp, flag;
double item, sum;
sum=0.0;
flag=1;
temp=1;
item=1;
while(item>=1e-5)
{
sum=sum+flag*item;
flag=-flag;
temp=temp+2;
item=1.0/temp;
}
printf("%.6f\n", sum);
}
/*
0.841468
Press any key to continue
*/
#include <stdio.h>