C语言 练习题(基础)

来源:百度知道 编辑:UC知道 时间:2024/06/25 18:08:46
计算1/1-1/2+1/3-1/4+......,精度为0.00001为止。

本人对“精度”感到困惑,希望精度语言给予注释,谢谢。

也就是要求取得的最后一个1/n的值大于等于0.00001,也就是要求1/n的值不能小于0.00001

其实我昨天看到有一个人写得挺好了,我帮你注释一下:
#include<conio.h>
#include<stdio.h>
#include<math.h>

void main()
{
float sum=0;//用以记录结果
int i;

for(i=1;fabs(1.0/i-1e-5)>1e-6;i++) //这个解释起来较长,在后面说
if(i%2==0) {sum-=1.0/i;} //如果i为偶数,则减去1/i
else {sum+=1.0/i;} //如果i为奇数,则加上1/i

printf("%f",sum);

getch();
}

这里请注意:
for(i=1;fabs(1.0/i-1e-5)>1e-6;i++)
这一句非常经典,
对于float型,由于计算机本身的二进制的缺陷,所以float型存在不精确的情况,
所以对于判断a,b两个浮点型是否相等,不是用a==b的方式,
而是判断fabs(1.0/i-1e-5)是否小于等于1e-6,
也就是判断两个数的差是否比0.000001要小,
如果小于等于,则认为两个数相等,
所以这里用这个判断,来控制最后一个1/n的值大于等于0.00001

用float精度, 然后输出的是%6f

上面写的比较经典,以后记住了

恩,写的不错!