计算π的近似值.公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小于10-6为止.

#include <stdio.h>
main()
{
double a,b,sum=1;
for(a=3;;a+=2)
{fabs(a)<1e-6;
b=-b;
sum=sum+b/a;
printf("%lf",4*sum);}
}错误在哪。结果全是乱码

第1个回答  2013-04-20
QNAN 不是乱码,是程序写错了,已经有人写了基本正确的程序,不重复了。
QNAN产生的原因:没有初值,计算0/0,负数开平方等明显错误时。
其实,这种算法算到天荒地老也很难算出π。追问

为什么我的程序只是把判断绝对值的放在下面就出现这种情况呢

追答

错误很多,不只是一两个,仔细观察人家的程序吧。
printf的位置,b的初始值

double a,b,sum=1; -> double a,b=1,sum=1;

printf("%lf",4*sum);} -> }printf("%lf",4*sum);

本回答被提问者和网友采纳
第2个回答  2013-04-20
你可以用以下程序看一下,我刚运行过,发现可以。
#include <stdio.h>
#include <math.h>
void main()
{float sum=1.0,i,t=1,n=1;
for(i=3;;i=i+2)
{
t=pow(-1,n)*1/i;
sum=sum+t;
n++;
if(fabs(t)<1e-6) break;
}

printf("sum=%f\n",4*sum);}
第3个回答  2013-04-20
因为你的b根本没有任何值,没有给定任何初始值啊,所以会是乱码追问

还是这样

第4个回答  2013-04-20
#include <stdio.h>
#include<math.h>
main()
{
double a,b = 1,sum=1;
for(a=3;(fabs(b/a)>1e-6);a+=2)
{
b=-b;
sum=sum+b/a;
}
printf("%lf",4*sum);
}

追问

这些错误改过后还是一堆乱码

追答

能执行处正确结果啊

追问

我的用绝对值的放在下面就出现这种结果,你能帮我解释一下吗

追答

那个是判断条件,可以用一个if(fabs(a)<1e-6){sum=sum+b/a;}
你那个不是乱码,是因为你的fabs(a)<1e-6根本没起作用,你试试把那一行代码去掉,得到的结果还是你所说的“乱码”

追问

那放在那里起作用啊,只有放在for里面才行?

追答#include <stdio.h>
#include<math.h>
main()
{
double a,b = 1,sum=1;
for(a=3;;a+=2)
{
b=-b;
if(fabs(b/a)>1e-6))
sum=sum+b/a;
else
break;
}
printf("%lf",4*sum);
}

放在循环体里面也行的

计算π的近似值.公式如下:π\/4=1-1\/3+1\/5-1\/7+……,直到最后一项的绝对...
QNAN产生的原因:没有初值,计算0\/0,负数开平方等明显错误时。其实,这种算法算到天荒地老也很难算出π。

.用公式求:π\/4=1-1\/3+1\/5+1\/7+……直到最后一项的绝对值小于等于10...
PI=S*4 PRINT PI END

...π的近似值,公式如下:π\/4≈1-1\/3+1\/5-1\/7+···到最后一项的绝对值...
什么意思?没明白?编程?

C语言解答:利用公式:π\/4=1-1\/3+1\/5-1\/7+……,求π的近似值,直到最后一 ...
pi=s*4);}

如何用公式π\/4≈1-1\/3+1\/5-1\/7+…
如何用公式π\/4≈1-1\/3+1\/5-1\/7+…求圆周率π的近似值,直到最后一项绝对值小于10^-6。用matlab的for循环语句可以实现。1、首先将1-1\/3+1\/5-1\/7+…,用求和符号来简化,即Σ(-1)^(n-1)*1\/(2*n-1)2、令s=0,这样便于累加,即s=s+(-1)^(n-1)*1\/(2*n-1)3、当s(...

求π的近似值 π\/4=1-1\/3+1\/5-1\/7……直到某一项的绝对值小于10^-6...
if(n%2==1) a=a+1\/(2*n-1);else a=a-1\/(2*n-1);是不是这错了?你这样的语句就是全加吧,没有减。

计算π,计算公式是π\/4 = 1-1\/3+1\/5-1\/7……,直到最后一项的绝对值小...
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;n=n+2;s=-s;t=s\/n;} pi=pi*4;printf("pi=%10.6f\\n",pi);getch();}

求π近似值:π\/4=1-1\/3+1\/5-1\/7+1\/9(直到 最后一项的绝对值小于10-5为 ...
第一个空见图片,后面是s=s+t;f=-f;i=i+2;s=4*s;如果不懂请继续追问,满意请点个采纳。

用matlab求π的近似值 π\/4=1-1\/3+1\/5-1\/7……直到某一项的绝对值小于10...
如下:y=0;for n=1:1000000 xx=(-1)^(n-1)\/(2*n-1);if abs(xx)>10^(-6)y=y+xx;else break end end fprintf('π的近似值为%.6f ,共需迭代%d步\\n',y*4,n)。介绍 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、...

...值, 利用公式∶ π \/4=1-1\/3+1\/5-1\/7+……,直到
include <iostream> include <cmath> using namespace std;void main(){ double pi=0,t;int i=1,f=1;while((t=fabs(1.0\/i))>=1.0e-6){ pi+=f*t;i+=2;f=-f;} cout <<"PI=" <<pi*4 <<endl;}

相似回答