方法一:使用蒙特卡洛方法计算圆周率

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include "graphics.h"

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");

    int r = 200; // 圆的半径
    int count = 0; // 落在圆内的点数
    int total = 0; // 总的点数

    srand(time(NULL)); // 设置随机种子

    for (int i = 0; i < 10000; i++) {
        int x = rand() % (2 * r) - r; // 随机生成点的x坐标
        int y = rand() % (2 * r) - r; // 随机生成点的y坐标

        total++;
        if (sqrt(x * x + y * y) <= r) { // 判断点是否落在圆内
            count++;
            putpixel(x + r + 50, y + r + 50, WHITE); // 在屏幕上绘制点
        }
        else {
            putpixel(x + r + 50, y + r + 50, BLACK); // 在屏幕上绘制点
        }

        float pi = 4.0 * count / total; // 计算圆周率的近似值

        char pi_str[10];
        sprintf(pi_str, "pi=%.6f", pi);
        outtextxy(10, 10, pi_str); // 在屏幕上打印圆周率的近似值
    }

    delay(3000);
    closegraph();
    return 0;
}

方法二:使用Leibniz级数计算圆周率

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

int main()
{
    int n = 1000000; // 迭代次数

    double pi = 0.0;
    int sign = 1;

    for (int i = 0; i < n; i++) {
        double term = 1.0 / (2 * i + 1); // 计算每一项的值
        pi += sign * term; // 累加每一项的值
        sign = -sign; // 改变符号
    }

    pi *= 4; // 乘以4得到圆周率的近似值

    printf("pi = %.15f\n", pi);

    return 0;
}

注意:方法二没有提供可视化过程,只是简单地通过Leibniz级数计算圆周率的近似值

请使用C语言编一个计算圆周率的程序提供可视化过程至少两种方法

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

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