zoukankan      html  css  js  c++  java
  • 7-15 计算圆周率 (15分)

    根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。

     有一个注意点是:该式的最后一项不要乘以2

    自己写的C++代码

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    // 直接使用一个函数计算每一项的值,将每一项的值与阈值比较,如果小于阈值则跳出循环
    double Factorial(int n) {
        if (n == 0) // 如果为0,直接返回1
            return 1;
        double numerator=1, denominator=1; // numerator为分子,denominator为分母
        for (int i = 1; i <= n; i++) { // 计算分子的值
            numerator *= i;
        }
        for (int j = 1; j <= 2*n+1; j += 2) { // 计算分母的值
            denominator *= j;
        }
        return numerator / denominator;
    }
    
    int main(void) {
        double precision, number=1, sum=0;
        int i = 0;
        cin >> precision;
        while (number > precision) {
            number = Factorial(i);
            sum += number;
            i++;
        };
        cout << setiosflags(ios::fixed) << setprecision(6) << 2 * sum;
        return 0;
    }

    网上写得不错的C代码

    #include<stdio.h>
    int main()
    {
        int n = 0;
        double e, f;//e为输入的阈值,f为单独一项的值
        double fz = 1, fm = 1;//初始化分子,分母为1
        double sum = 0, pi;//sum为各项的和,pi为最终结果
        while (~scanf_s("%lf", &e))
        {
            for (f = 1; f >= e; n++)
            {
                if (n == 0)//第一项单独讨论
                    fz = 1;
                else
                    fz = fz * n;//后一项的分子等于前一项的分子乘上n
                fm = fm * (2 * n + 1);//后一项的分母等于前一项的分子乘上(2n+1)
                f = fz / fm;
                sum = sum + f;
            }
            pi = 2 * sum;
            printf("%.6f
    ", pi);
        }
        return 0;
    }
  • 相关阅读:
    webstorm编辑器使用
    css深入理解z-index
    vue-cli安装失败问题
    html5 离线存储
    ESXI安装
    文档相似性匹配
    Hibernate基础
    云存储技术
    Signs of a poorly written jQuery plugin 翻译 (Jquery插件开发注意事项,Jquey官方推荐)
    Jquery类级别与对象级别插件开发
  • 原文地址:https://www.cnblogs.com/letwant/p/14306214.html
Copyright © 2011-2022 走看看