首页 > 用户发贴区 > 编程问题提问区 > 菜鸟请教,关于求圆周率的近似值~~
2008
07-31

菜鸟请教,关于求圆周率的近似值~~

利用公式  圆周率=1-1/3+1/5-1/7+….来求圆周率的近似值,直到最后一项的绝对值小于0.00001为止。我自己编的程序如下:


#include”stdio.h”
#include”math.h”
void main()
{int i=j=1;


float x,y=0;
while(fabs(x)<pow(10,-5))
 {x=4*(pow(-1,j+1)*(1/i));
  y+=x;
  j++;
  i+=2;
 }
prnitf(“%f”,y);
}


不知道错在哪里呢,如何改正?请教各位高手~~~先谢了~~~


菜鸟请教,关于求圆周率的近似值~~》有 7 条评论

  1. whos 说:

    原程序改过之后如下:

    #include “stdio.h”
    #include “math.h”
    void main()
    {float x=1.0,y=0;
     int i=1,flag=1;
     clrscr();
    while(fabs(x)>pow(10,-5))
     {
      x=flag*(1.0/i);
      y+=x;
      flag=flag*(-1);
      i+=2;
     }
    printf(“%f”,4*y);
    }

    但是改过之后我运行了十几分钟也没有结果,后来把pow(10,-5)改为pow(10,-4)得出了结果为3.141797。

    估计是要求的精度太高了吧。

    要得到你那个精度的数据你就自己开着机器慢慢算吧,总会算出来的。

    呵呵

  2. iloveyouf1987 说:

    还有几个问题不明白~~~~~

    1. 我在定义的时候换成 int i,j;i=1;j=1; 系统提示错误,这是为什么?

    2  clrscr();这是用来做什么的?

    呵呵~~~

                                    

  3. whos 说:

    回答:

    1.程序语句不错,没有系统提示的错误信息我无法知道是哪里出了问题。但是我给的那个程序是正确的。

    2.清屏函数。

  4. iloveyouf1987 说:

    whos

    int i,j;i=1;j=1;
    float x,y;x=1.0;y=0;

    后系统提示有三个错误:

    表达式语法错误,未定义的x,y…..

    这是为什么?

  5. whos 说:

    C语言规定,变量的定义一律要放在其他执行语句的前面。你定义了i,j后给i,j赋值,然后又定义了x,y。这时变量x,y的定义就在赋值语句之后了,所以系统提示出错。

    解决办法:

    1.集中定义变量:

    int i,j;float x,y;

    i=1;j=1;x=1.0;y=0;

    2.定义变量时就赋值:

    int i=1,j=1;

    float x=1.0,y=0;

  6. iloveyouf1987 说:

    哦,明白了~~~

    都是很基础的东西,看书时没留意到~~~

    谢了~~~以后可能还有问题要麻烦你啊,呵呵

  7. whos 说:

    呵呵,没关系。

留下一个回复