观察算式,发现分子都是1,分母从1~100,所以可以使用for循环产生1~100之间的数。
另一个问题是,如何产生正负交替的符号?很简单,这个符号本质上就是往每一项前面乘一个系数:一或者负一。所以只需要产生一个系数,并且不断取负即可。
一些细节:
(1)算出来的和是一个小数,应该用double类型(float也行)。
(2)不能把数列的每一项写成1/i,因为1和i都是整数,会执行整数除法,得到的结果也是一个整数,但是我们要的结果是小数呀。所以要把/某一端的数改成小数,比如写成1.0/i
完整代码如下:
# include <stdio.h>// 计算1/1-1/2+1/3-1/4+...+1/99-1/100
int main()
{int i = 0; // 循环变量double sum = 0.0; // 存储和int flag = 1; // 产生正负交替// 计算for (i = 1; i <= 100; i++) // 产生1~100{sum = sum + flag * (1.0 / i);flag = -flag;}// 输出printf("%lf\n", sum); // double类型用%lf的格式来打印return 0;
}