问题描述:
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
问题分析:
经过观察,我们发现分数的分子一直为1,而分母是在1~100之间逐渐增大的,所以如果是简单的把这些数都加起来,我们直接for循环就行,但是现在还要考虑负号的存在,还有就是由于计算的结果是分数,所以我们不能再将结果写成int型了,而是要采用float型。
问题解决:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 1;
float num = 0.0;
int i = 1;
for (a = 1; a <= 100; a++)
{
num += 1.0 / a * i; //要计算总和就要用到+=,同时a每次循环就+1
i = -i; //由于+和-是交替出现的,所以我们想到了可以在每次循环结束时改变分子的符号,这样就相当于改变了分数的正负,而负负得正又可以保证正数变为负数之后又能在下一次循环时变成正数
}
printf("和为:%lf", num);
return 0;
}
~over~