/* 计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。 输入格式: 输入在一行中给出一个正实数eps。 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。 */ #include<stdio.h> #include<math.h> int main(void) { double eps; double flag, denominator, item, sum; scanf_s("%lf", &eps); flag = 1; denominator = 1; /* item的初值比eps大 可以保证进入循环程序 可以满足eps比1大的情况下,sum能加到第一项 */ item = eps + 1; sum = 0; while (fabs(item) > eps) { /*不满足while判断表达式后的第一项,此时的item为下一项*/ item = flag / denominator; sum = sum + item; flag = -flag; denominator = denominator + 3; } printf("sum = %.6f ", sum); return 0; }