计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
#include <stdio.h>
int main() {
int i;
double sum = 0;
for (i = 1; i < 101; i++) {
if (i % 2 == 0){
sum = sum - 1.0 / i;
}
else {
sum = sum + 1.0 / i;
}
}
printf("sum=%lf", sum);
system("pause");
}
编程思路:
首先定义整形变量i,用for循环实现i的变换;再定义双精度浮点数求和;
其次是用if语句判断i是奇数还是偶数,若为奇数则为加1.0/i,否则为减掉1.0/i;最外层用for更新循环体实现i的自增。
最后打印求和后的结果。
因为我们自增数i是正负相间的,因此,我们可以采用两种方法进行简单的值变换;
第一种:用三目运算符,让i%2是否为0来决定i的正负;
第二种:在大的for循环下,i的自增变量是每次加一,而i恰好正负相间,所以我们就可以在i的for循环里面每次进行flag的赋值运算即可。
我的代码如下:(注释掉的部分是可以去取代flag的赋值变化,取而代之的是三目运算符)
#include <stdio.h>
int main() {
int i;
double sum = 0, tmp, flag = 1;
for (i = 1; i < 101; i++) {
//tmp = 1.0 / i*flag*(i % 2 ? 1 : -1);
tmp = 1.0 / i*flag;
sum = sum + tmp;
flag = flag * -1;
}
printf("%lf\n", sum);
system("pause");
return 0;
}
本程序的for训话是一个基本的迭代算法,tmp负责单值变换,sum负责统计