观察算式,发现分子都是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;
}