一道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 展开
采用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 展开
展开全部
#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没有实际作用。
追问
这个题目的意思不是加的值跟输入精度的比较,而是这步求得的π与上一步求得的π的的差要小于精度。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询