您的位置:

用c语言算圆周率的近似值,用C语言求圆周率

本文目录一览:

C语言编程求出圆周率的近似值。

#include stdio.h

int main()

{

    double pi;

    unsigned long i,n;

    scanf("%lu",n);

    for(pi=1,i=1;i=n;++i)

    {

        pi*=(i+1)/2*2.0 / ( (i+1)/2*2+(i-1)%2*2-1 );

    }

    printf("pi=%.10lf\n",pi*=2);

    return 0;

}

用C语言求π的近似值

循环体里面的公式有点问题,我重新写了一下,代码如下:

void main()

{

double i, pi;

i=1.0,pi=0.0;

while (fabs(1.0/i) = 1e-6){

pi=(pi + pow(-1.0,i+1)/(2*i-1));

i++;

}

printf("pi=%f\n",pi* 4);

system("pause");

}

注意输出的结果是pi*4,望采纳!

c语言 根据公式求出π的近似值。

#includestdio.h

double powi(double num, int multi) {

    double r = 1.0;

    int i;

    for (i = 0; i  multi; i++) {

        r *= num;

    }

    return r;

}

double item(int n) {

    double r = 1.0;

    int i;

    /*  1.0 * 1 / 2 * 3 / 4 * 5 / 6 .....  */

    for (i = 1; i  n; i++) {

        if (i % 2) {

            r *= i;

            /*  printf("*%d", i); */

        } else {

            r /= i;

            /*  printf("/%d", i); */

        }

    }

    r *= 1;

    /*  printf("*%d", 1); */

    r /= n;

    /*  printf("/%d", n); */

    r *= powi(0.5, n);

    /*  printf("*%lf", powi(0.5, n)); */

    /*  printf(" -- item %d: %lf \n", n, r); */

    return r;

}

int main() {

    double pd6 = 0.0, ci = 0.0;

    int i = 1;

    do {

        ci = item(i);

        pd6 += ci;

        i += 2;

    } while (ci = 1e-6);

    printf("PI=%.6lf\n", pd6 * 6);

    return 0;

}

完全按你的公式做的,结果真的对了,3.141592(这里对6位有效数字有个存疑,就是应该输出6位还是7位数字,理论上有效数字后面应该带上一个估值,用来修正有效数字的,如果要求真的那么严格,我可以给你写个函数用来输出6位有效数字)。

一般级数很少有用这个复杂的式子的吧,一般都是 1-1/3+1/5-1/7+1/9-1/11 这个式子,你的公式竟然也是对的。楼上的完全没看懂级数的项的规律。

-------------------------------------------------

以上是20:29分发的回答,既然你没有追问,我只能通过修改这个回答,慢慢解释一下:

powi函数 是为了不引用庞大的math库,而自己写的一个简单的正整数幂的函数(math库里有double pow(double, double),这个运算过程中不需要小数的幂值,就用循环乘法来实现了。

item函数 是每个项的计算过程,仔细看的话可能会发现,这些项并不是 i=1,2,3,4... 而是 i=1,3,5,7... 这个是为了符合级数的项中的值,都是奇数在做运算。

item里面的那些注释掉的 printf 是故意留下用来观察级数表达式的。由于每一项都是多个数值相乘或除,如1/2x3/4x5/6 其实就是1 * 2 / 3 * 4 ,这些printf可以在计算每一项的时候把整个过程打印出来。

级数的难点其实就是找到项的通用表达式,你的公式已经把表达式写的很清楚了,就看你把它提取成算法了

C语言程序设计,计算π的近似值

算法错误。程序思路非常混乱。n++只一次,并没有循环,那么一开始计算x0时n=1,以后每次计算x0的值时n都等于2。而计算公式是要对n进行累加循环的。

#include stdio.h

void main(){

double i,k=1;

for(i=1;k*(i*2*i*2/((i*2-1)*(i*2+1))-1)=1e-6;i++)

k*=i*2*i*2/((i*2-1)*(i*2+1));

printf("PI=%.2lf",k*2);

}

C语言编程有公式 可以计算π的近似值。求前后两次迭代结果π 之差的绝对值小于e时相应的最小迭代次数n

代码如下:

#includestdio.h

int main() {  

  int n = 1;

  double pi = 2.0 * 2 * 2/3; // n=1时pi的初值

  double e; // 精度

  scanf("%lf", e);

  while (1) {

      ++n;

      int m = 2 * n;

      double pn = pi * m / (m - 1) * m / (m + 1);

      if (pn - pi e) {

          pi = pn;

          break;

      }

      pi = pn;

  }

  printf("n=%d, pi=%lf\n", n, pi);

  return 0;

}

运行结果如下:

c语言编程,求π的近似值

#include stdio.h

#include math.h

int main()

{

int x,z;

float y;

y=0;

z=0;

for(x=1;fabs(1.0/x)1e-6;x+=2)

{

z=z+1;

if(z%2!=0)

{

y=y+1.0/x;

}

else

{

y=y-1.0/x;

}

}

y=y*4;

printf("π=%10.6f\n",y);

return 0;

}