C语言程序运行后显示0.0000000,没有错误,求大神指教

#include"stdio.h"
main()
{
int p=1;
float pi=0,i=1;
while i>=1e-6;
{
pi=pi+p*i;
i=i/(i+2);
p=-p;
}
pi=pi/4;
printf("%f",pi);
}
不是while的问题,上面我打错了,是while(i>=1e-6),各位不好意思,
另外问题是用pi/4=1-1/3+1/5-1/7+....公式求圆周率的近似值

第1个回答  2012-06-18
main()
{
int p=1;
float pi=0,i=1,k=1;
while ( i>=1e-6)
{
pi=pi+p*i;
i = 1/(k+2);
p=-p;
k+=2;
}
pi=pi*4;
printf("%f",pi);
}
看看这样对不,不过只能求近似值
1 while 后面你加了 ; 这样就不会进入循环
2 根据你的公式 pi = pi*4
第2个回答  2012-06-18
while i>=1e-6;
改为while( i>=1e-6)
即去掉;加上()追问

不是while的问题,上面我打错了,是while(i>=1e-6)

追答

没有别的语法问题了,弱弱问一句,是不是程序算法错了
这程序是要计算什么的?

#include
main()
{
int p=1;
float pi=0,i=1,t=1;
while (t>=1e-6)
{
pi=pi+p*t;
t=1/(++i,++i);
p=-p;
}
pi=pi*4; //乘
printf("%f",pi);
getchar();
}

本回答被提问者采纳
第3个回答  2012-06-18
while i>=1e-6;
这里不行吧?
while (i>=1e-6)追问

奥,不是这里,我打的时候掉了,不好意思

追答

去掉分号啊,那是空语句,会使后面花括号你的代码没有循环执行了。
而且空语句下,会导致死循环,i始终>=1e-6

改后,结果是0.191125啊

关键你是求什么啊?若是你的逻辑都错了,结果自然不对。

追问

问题是用pi/4=1-1/3+1/5-1/7+....公式求圆周率的近似值

追答

#include"stdio.h"
main()
{
int p=-1;
double pi=1,i=1,t;
while(1)
{
t=1/(i+2);
if(t<1e-6) break;
pi=pi+p*t;
i+=2;
p=-p;
}
pi=pi*4;
printf("%lf",pi);
getchar();
}

pi初值1,第一项求-1/3,符号p=-1,i=1
最后pi要乘以4

第4个回答  2012-06-18
i=i/(i+2)错了
是i=1/(i+2)
相似回答