搜索
查看: 2495|回复: 3
打印 上一主题 下一主题

π/4=1-1/3+1/5-1/7+…,编程求π。求高手看下哪错了!!谢谢

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-16 09:55:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
int main()
{
  int a=1;
  double b,c=1,pi=0;
    for(b=1;b>=1e-6;b=c/a)
    {
      pi=pi+b;
      a=2+a;
      c=-1*c;
    }
    printf("pi=%f",pi);
    getch();
}   

沙发
发表于 2012-11-16 13:12:20 | 只看该作者
本帖最后由 梦中的婚礼 于 2012-11-16 13:18 编辑

#include <stdio.h>
int main()
{
  int a=1;
  double b,c=1,pi=0;
    for(b=1;b>=1e-6;b=c/a)
    {
      pi=pi+b;
      a=2+a;
      c=-1*c;
    }
    printf("pi=%lf",pi);
    getch();
}
  

double 的话,在 printf 这里用 %lf

另外1e减6 ?用到了数学吗? 加一个头文件 include<math.h>
在这里的e并不是数学里的e,在这里只是一个变量,也就是存一个未知数。但你在double和int里都没有定义e。
板凳
 楼主| 发表于 2012-11-16 16:46:22 | 只看该作者
梦中的婚礼 发表于 2012-11-16 13:12
#include
int main()
{

用while编译成功了。1e-6在C语言是表示1的-6字方吧;还是谢谢你
#include <stdio.h>
int main()
{
        int c=1,b=1;
    double pi=0,a=1;  
    while(a>=1e-6)
    {
        a=1.0/c;
        pi=pi+a*b;
        c+=2;
        b*=-1;
    }   
      printf("pi=%f",pi*4);
        getch();
}
地板
发表于 2013-3-10 12:35:43 | 只看该作者
本帖最后由 Smallbee 于 2013-3-10 13:28 编辑

FOR中的条件出错!
第一次运行时b=1,运行完后pi=1,a=3,c=-1。第二次运行FOR循环时执行b=c/a,结果是个负数,此时已不满足条件故不再执行循环体。
可以这样改:
for(b=1;b>=1e-6;b=1.0/a)
{
  pi+=b*c;
  a+=2;
  c*=-1;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表