鱼C论坛

 找回密码
 立即注册
查看: 1517|回复: 4

[已解决]新手求助

[复制链接]
发表于 2022-9-7 19:32:03 | 显示全部楼层 |阅读模式

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

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

x
为什么输出为7.1415926
#include<stdio.h>

int main()
{
       
        double sum=0,pi,exp1=1,term=1;
        double i=1,sign=1;
       
       
        while(exp1>=1e-8)
        {
                sum=sum+term;
                exp1=1/i;       
                term=sign*exp1;
                i=i+2;
                sign=-sign;       
        }
        pi=4*sum;
        printf("%.7f\n",pi);
       
       
        return 0;
}

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

int main()
{
        int sign = 1; // 表示符号
        double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值

        while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
        {
                pi = pi + term;
                n = n + 2;
                sign = -sign;
                term = sign / n;
        }

        pi = pi * 4;
        printf("pi = %10.7f\n", pi);

        return 0;
}
最佳答案
2022-9-7 20:22:49
  1. while(exp1>=1e-8)
  2.         {
  3.                 //sum=sum+term;  这里多加了一个1
  4.                 exp1=1/i;      
  5.                 term=sign*exp1;
  6.                 i=i+2;
  7.                 sign=-sign;  
  8.                                 sum=sum+term;     
  9.         }
  10.         pi=4*sum;  //多加的那个1被乘4,结果多了4
复制代码

第一轮被计算了两次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 20:22:49 | 显示全部楼层    本楼为最佳答案   
  1. while(exp1>=1e-8)
  2.         {
  3.                 //sum=sum+term;  这里多加了一个1
  4.                 exp1=1/i;      
  5.                 term=sign*exp1;
  6.                 i=i+2;
  7.                 sign=-sign;  
  8.                                 sum=sum+term;     
  9.         }
  10.         pi=4*sum;  //多加的那个1被乘4,结果多了4
复制代码

第一轮被计算了两次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 20:27:25 | 显示全部楼层
两手空空儿 发表于 2022-9-7 20:22
第一轮被计算了两次

参考答案里不也在term==1的时候加到sum里了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 20:31:59 | 显示全部楼层
你的循环第一次term=1,第二次 term 还是 = 1
答案里,第一次 term = 1,第二次 term = 1/3 了
你看我给你修改的代码,把累加放到后面就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-9-7 20:38:56 | 显示全部楼层
两手空空儿 发表于 2022-9-7 20:31
你的循环第一次term=1,第二次 term 还是 = 1
答案里,第一次 term = 1,第二次 term = 1/3 了
你看我给你 ...

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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