分析:
将式子拆分成两部分:正数相加部分、负数相加部分。利用for循环分别求得第一部分和第二部分之和,再将两个和相减。
#include <stdio.h>
#include <stdlib.h>
double add(double a, double b){
double sum = a + b;
return sum;
}
int main(){
int i,j;
double sum1 = 1, sum2 = 0;
//第一部分之和
for (i=1; i < 50; i ++){
sum1=add(sum1, 1.0/(2 * i + 1));
}
//第二部分之和
for (j=1; j < 50; j++){
sum2 = add(sum2, 1.0/(2 * j ));
}
printf("%lf\n", sum1 - sum2);
system("pause");
return 0;
}
运行结果:
优化:
#include <stdio.h>
#include <stdlib.h>
int main(){
int i,t=1;
double sum= 0;
for (i = 1; i < 101; i++){
sum +=(1.0/(t*i));
t=-t;
}
printf("%lf\n", sum);
system("pause");
return 0;
}