用π/4≈1-1/3+1/5-1/7+...公式求π的近似值,知道某一项的绝对值小于10的-6次方为止

时间:2023-01-09 11:13:39
#include<stdio.h>
#include<math.h>
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
s=s+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}



这里输入的四个变量当中t,n,s的意义是什么啊?代表什么东西?还有刚开始给他们赋的值为什么是从t=1,pi=0,n=1,s=1开始的呢啊~从题目上来看怎么就可能用到t,n,s的呢啊?还有程序语句当中,pi=pi+t;n=n+2;s=-s;t=s/n这四个的意思的呢啊~总之想请大家帮忙看看这个程序过程,帮忙好好分析一下算法以及赋值和这个程序语法上的一些特点的呢啊~谢谢大家了啊~

7 个解决方案

#1


t代表 π/4≈1-1/3+1/5-1/7+...中的每一项(一开始等于1,接着 -1/3...
你的程序有问题

#2


程序有问题吧
是个死循环,n值一直不变

#3


我帮你改了下:


#include <stdio.h> 
#include <math.h> 
int main() 

int s; 
float n,t,pi;
t=1.0;pi=0.0;n=1.0;s=1;
while(fabs(t)>1e-6)

    pi=pi+t; //pi是这些t的和
    if(s>0)
        s=s+2; //加2,你可以由数字规律得到,(绝对值)1,3,5,7...
    else
        s = s-2;// s依次是1,-3,5,-7,9...
    s=-s;
    t=n/s; //t是s的倒数

pi=pi*4; 
printf("pi=%10.6f\n",pi);
getch();
return 0;
}

#4



#include <stdio.h> 
#include <math.h> 
void main() 

int s, sign; 
float n,t,pi;
sign = 1;
t=1.0;pi=0.0;n=1.0;s=1;

while(fabs(t) > 1e-6) 
{
pi = pi + sign * t;             // calculate pi
s += 2; // forward s
t = n/s; // calculate t
sign = (sign == 1) ? -1 : 1; // transit signed
}

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

#5


程序太混乱,看这个

int main()
{
    double pi = 0,p = 1; int i;
    for (i = 0; (2*i+1)<1000000; i++, p*=-1)
         pi += p/(2*i+1);
    printf("%f",pi*4);
    return 0;
}

#6



int main()
{
  double Pi = 0.0; 
  double epsilon = 10e-6;
  double flag = 1.0;
  int loopNum =(int)(1.0/epsilon)+1;
  int i = 1;
  while(i<loopNum)
  {
    Pi += flag/(double)i;
    flag = -flag;
    i += 2;
  }
  Pi *= 4.0

  cout << "Pi = " << Pi <<endl;
  return 0;
}

#7


Pi *= 4  这里少了个分号,CSDN的帖子什么时候能编辑啊???

#1


t代表 π/4≈1-1/3+1/5-1/7+...中的每一项(一开始等于1,接着 -1/3...
你的程序有问题

#2


程序有问题吧
是个死循环,n值一直不变

#3


我帮你改了下:


#include <stdio.h> 
#include <math.h> 
int main() 

int s; 
float n,t,pi;
t=1.0;pi=0.0;n=1.0;s=1;
while(fabs(t)>1e-6)

    pi=pi+t; //pi是这些t的和
    if(s>0)
        s=s+2; //加2,你可以由数字规律得到,(绝对值)1,3,5,7...
    else
        s = s-2;// s依次是1,-3,5,-7,9...
    s=-s;
    t=n/s; //t是s的倒数

pi=pi*4; 
printf("pi=%10.6f\n",pi);
getch();
return 0;
}

#4



#include <stdio.h> 
#include <math.h> 
void main() 

int s, sign; 
float n,t,pi;
sign = 1;
t=1.0;pi=0.0;n=1.0;s=1;

while(fabs(t) > 1e-6) 
{
pi = pi + sign * t;             // calculate pi
s += 2; // forward s
t = n/s; // calculate t
sign = (sign == 1) ? -1 : 1; // transit signed
}

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

#5


程序太混乱,看这个

int main()
{
    double pi = 0,p = 1; int i;
    for (i = 0; (2*i+1)<1000000; i++, p*=-1)
         pi += p/(2*i+1);
    printf("%f",pi*4);
    return 0;
}

#6



int main()
{
  double Pi = 0.0; 
  double epsilon = 10e-6;
  double flag = 1.0;
  int loopNum =(int)(1.0/epsilon)+1;
  int i = 1;
  while(i<loopNum)
  {
    Pi += flag/(double)i;
    flag = -flag;
    i += 2;
  }
  Pi *= 4.0

  cout << "Pi = " << Pi <<endl;
  return 0;
}

#7


Pi *= 4  这里少了个分号,CSDN的帖子什么时候能编辑啊???