对循环无法跳出的问题


#include
int main ()
{
    int n=1;
    double s1,s2=0,s3,x,x1,x2;
    x= n;
    x1=2*x+1;
    x2=4*x*x;
    s1=s3=x1/x2;
    do
    {
    s2+=s1;
    x++;
    s1=-s1;
    }while(s3>0.001);
    printf("%.6f",s2);
    return 0;
}

运行后一直没有任何显示

img


我怀疑是循环没有跳出,但找不出来
原题

img

循环中s3的值没有变,死循环了

int main()
{
    int n = 1;
    double s1, s2 = 0, s3, x = 1, x1, x2;
    do
    {
        x1 = 2 * x + 1;
        x2 = 4 * x * x;
        s1 = x1 / x2;
        s2 += n * s1;
        x++;
        n = -n;
    } while (s1 >= 1e-3);
    printf("%.6f", s2);
    return 0;
}

这里边s3没有赋值呀,死循环了,一直在运行

img

在do_while循环里面,s3的值没有边,一直都是在进入循环之前的值,所以死循环了