用C语言求π值

题目要求:
求出π的值,根据给出公式π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...,从键盘输入要求满足的精度。(即输出的π与之前的π相差小于输入的精度,比如输入的精度为1,第一个值为2,第二个值为2.66666667,2.6666667-2<1,故输出2.6666667)
ps:采用float型,输出采用七位有效数字型如3.xxxxxx。
例如输入0.001,输出3.141106.

下面是我码的代码,对于精度0.1,0.01,0.001,都可以正常输出,但是当输入精度为1时,输出的为2.933333,是哪里出错了 ?
#include <stdio.h>
int main()
{
float j,s1,s2,n=1;
int a,b;
s1=1;
s2=(1+1/3);
scanf("%f",&j);
a=0;
b=1;

do{
a=a+1;
b=b+2;
n=n*a/b;
s1=s1+n;
s2=s1+n*(a+1)/(b+2);
}
while ((2*(s2-s1))>=j);
printf("%7f\n",2*s2);
}

输出时,使用了 %7f。。。。。。。。所以精度短于7位时,就不正常了。。。。。。要减少%X7中的X的值
~
~~~~~~~~~~追问

没听懂,什么意思

温馨提示:内容为网友见解,仅供参考
无其他回答

如何用C语言计算π?
pi += sign * (1 \/ i)sign *= -1 pi *= 4 print("π的值为:", pi)解释:首先定义变量pi和sign,分别表示π的值和正负号。然后使用for循环计算公式的前100项,每次加上一个数(或减去一个数),并更新正负号。最后将计算结果乘以4,即可得到π的值。最后使用print语句输出π的值。需要...

C语言求π的值
原理是 PI=SQRT((1\/1^2+1\/2^2+1\/3^2+...)*6)include <stdio.h> #include <math.h> int main(){ double sum,term,pi,i=1; while(1\/pow(i,2)>1E-12){ sum+=1\/pow(i,2); i++; } pi=sqrt(sum*6); printf("%lf",pi);}显示效果如下:...

求π值的C语言程序。
void main(){ int s=1;float n=1,pi=0, t=1;while(fabs(t)>=0.000001){pi+=t; n+=2; s=-s; t=s\/n; } pi*=4;printf("pi=%f\\n",pi);}

C语言的求π的值?
printf("pi=%10.4lf\\n",pi*4);return 0;}

c语言,求π,精确到小数点10位
include<stdio.h> float calPI(){float p=0.0,t=1.0;int i;for(i=1;t>=1e-10;i+=2){ t=1.0\/i;if(i%4==1)p+=t;else p-=t;} return 4*p;} int main(){ float pi;pi = calPI();printf("π=%f\\n",pi);getch();} ...

C语言编程计算出π的值 最好有三种方法!! 急求 好人一生平安啊_百度知 ...
代入x=1得 把这展开式展开,直到最后一项的绝对值小于1e-6为止。下面是C语言递归实现:include<stdio.h> include<math.h> void main(){ float fuc(int n);float s,pi;for(int i=1;i<10000;i++){s=1.0\/(2*i-1);if(s<1e-6)break;} pi=fuc(i);pi=pi*4;printf ("...

那个计算π的C语言程序是怎么写的啊?
1、PI 的值可以通过以下公式计算出来,π\/4=1-1\/3+1\/5-1\/7……编写循环程序,当这种计算方法所得到的偏差小于0.000001时停止计算,并输出PI的值及所需要计算的项数。2、例程:double s = 0;\/\/面积 double pi = 0;\/\/圆周率 double d=200;\/\/直径(值越大圆周率越精确) double...

C语言怎么求π近似值?
C代码和运行结果如下:可见在给定精度下,输出π的近似值为3.141393,望采纳~附源码:include <stdio.h> define E 1e-4 int main() { double pi = 0;int i, sign = 1; \/\/ sign表示正负号 for (i = 1; 1.0 \/ i >= E; i += 2) { pi += sign * 1.0 \/ i;sign = -...

c语言问题,运用以下公式,用循环累加求和的方法计算π的值
<math.h> #define n 20190128\/\/#define n 20151123int main(){ int i; double sum, pi; sum = 0; for (i = 1; i <= n; i++) sum += 1.0 \/ i \/ i; pi = sqrt(6.0 * sum); printf("%.6f", pi); return 0;} ...

C语言编程有公式 可以计算π的近似值。求前后两次迭代结果π 之差的...
int n = 1;double pi = 2.0 * 2 * 2\/3; \/\/ n=1时pi的初值 double e; \/\/ 精度 scanf("%lf", &e);while (1) { ++n;int m = 2 * n;double pn = pi * m \/ (m - 1) * m \/ (m + 1);if (pn - pi < e) { pi = pn;break;} pi = pn;} printf("n=%d...

相似回答