C语言 编程计算1-1/2+1/3-1/4+……±1/n直到最后一项绝对值小于10^-4为什么我输出的是sum=0.000000?

#include<stdio.h>
#include<math.h>
int main()
{
double n=1;
float term=1.0,sign=1,sum=0;
while(fabs(n)<10e-4)
{
term=sign*1/n;
sum=sum+term;
sign=-sign;
n++;
}
printf("sum=%f\n",sum);
return 0;
}

1、输出0的原因:因为n的初值=1,循环后,n的值就会取2、3、4、5、6、……,fabs(n)总会≥1,故fabs(n)<10e-4永远不成立。
2、
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-10

循环判断条件应该是

while (fabs(1/n) >= 1e-4)

本回答被提问者采纳
第2个回答  2019-11-10
double n=1;
while(fabs(n)<10e-4)
while不会执行的
所以sum还是0
相似回答