Boring1031 发表于 2021-11-14 22:34:24

c语言帮助帮助一下子小白吧

发过一次了,但感觉没有满意的,用最简单的for,while,if这些语句怎么写{:10_266:}

jackz007 发表于 2021-11-14 23:11:03

本帖最后由 jackz007 于 2021-11-14 23:12 编辑

#include <stdio.h>

double foo(void)
{
      double d , e                     ;
      unsigned long long i , n         ;
      for(d = e = i = n = 1 ; e >= 1e-6 ; i ++) {
                n *= (2 * i + 1)         ;
                e = 1.0 * i / n          ;
                d += e                   ;
      }
      return 2.0 * d                   ;
}

int main(void)
{
      printf("%lf\n" , foo())          ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
3.000000

D:\00.Excise\C>
      误差似乎有点大

jhq999 发表于 2021-11-15 11:42:52

本帖最后由 jhq999 于 2021-11-15 11:57 编辑

jackz007 发表于 2021-11-14 23:11
编译、运行实况:

      误差似乎有点大

楼主题目都抄错了pi/2=1+1!/3+2!/(3*5)+3!/(3*5*7)+.......+n!/(3*5*7*...*(2*n+1))
double pi()
{
        double i=1,j=0,k=1,sum=1,L=1;
        for (i = 1; k < 1e+64; i++)
        {
                k*=(2*i+1);
                L*=i;
                sum+=L/k;
               
        }
        return sum*2;
}
int main(){

printf("%.7lf",pi());
return 0;
}


3.1415927
//如果k<10^6 结果四舍五入3.14

人造人 发表于 2021-11-15 12:04:00

jhq999 发表于 2021-11-15 11:42
楼主题目都抄错了pi/2=1+1!/3+2!/(3*5)+3!/(3*5*7)+.......+n!/(3*5*7*...*(2*n+1))

没办法,题主提问题不认真,能够得到一个认真的答案就已经很不错了
问题都不对,怎么能期望得到一个正确答案呢

Boring1031 发表于 2021-11-15 20:49:24

人造人 发表于 2021-11-15 12:04
没办法,题主提问题不认真,能够得到一个认真的答案就已经很不错了
问题都不对,怎么能期望得到一个正确 ...

这个我也没办法啊,老师布置的原题就是这样子的,谢谢各位了{:10_295:}{:10_266:}
页: [1]
查看完整版本: c语言帮助帮助一下子小白吧