C语言,计算近似圆周率

C语言程序设计,无法运行代码,题目是计算pi的值,我的想法是用for循环达成目的

#include <stdio.h>
#include<math.h>
main()
{
   int i=2;
   double s=1.0,eps,pi,m;
   scanf("%lf",&eps);
   m=pow((-1),i-1)*(1/(2*i-1));
   for (i=2;1/(2*i-1)>eps;i++)
   {
       s=s+m;
       i++;
   }

   pi=4*s;
   printf("%.8lf",pi);

}

m只计算了一次,循环中也要计算
1/(2i-1) 的值是int类型,可能会为0,改为1.0/(2i-1)

http://t.csdn.cn/RGOiA
看看这个

【以下回答由 GPT 生成】

解决方案:

这个问题可以通过修改代码来解决。下面是修改后的代码:

#include <stdio.h>
#include <math.h>

int main()
{
   int i;
   double s=0.0, eps, pi, m;

   printf("请输入所需的精度(eps):");
   scanf("%lf", &eps);

   for (i = 0; 1.0 / (2 * i + 1) > eps; i++)
   {
       m = pow(-1, i) * (1.0 / (2 * i + 1));
       s += m;
   }

   pi = 4 * s;
   printf("近似的圆周率π的值为:%.8lf", pi);

   return 0;
}

修改过的代码进行了以下几点改动:

  1. main()函数的返回类型改为int
  2. 初始化i0,因为循环中已经包含了对i的初始化。
  3. 在循环中,将eps的计算条件改为1.0 / (2 * i + 1) > eps,这样才能正确判断是否达到了所需的精度。
  4. s的初始值设置为0.0,因为初始值为1.0会导致最终结果错误。
  5. 每次循环结束,需要对i进行自增操作。

这样修改后的代码可以正确计算近似的圆周率π的值。请注意,计算结果的精度取决于用户输入的eps值。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^