| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1685 人关注过本帖
标题:帮忙看一下
只看楼主 加入收藏
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:9 
帮忙看一下
为什么程序执行后结果是负数。
问题:用Π/4=1 - 1/3 + 1/5 - 1/7......公式求Π的近似值,直到某一项的绝对值小于10^-6为止。
我的代码是
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{   int d=0;
    float a=1,b,c=0;
    b=1/(a+2);
    for(;abs(c)<10^-6;)
    {
                a=1/(a+4);
                c=((1/a)-b+1/a)*4;
                printf("c=%.6f\n",c);
    }
   
   
     
     system("pause");
     getchar();
     getchar();
}


求解惑

[此贴子已经被作者于2018-10-27 19:04编辑过]

搜索更多相关主题的帖子: include main float for getchar 
2018-10-27 17:48
陈无
Rank: 2
等 级:论坛游民
帖 子:29
专家分:35
注 册:2018-10-10
收藏
得分:1 
把float改为double

[此贴子已经被作者于2018-10-27 18:34编辑过]

2018-10-27 18:14
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
收藏
得分:0 
回复 2楼 陈无
哥们,改了还是不行呀
2018-10-27 18:57
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
收藏
得分:0 
回复 楼主
我改了一下,就下面那个编程,结果变为正的了,但是Π的值却算成了2.6666667

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{   int d=0;
    double a=1,b,c=0;
    b=1/(a+2);
    for(;abs(c)<0.000001;)
    {      c=(a-b)*4;
          for(a=1/(a+4);a<1&&a>0;)
          {
              
              printf("c=%f\n",c);
          }
          printf("\n");
    }
   
     
     system("pause");
     getchar();
     getchar();
}
2018-10-27 19:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:12 
“c=((1/a)-b+1/a)*4;”这是什么算法,完全没看懂

程序代码:
#include <stdio.h>

int main( void )
{
    double pi = 0;
    for( int i=1; i<=1000000; i+=2 )
        pi += (2.-i%4)/i;
    pi *= 4;

    printf( "%f\n", pi );
}

2018-10-29 09:46
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
收藏
得分:2 
你的累加去哪里了...我看着都没看到累加啊

printf("萌新一枚,请多指教");
2018-10-29 09:54
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
收藏
得分:0 
回复 6楼 ab1412
嘿嘿~~~~我不会那里的累加,能不能教一下我
2018-10-29 11:31
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
收藏
得分:0 
回复 5楼 rjsp
那是我自己想的,因为想不到怎么算,所以就写了这个四不像
2018-10-29 11:32
秋叶映月
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2018-9-23
收藏
得分:0 
以下是引用rjsp在2018-10-29 09:46:05的发言:

“c=((1/a)-b+1/a)*4;”这是什么算法,完全没看懂

#include <stdio.h>

int main( void )
{
    double pi = 0;
    for( int i=1; i<=1000000; i+=2 )
        pi += (2.-i%4)/i;
    pi *= 4;

    printf( "%f\n", pi );
}


版主大哥,pi += (2.-i%4)/i  这个是什么来的有点看不懂,尤其是  (2.-i%4)   这个。
2018-10-29 15:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 9楼 秋叶映月
i = 1, 5, 9, …… 时, (2.-i%4) 的值是 +1.0
i = 3, 7, 11, …… 时, (2.-i%4) 的值是 -1.0
2018-10-29 16:10
快速回复:帮忙看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030477 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved