利用pi/4 = 1 - 1/3 + 1/5 - 1/7 + ... ,编程计算pi的近似值,直到最后一项的绝对值小于10-4为止,输出pi的

利用pi/4=1-1/3+1/5-1/7+...,编程计算pi的近似值,直到最后一项的绝对值小于10-4为止,输出pi的值并统计累加的项数。友情提示:pi定义成doubl... 利用pi/4 = 1 - 1/3 + 1/5 - 1/7 + ... ,编程计算pi的近似值,直到最后一项的绝对值小于10-4为止,输出pi的值并统计累加的项数。
友情提示:pi 定义成double
输入要求:无
输出要求:""pi = %f\ncount = %d\n""
Input sample:
Output Sample:
pi = 3.141793
count = 5001

c语言编程
我编的为
#include <stdio.h>#include <stdlib.h>
#include <math.h>

int main(){
int a;
double pi;
a=1;
pi=0;
do
{
if (a%2!=0)
{
pi=pi+1/(2*a-1);
a++;
}
else
{
pi=pi-1/(2*a-1);
a++;
}

}while ((1/a)>1e-4); a=a-1;
printf("pi = %f\ncount = %d\n",pi,a);
return 0;
}

为什么输出pi=1.000000
count=1呢
展开
 我来答
hyhylee
推荐于2017-11-25 · TA获得超过120个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:132万
展开全部
你的问题主要是类型的问题。
因为a 是int型的,你在计算的时候不转型成浮点型是不对的(1/a=0)
因此你要写成:
pi=pi+1.0/(2*a-1);

pi=pi-1.0/(2*a-1);

还有判断条件:
while ((1.0/a)>1e-4);

另外,你注意了没有这个公式是pi/4所以为了得到要求的输出,你要写:
printf("pi = %f\ncount = %d\n",pi*4,a);
阳光上的桥
2013-03-30 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
}while ((1/a)>1e-4); a=a-1;

这一行需要小小的修改一下,改为:
}while ((1.0/a)>1e-4); a=a-1;

看到区别了吗,1修改为1.0,因为a是整数类型,那么1/a就是整除,a大于1的结果就为0,循环就退出了。改为1.0后就是小数,才满足我们的要求。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俺不是Vip
2013-04-05 · TA获得超过1.5万个赞
知道大有可为答主
回答量:8162
采纳率:68%
帮助的人:958万
展开全部
你好、我来为你解答:
#include<stdio.h>
main()
{
double pi=0,i=1,j=1,x;
do{
x=j/i;
j=-j;
i+=2;
pi+=x;
}while(i<8000);
pi*=4;
printf("%lf\n",pi);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式