一道c语言编程题

求出π的值,根据给出公式π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...,从键盘输入要求满足的精度。(即前后两次求得的π相差小于输入精度)采用float... 求出π的值,根据给出公式π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...,从键盘输入要求满足的精度。(即前后两次求得的π相差小于输入精度)
采用float型,输出采用七位有效数字型如3.xxxxxx。

例如输入0.001,输出3.141106.
#include<stdio.h>
int main()
{
float pi1,pi2,pi,t,s,i,j;
t=0;
s=1;
pi=1;
i=1;
scanf("%f",&t);
do{
s=s*i/(2i+1);
pi=pi+s;
i=i+1;
pi1=pi*2;
}
while(pi1-pi2>=t||pi2-pi1>=t);
printf("%7f",pi2);
return 0;
}
这是我码的,可结果一直是2.4
展开
 我来答
situxuan333
2017-10-18 · TA获得超过831个赞
知道小有建树答主
回答量:328
采纳率:75%
帮助的人:65.9万
展开全部
#include <stdio.h>
int main()
{
double j,s=1,n=1;
int a=0,b=1;
printf("请输入精度:");
scanf("%lf",&j);
while(n>=j)
{
a+=1;
b+=2;
n=n*a/b;
s=s+n;
}
printf("π≈%lf\n",2*s);
}

不过输入0.001的输出和你的例子不一样。仅供参考。

你的代码修改如下:

#include <stdio.h>
int main()
{
float pi,t,s,i,j;
i=1;s=1;t=0;pi=1;
scanf("%f",&t);
while(s>=t)
{
s=s*i/(2*i+1);
pi=pi+s;
i=i+1;
}
printf("%7f",pi*2);

return 0;
}

pi1和pi2没有实际作用。

追问
这个题目的意思不是加的值跟输入精度的比较,而是这步求得的π与上一步求得的π的的差要小于精度。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式