请使用C语言编一个计算圆周率的程序提供可视化过程至少两种方法
方法一:使用蒙特卡洛方法计算圆周率
#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级数计算圆周率的近似值
原文地址: https://www.cveoy.top/t/topic/iwiM 著作权归作者所有。请勿转载和采集!