鱼C论坛

 找回密码
 立即注册
查看: 1653|回复: 7

为什么改变顺序不行,这种情况我怎样理解它的顺序

[复制链接]
发表于 2019-3-18 12:52:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 过客sea 于 2019-3-18 15:11 编辑

        #include<stdio.h>
#include<math.h>
int main()
{
        int sign=1;
        double pi=0.0,n=1.0,term=1.0,p;
        while(fabs(term)>=1e-6)
        {
                 pi=pi+term;
                n=n+2;
                sign=-sign;
                term=sign/n;
      
        }
        p=pi*4;
        printf("p=%10.8f\n",p);
        return 0;
}



#include<stdio.h>
#include<math.h>
int main()
{
        int sign=1;
        double pi=0.0,n=1.0,term=1.0,p;
        while(fabs(term)>=1e-6)
        {
                    n=n+2;
                sign=-sign;
                term=sign/n;
               pi=pi+term;
      
        }
        p=pi*4;
        printf("p=%10.8f\n",p);
        return 0;
}
两次执行结果不一样,我改变了pi=pi+term的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-18 13:06:14 | 显示全部楼层
我改变了pi=pi+term的位置 几个意思?不懂你说什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-18 13:14:37 | 显示全部楼层
ba21 发表于 2019-3-18 13:06
我改变了pi=pi+term的位置 几个意思?不懂你说什么

就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 14:24:10 | 显示全部楼层
        sign = 1                ;
        term = 1.0              ;
        pi = 0.0                ;
        while(fabs(term) >= 1e-6) {
                pi = pi + term  ; // term = 1.0 的初始值被用上了
                n = n + 2       ;
                sign = - sign   ;
                term = sign / n ;
        }
        sign = 1                ;
        term = 1.0              ;
        pi = 0.0                ;
        while(fabs(term) >= 1e-6) {
                n = n + 2       ;
                sign = - sign   ;
                term = sign / n ;  // term = 1.0 的初始值被丢弃了
                pi = pi + term  ;
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 14:29:33 | 显示全部楼层
过客sea 发表于 2019-3-18 13:14
就是顺序改变了啊,第一次放在了上面,第二次放在了下面,不好意思,麻烦您对比一下看看


顺序改变,
跟谁的顺序改变,举个列子这么难?
跟它?
  term=sign/n;
               pi=pi+term;
还是跟它?
        pi=pi+term;
      
        }
        p=pi*4;

要不就是跟它?
n=n+2;
pi=pi+term;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-18 14:35:31 | 显示全部楼层

其实这个和我上次的问题差不多,我一开始也想是这个原因,上次您一说我就明白理解了。这一个我怎么理解这个逻辑顺序呢,总感觉应该按照第二个的步骤解题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 14:41:53 | 显示全部楼层
pi = 0.0 + 1.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997
    上面是前者的实际累加操作效果
pi = 0.0 - 1 / 3 + 1 / 5 ...... + 1 / 999997 - 1 / 999999
    上面是后者的实际累加操作效果
    哪一个结果正确要看实际问题和预期,不好一概而论。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-18 15:10:54 | 显示全部楼层
jackz007 发表于 2019-3-18 14:41
上面是前者的实际累加操作效果

    上面是后者的实际累加操作效果

明白了,就是潜意识的还理解不透彻,就怕以后遇到类似问题再犯错误,谢谢亲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 12:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表