Pi/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+... 求Pi值
用了一个do while 出不了结果
是不是while后面的条件设置的不对
如何控制i使循环能够做无限次
#include <stdio.h>
int main()
{
double pi,a,b,i;
a=1.0;
b=1.0;
i=1.0;
pi=1.0;
do
{a=a*i;
b=b*(2*i+1);
pi+=a/b;
i++;
}while(i/(2*i+1)<0.5);
printf("Pi的值为%lf\n",pi*2);
}
另,如何用for循环求解此题
//Pi/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+... 求Pi值,
#include
int main()
{
double pi,a,b,i;
a=1.0;
b=1.0;
i=1.0;
pi=1.0;
do
{a=a*i; //a=1*1=1
b=b*(2*i+1); //b=1*(2*1+1)=3
pi+=a/b; //pi=1/3+pi=1/3+1
i++; //i=2
}while(i/(2*i+1)<0.49); // 2/(4+1)=0.4
printf("Pi的值为%lf\n",pi*2);
}
这样应该就可以了,运行出的结果是3.14159
题主原来的while(i/(2*i+1)<0.5一直为真,所以他就一直循环,出不来结果
你好,你的代码中do-while语句里 i/2i+1< 0.5 这个条件恒成立,因此将不断循环,无法跳出到后面的printf语句。你可以将跳出条件设置为i>100,诸如此类。
C语言中循环是不能够做无数次的!
使用For循环的话,可以这样写:
#include <stdio.h>
int main()
{
double pi,a,b,i;
a=1.0;
b=1.0;
i=1.0;
pi=1.0;
for(i=1;i<100;i++){
a=a*i;
b=b*(2*i+1);
pi+=a/b;
}
printf("Pi的值为%lf\n",pi*2);
}