本文目录一览:
- 1、C语言编程求出圆周率的近似值。
- 2、用C语言求π的近似值
- 3、c语言 根据公式求出π的近似值。
- 4、C语言程序设计,计算π的近似值
- 5、C语言编程有公式 可以计算π的近似值。求前后两次迭代结果π 之差的绝对值小于e时相应的最小迭代次数n
- 6、c语言编程,求π的近似值
C语言编程求出圆周率的近似值。
#include stdio.h
int main()
{
double pi;
unsigned long i,n;
scanf("%lu",n);
for(pi=1,i=1;i=n;++i)
{
pi*=(i+1)/2*2.0 / ( (i+1)/2*2+(i-1)%2*2-1 );
}
printf("pi=%.10lf\n",pi*=2);
return 0;
}
用C语言求π的近似值
循环体里面的公式有点问题,我重新写了一下,代码如下:
void main()
{
double i, pi;
i=1.0,pi=0.0;
while (fabs(1.0/i) = 1e-6){
pi=(pi + pow(-1.0,i+1)/(2*i-1));
i++;
}
printf("pi=%f\n",pi* 4);
system("pause");
}
注意输出的结果是pi*4,望采纳!
c语言 根据公式求出π的近似值。
#includestdio.h
double powi(double num, int multi) {
double r = 1.0;
int i;
for (i = 0; i multi; i++) {
r *= num;
}
return r;
}
double item(int n) {
double r = 1.0;
int i;
/* 1.0 * 1 / 2 * 3 / 4 * 5 / 6 ..... */
for (i = 1; i n; i++) {
if (i % 2) {
r *= i;
/* printf("*%d", i); */
} else {
r /= i;
/* printf("/%d", i); */
}
}
r *= 1;
/* printf("*%d", 1); */
r /= n;
/* printf("/%d", n); */
r *= powi(0.5, n);
/* printf("*%lf", powi(0.5, n)); */
/* printf(" -- item %d: %lf \n", n, r); */
return r;
}
int main() {
double pd6 = 0.0, ci = 0.0;
int i = 1;
do {
ci = item(i);
pd6 += ci;
i += 2;
} while (ci = 1e-6);
printf("PI=%.6lf\n", pd6 * 6);
return 0;
}
完全按你的公式做的,结果真的对了,3.141592(这里对6位有效数字有个存疑,就是应该输出6位还是7位数字,理论上有效数字后面应该带上一个估值,用来修正有效数字的,如果要求真的那么严格,我可以给你写个函数用来输出6位有效数字)。
一般级数很少有用这个复杂的式子的吧,一般都是 1-1/3+1/5-1/7+1/9-1/11 这个式子,你的公式竟然也是对的。楼上的完全没看懂级数的项的规律。
-------------------------------------------------
以上是20:29分发的回答,既然你没有追问,我只能通过修改这个回答,慢慢解释一下:
powi函数 是为了不引用庞大的math库,而自己写的一个简单的正整数幂的函数(math库里有double pow(double, double),这个运算过程中不需要小数的幂值,就用循环乘法来实现了。
item函数 是每个项的计算过程,仔细看的话可能会发现,这些项并不是 i=1,2,3,4... 而是 i=1,3,5,7... 这个是为了符合级数的项中的值,都是奇数在做运算。
item里面的那些注释掉的 printf 是故意留下用来观察级数表达式的。由于每一项都是多个数值相乘或除,如1/2x3/4x5/6 其实就是1 * 2 / 3 * 4 ,这些printf可以在计算每一项的时候把整个过程打印出来。
级数的难点其实就是找到项的通用表达式,你的公式已经把表达式写的很清楚了,就看你把它提取成算法了
C语言程序设计,计算π的近似值
算法错误。程序思路非常混乱。n++只一次,并没有循环,那么一开始计算x0时n=1,以后每次计算x0的值时n都等于2。而计算公式是要对n进行累加循环的。
#include stdio.h
void main(){
double i,k=1;
for(i=1;k*(i*2*i*2/((i*2-1)*(i*2+1))-1)=1e-6;i++)
k*=i*2*i*2/((i*2-1)*(i*2+1));
printf("PI=%.2lf",k*2);
}
C语言编程有公式 可以计算π的近似值。求前后两次迭代结果π 之差的绝对值小于e时相应的最小迭代次数n
代码如下:
#includestdio.h
int main() {
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, pi=%lf\n", n, pi);
return 0;
}
运行结果如下:
c语言编程,求π的近似值
#include stdio.h
#include math.h
int main()
{
int x,z;
float y;
y=0;
z=0;
for(x=1;fabs(1.0/x)1e-6;x+=2)
{
z=z+1;
if(z%2!=0)
{
y=y+1.0/x;
}
else
{
y=y-1.0/x;
}
}
y=y*4;
printf("π=%10.6f\n",y);
return 0;
}