黄jz 发表于 2021-8-30 15:08:44

我这程序不知道为什么执行了好久

#include <stdio.h>
#include <math.h>
int main()
{
        double count;
        double fenzi=1,fenmu=1,sum=0;
        while(1)
        {
                count=fenzi/fenmu;
                printf("%.8lf",count);
                if(fabs(count)<0.00000001)
                break;
           sum=sum+count;
           if(fenmu>0){
           fenmu+=2;
           fenmu=-fenmu;
               }
           else{
           fenmu-=2;
           fenmu=-fenmu;
   }
        }
        sum=sum*4;
        printf("%.7lf",sum);
}

jhq999 发表于 2021-8-30 15:35:20

本帖最后由 jhq999 于 2021-8-30 15:39 编辑

count=fenzi/fenmu;循环体得运行50,000,000次才能让fabs(count)<0.00000001
(1   ÷   0.00000001 =100,000,000)每次+2就除以2等于50,000,000

此方星河 发表于 2021-8-30 15:38:38

// 这个程序到我这里不是运行好久,是在控制台一直显示数字。
// 这是因为while循环,没有办法退出。
#include <stdio.h>
#include <math.h>
int main()
{
    double count;
    double fenzi=1,fenmu=1,sum=0;
    while(1)
    {
      count=fenzi/fenmu;
      printf("%.8lf",count);
      
      // 这个语句一直判断为否,无法break,无法退出语句。
      if(fabs(count)<0.00000001)
      break;

      sum=sum+count;
      if(fenmu>0){
            fenmu+=2;
            fenmu=-fenmu;
         }
      else{
      fenmu-=2;
      fenmu=-fenmu;
      }
    }
    sum=sum*4;
    printf("%.7lf",sum);
}

jhq999 发表于 2021-8-30 15:49:30

本帖最后由 jhq999 于 2021-8-30 15:52 编辑

控制台输出太占资源.你把//printf("%.8lf",count);这个去掉试试,不就是求派吗?
#include <math.h>
int main()
{
      double count;
      double fenzi=1,fenmu=1,sum=0;
      while(1)
      {
                count=fenzi/fenmu;
                //printf("%.8lf",count);//你把这个去掉试试
                if(fabs(count)<0.00000001)
                break;
             sum=sum+count;
             if(fenmu>0){
             fenmu+=2;
             fenmu=-fenmu;
               }
             else{
             fenmu-=2;
             fenmu=-fenmu;
   }
      }
      sum=sum*4;
      printf("%.7lf",sum);
}
页: [1]
查看完整版本: 我这程序不知道为什么执行了好久