用c语言编写一个程序,用于计算圆周率,要求不同的算法用不同的函数实现
时间: 2024-05-08 16:19:55 浏览: 99
非常感谢您的提问。下面是一个简单的程序,可以用于计算圆周率,同时使用了三种不同的算法:Leibniz公式、Monte Carlo方法和连分式。每种算法都是在具有独立函数的不同部分实现的。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
// Leibniz公式计算圆周率
double leibniz_pi(int n) {
double pi = 0.0;
for (int i = 0; i < n; i++) {
pi += pow(-1, i) / (2 * i + 1);
}
return 4 * pi;
}
// Monte Carlo方法计算圆周率
double monte_carlo_pi(int n) {
int count = 0;
double x, y;
for (int i = 0; i < n; i++) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if (x * x + y * y <= 1) {
count++;
}
}
return 4.0 * count / n;
}
// 连分式计算圆周率
double cf_pi(int n) {
double a = 1.0, b, c = sqrt(2.0);
for (int i = 0; i < n; i++) {
b = (a + c) / 2.0;
c = sqrt(a * c);
a = b;
}
return pow(a + c, 2) / (4 * c);
}
int main() {
srand(time(NULL));
int n;
printf("请输入要计算圆周率的位数:");
scanf("%d", &n);
printf("使用Leibniz公式计算的圆周率是:%.16f\n", leibniz_pi(2 * n));
printf("使用Monte Carlo方法计算的圆周率是:%.16f\n", monte_carlo_pi(n));
printf("使用连分式计算的圆周率是:%.16f\n", cf_pi(n));
return 0;
}
```
注意,这里给出的三种算法只是其中的一部分,还有很多其他算法可以用于计算圆周率,如BBP公式、Ramanujan公式等等。
阅读全文