问题:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
解决问题:
思路一:将正负部分分开,使用两个循环分别计算结果,再进行叠加,得出最终结果.
注意:double的格式化输出是%lf, 而且sum += 1.0 / i 语句,一定要写1.0,否则会强制转换为整型变量.
#include <stdio.h>
#include <stdlib.h>
int sum() {
int i, j;
double sum = 0;
//计算所有和的部分
for (i = 1; i <= 99; i += 2) {
//一定要写1.0,否则会强制转换为整型变量
sum += 1.0 / i ;
}
//计算所有差的部分
for (j = 2; j <= 100; j += 2) {
sum -= 1.0/ j;
}
printf("1/1-1/2+1/3 …… + 1/99 - 1/100 = %lf", sum);
return 0;
}
int main() {
sum();
system("pause");
}
思路2: 只用一个for循环,但是正负部分使用tag控制.使用迭代法将结果求出.
#include <stdio.h>
#include <stdlib.h>
int main() {
double tmp = 1;
double sum = 0;
int tag = 1;
for (int i = 1; i <= 100; i++) {
tmp = tag * 1.0 / i;
sum += tmp;
tag *= -1;
}
printf("ֵ1/1-1/2+1/3 …… + 1/99 - 1/100 = %lf", sum);
system("pause");
return 0;
}