第一种解法:
看到这个计算我们首先会想到关于数学的相加的运算。
于是我们可以设置一个参数为flag,让它每进行一次运算的时候就变成 -flag
那既然我们说到了“每次“,我们就可以采用循环来解决这个问题。
通过观察我们发现,这串运算中分子是固定的“1”,只有分母在发生变化,那我们就从设定一个变量为n开始来一起写代码吧!
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 0; return 0; }
写到这里之后我们就想,是分母1-100的计算,每个都要计算的话,我们可以写一个循环来进行每一次的运算,最后再将他们加起来,那么我们再定义一个参数为sum,表示每次运算后相加所得的数。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
int sum = 0;
for (n = 1; n <= 100; n++)
sum = 1 / n + sum;
return 0;
}
这样就有了一个比较清晰的思路,再结合前面我们说的利用参数flag,在每次计算循环结束后都变为相反数,这样就可以解决我们的问题啦(flag初始化要为1)r
fine _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
double sum = 0.0;
int flag = 1;
for (n = 1; n <= 100; n++)
{
sum = flag*(1.0 / n) +sum;
flag = -flag;
}
printf("sun=%lf", sum);
return 0;
}
因为是分数运算,所以我们将sum设为double浮点型。sum=0.0;
所以在计算的时候我们将1/n写为1.0/n。
第二种解法:
我们发现这个运算是有规律的,当分母为奇数的时候进行的是相加的运算,而分母为偶数的时候进行的是相减的运算。
那我们可以抓住这一点来编写另外的解决方式:
define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
double sum = 0;
for (n = 1; n <= 100; n ++)
if (n % 2 != 0)
{
sum = 1.0 / n + sum;
}
else
{
sum = -1.0 / n + sum;
}
printf("sum=%lf", sum);
return 0;
}
从代码中我们可以看出我们先用if(n%2!=0)来判断出这个n为奇数还是偶数,然后再进行运算,最后将运算的结果加起来。
两种方法的运算结果都是一致的。
当然我们也还有其他方法啦,比如将奇数偶数分开算,设置sum1和sum2,最后将他们加起来也是没问题的。
如果能帮助到你解决问题,点个赞再走吧~