C语言问题 关于求圆周率的题 帮忙看下哪里有问题 小弟学的只是不多 所以过程有点繁琐 麻烦指教

#include<stdio.h>

int main(void)
{
int n=1,x=1;
double y=1,s=0,p;
while(y>=0.00000001)
{
if(n%2!=0)
{
s=s+y;
}
else
{
s=s-y;
}
n++;
x=x+2;
y=1/x;
}
p=4*s;
printf("π≈%lf\n一共累加了%d项",p,n);
system("pause");
return 0;
}
补充下题

利用下面公式求出 π 的近似值。其中,被累加
的数据项个数由累加到某个数据项时,如果该数据项
的绝对值小于 10-8,则终止。最后,程序输出 π 的近似值,并统计为
得到此近似值,算式中一共累加了多少个数据项。
π/4=1-1/3+1/5-1/7+...

#include<stdio.h>
/*修改1*/#include<stdlib.h>
int main(void)
{
int n = 1, x = 1;
double y = 1, s = 0, p;
while (y >= 1e-8)    /*修改3*/
{
if (n % 2 != 0)
{
s = s + y;
}
else
{
s = s - y;
}
n++;
x = x + 2;
y = 1 / (double)x;/*修改3,int/int会发生截断,1/2 = 0*/
}
p = 4 * s;
printf("π≈%lf\n一共累加了%d项", p, n);
system("pause");
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-12
在y=1/x那一行.
因为1为整型,x为整型,
所以x>1时,1/x=(int)0
y=(double) 0
把这行改成y=1/(double)x或者 y=1.0/x
相似回答