是for括号里的内容有问题吗?输入的pi都是0.0000,怎么表示直到最后一项的绝对值小于给定精度eps?

img

img


#include
#include
int main()
{
int i=1;
double p=0,e;
scanf("%lf",&e);
for(i=1;i<0.5e+0.5;i++)
{
p=p+(1/(2
i-1))pow(-1,i+1);
}
printf("Pi = %.4lf",4
p);
return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    int i = 1;
    double p = 0, e, t=1.0;
    scanf("%lf", &e);
    for (i = 1; fabs(t) >= e; i++)
    {
        t = pow(-1, i + 1) / (2 * i - 1);
        p += t;
    }
    printf("Pi = %.4lf", 4.0 * p);
    return 0;
}

(1/(2*i-1))是整除,结果是0啊。改为1.0/( 2 * i - 1)