分类：电脑/网络-软件
问题：C程序，输出前n项和直到余项小于10^
我哪里写得不对？为什么x输入负数的时候结果都是0.000000？#include "std.h"#include "math.h"void main(){  double sum,r,n;  float x;    printf("input x(|x|<1):");  scanf("%f",&x);  n=1;  r=x;  sum=0;  while(r>1e-8)  {    sum=sum+r;    r= pow(x,2*n+1)/(2*n+1);    n=我哪里写得不对？为什么x输入负数的时候结果都是0.000000？#include "std.h"#include "math.h"void main(){  double sum,r,n;  float x;    printf("input x(|x|<1):");  scanf("%f",&x);  n=1;  r=x;  sum=0;  while(r>1e-8)  {    sum=sum+r;    r= pow(x,2*n+1)/(2*n+1);    n=n+1;  }  printf("sum=%lf\n",sum);}      
回答：“直到余项小于10^(-8)”其实应该是“直到余项的绝对值小于10^(-8)”。
只需要把while(r>1e-8)改成while(fabs(r)>=1e-8)即可获得正确结果。