以下是一个使用 C++ 编写的计算圆周率的代码,每计算出一位就输出一次:

#include <iostream>
#include <iomanip>
#include <cmath>

int main() {
    int numDigits; // 要计算的圆周率位数
    std::cout << "请输入要计算的圆周率位数:";
    std::cin >> numDigits;

    std::cout << std::fixed << std::setprecision(numDigits + 1); // 设置输出精度

    int maxIterations = std::ceil(numDigits / std::log10(2)); // 迭代次数

    int a = 10 * std::pow(2 * numDigits, 0.5); // 初始化计算参数 a
    int b = 0; // 初始化计算参数 b
    int c = 1; // 初始化计算参数 c
    int d = 0; // 初始化计算参数 d

    for (int i = 0; i < maxIterations; i++) {
        int q = (a * b + c) / c; // 计算商 q
        int r = (a * b + c) % c; // 计算余数 r

        if (4 * q + r - d < c) { // 判断是否需要输出
            std::cout << q;
            if (i == 0) {
                std::cout << '.';
            }

            // 更新计算参数
            d = r;
            a = 10 * (a - c * q);
            b = 10 * q;
        } else {
            // 更新计算参数
            d = (r + a * (b - q * c)) * 2;
            a = a * (2 * q + 1);
            b = b * (2 * q + 1);
            c = c * (2 * q + 1);
        }
    }

    std::cout << std::endl;

    return 0;
}

这个代码使用了一个无限迭代的算法来计算圆周率,每次迭代都计算出一位圆周率,并将其输出。用户需要输入要计算的圆周率位数,然后代码会根据输入的位数进行计算和输出。

C++ 计算圆周率代码:逐位输出

原文地址: https://www.cveoy.top/t/topic/qBZN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录