计算这个算式的值,一般方法就是将所有分母为奇数的分数加起来,再将所有分母为偶数的分数加起来,最后用分母为奇数的分数和减去分母为偶数的分数和,即为最后的答案。具体实现代码如下
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
int main()
{
double i=0;
double j = 0;
double max1 = 0, max2 = 0, max = 0;
{
double i=0;
double j = 0;
double max1 = 0, max2 = 0, max = 0;
for (i = 1; i <= 99; i += 2) //分母为奇数的循环
{
max1 = max1 + (1 / i); //分母为奇数的各个数相加
}
{
max1 = max1 + (1 / i); //分母为奇数的各个数相加
}
for (j = 2; j <= 100; j += 2) //分母为偶数的循环
{
max2 = max2 + (1 / j); //分母为偶数的各个数相加
}
{
max2 = max2 + (1 / j); //分母为偶数的各个数相加
}
max = max1 - max2; //分母为奇数各个数之和减去分母为偶数的各个数之和
printf("1/1-1/2+1/3-1/4+1/5...+1/99-1/100的值为:%lf\n", max);
printf("1/1-1/2+1/3-1/4+1/5...+1/99-1/100的值为:%lf\n", max);
system("pause");
return 0;
}
return 0;
}
下面是对上面的方法进行了优化,只用了一次循环。即使用一个标记flag,每循环一次,都将flag的值置为相反数,这样就实现了交错相加减的目的。具体实现代码如下
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
int main()
{
int i = 0;
int flag = 1; //作为标记
double sum = 0.0;
for (i = 1; i <= 100; i++)
{
sum = sum + flag*1.0 / i; //除法运算符只要有一边是小数,则为小数运算。注意这里不能用整数1来除
flag = -flag;
}
printf("%lf", sum);
system("pause");
return 0;
}
{
int i = 0;
int flag = 1; //作为标记
double sum = 0.0;
for (i = 1; i <= 100; i++)
{
sum = sum + flag*1.0 / i; //除法运算符只要有一边是小数,则为小数运算。注意这里不能用整数1来除
flag = -flag;
}
printf("%lf", sum);
system("pause");
return 0;
}