您的位置:首页 > 其它

关于 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值的体会

2017-11-03 19:07 323 查看
按照我最开始的思路就是执行下面的代码

#include<stdio.h>

#include<Windows.h>

int main()

{
int i=0;
double sum1=0;
double sum2=0;
double sum=0;
for(i=1;i<101;i++)
{
if(i%2==0)
{
sum1=sum1+1/i;
}
else
{
sum2=sum2+1/i;
}
}
sum=sum2-sum1;
printf("%lf\n",sum);

system("pause");
return 0;

}

就这样的程序我调了一个多小时,愣是没看出来。

然后发现i是整形,1/i也是整形,而sum1是浮点型,这样赋值就出现了问题

然后把1改成 1.0;

就这样程序改好了。

真是细节觉得成败。

其实这个程序还可以在简化一下

int main()

{
int i=0;
int flag=1;
double sum=0.0;
for(i=1;i<101;i++)
{
sum=sum+flag*(1.0/i);
flag = -flag;
}

printf("%lf\n",sum);
system("pause");
return 0;

}

直接用flag=-flag替代1和-1之间的变换

节省了许多无效的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: