关于 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99

来源:互联网 发布:mac进度条卡一半黑屏 编辑:程序博客网 时间:2024/06/06 02:24

按照我最开始的思路就是执行下面的代码

#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之间的变换

节省了许多无效的代码。

原创粉丝点击