C语言循环结构绝对值小于pow(10,-5)


#include <stdio.h>
#include<math.h>
int main(void)
{
 int i=1,flag=-1;
 float sum=0,xiang,b=pow(10,-5);
     do
     {
      flag*=-1;
      xiang=1/flag*i;
      sum+=xiang;
      i++;
     }while(abs(xiang)<=b);
     printf("结果是%f\n",sum);
    return 0;
}


得到的结果是1.000000
求1-1/2+1/3+ ……+(-1)^(n+1)/n,绝对值小于10^(-5)的项不计算

代码中有几个问题:

  • 第11行需要改为 xiang= 1.0 / i * flag;
  • 第14行浮点数的绝对值函数是fabs,还有while条件是>,当<时就退出不计算了
#include <stdio.h>
#include<math.h>
int main(void)
{
 int i=1,flag=-1;
 float sum=0,xiang,b=pow(10,-5);
     do
     {
      flag*=-1;
      xiang=1.0/i * flag;
      sum+=xiang;
      i++;
     }while(fabs(xiang)>b);
     printf("结果是%f\n",sum);
    return 0;
}