不懂哪里有问题,也可能是我不理解……

img


以下是我写的
#include"stdio.h"
#include"math.h"
int main(void)
{
    double a = 1.0, s = 0.0;

    int deno = 1, sign = 1;
    while(fabs(a) >= 1e-6)
    
    {
        a = sign / (double)deno;
        s += a;
        deno += 3;
        sign = -sign;
    }
    printf("s=%.6f",s);
    return 0;
}

1.不要判断a,直接判断deno>=1000000
2.既然deno最大会是100万,int型存不下了啊,溢出了

主要是你少算了一项导致的。这种要求最后一项不大于多少的题目,最好是有do...while,先加。然后判断被加项是否大于1e-6。当最后加入的一项不满足条件就结束了

#include"stdio.h"
#include"math.h"
int main(void)
{
    double a = 1.0, s = 0.0;
    int deno = 1, sign = 1;
    do
    {
        a = sign / (double)deno;
        s += a;
        deno += 3;
        sign = -sign;
    }while(fabs(a) >= 1e-6);
    printf("s=%.6f",s);
    return 0;
}