请教C语言问题,大神速来 高分 π/4≈1-1/3+1/5-1/7+...公式求π的近似值,直到某一项的绝对值小于1e-6

#include<stdio.h>#include<math.h>intmain(){doublePI,a;inti;for(i=1,PI=0.0;fabs(a=1.0/... #include <stdio.h>#include <math.h>
int main ()
{
double PI,a;
int i;
for(i=1,PI=0.0;fabs(a=1.0/i)>=1e-6;i+=2,i*=-1)
PI+=a;
PI*=4;
printf("PI=%f\n",PI);

return 0;
}
这样做为什么不行,高手请请教,多谢。
回答的速度给分
展开
百度网友a57f22783
2012-11-05 · TA获得超过1655个赞
知道大有可为答主
回答量:581
采纳率:100%
帮助的人:403万
展开全部
i=1,PI=0.0;fabs(a=1.0/i)>=1e-6;i+=2,i*=-1
这个语句是有问题的,你得到的并不是 1-1/3+1/5-1/7+... 这个序列,建议你自己写开看看。
另外,可以参考我给你改的程序:

#include <stdio.h>
#include <math.h>
int main ()
{
double PI,a;
int i,j;
for(i=1,j=1,PI=0.0;fabs(a=1.0/i*j)>=1E-6;i=fabs(i)+2,j*=-1)
PI+=a;
PI*=4;
printf("PI=%f\n",PI);

return 0;
}

得到了正确的结果,望采纳!
uiazhaochao
2012-11-05 · TA获得超过618个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:81.2万
展开全部

#include <stdio.h>

double myabs(double n)

{

 if (n>0)

 {

  return n;

 }

 else

 {

  return -n;

 }

 

}

void main()

{

 double PI=0;

 double i=1;

 double n=1/i;

 int    flag=1;

 while(myabs(n)>1e-6)

 {

  PI=PI+n*flag;

  flag=-flag;

  i=i+2;

  n=1/i;

 }

 printf("%f",PI*4);

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是私房话哟啊回
2012-11-05 · TA获得超过7900个赞
知道小有建树答主
回答量:942
采纳率:66%
帮助的人:85万
展开全部
因为算错了
追问
什么意思
哪错了
追答
==
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式