c语言while循环语句

编程:s=1/1-1/(1+2)+1/(1+2+3)-1/(1+2+3+4)……+1/(1+2+……+n),循环直到某一项的值小于1.0e-6。
这个程序应该怎么写,求高人指点,谢谢!!!

这道题,其实就是观察规律。
每一项有两点:符号和分数。
符号:

项数符号
第 1 项+
第 2 项-
第 3 项+
第 4 项-
第 5 项+
…………

所以符号是正(+)、负(-)交替。只需要设置一个变量 sign,初始值为 -1,然后每次加法求和之前,都乘以 -1,那么第 1 项就是 +1,第 2 项就是 -1,如此。

每一项是一个分数,分子永远为 1,那么就看分母了。
观察分母:

项数分母
第 1 项1
第 2 项1+ 2
第 3 项1 + 2 + 3
第 4 项1+ 2 + 3 + 4
…………

分母是 1+2+...+当前项的编号,也就是说分母为 (1+2+...+i)求和,如果是第 i 项的话。

停止条件为这个分数小于 1.0e-6 就行。

#include <iostream>
using namespace std;

int main() {
    
    // 符号
    int sign = -1;
    // 退出循环标准
    float epsilon = 1.0e-6;
    // 所有项的和
    float sum = 0.0;
    // 循环次数
    int i = 1;
    // 当前项
    float current = 1.0;
    
    // 如果当前项小于设置的 epsilon,则跳出循环
    while(current > epsilon)
    {
        // 每次加之前,需要确定符号,第一项为 “+”,第二项为 “-”,循环往复
        sign *= -1;
        // 累加和
        sum += sign * current;
        // 下一项
        ++i;
        current = 1.0 / ((1 + i) * i / 2);
    }
    cout  << current << endl;
    cout  << sum << endl;
    return 0;
}

找规律 - + - + - +
求和,当和小于时跳出循环

写一个方法,专门求分母,然后写一个变量为-1,作为前面的符号,每一次算完以后就乘上-1,比如flag*=-1,这样就能实现每次都能变换符号