本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
#include<stdio.h>
int main(void){
int d=1; /*分母*/
double eps,sum=0,flag=1.0;
scanf("%lf",&eps);
do{
sum = sum+flag/d;
d+=3; /*每次循环自增3*/
flag=-flag; /*每次循环改变正负号*/
}while(1.0/d>=eps); /*1.0/d 就是绝对值没有负号的存在*/
printf("sum = %.6lf",sum);
return 0;
}
心得:
这题原本while语句条件要采用fabs()函数的,结果发现过不了程序,会写运行超时,但这样写更简洁也可以达到目的。