使用格里高利公式求π的近似值,要求最后一项的绝对值精确到从键盘读入的数。(比如0.01,0.001,0.0001等)(PI/4=1-1/3+1/5-1/7+etc)
参考一下:
#include <stdio.h>
#include <math.h>
int main() {
double epsilon, term, sum = 0, pi; // 定义变量
int sign = 1, i = 1;
printf("请输入 epsilon 的值: "); // 从键盘读入 epsilon 的值
scanf("%lf", &epsilon);
do {
term = sign * 1.0 / i; // 计算每一项的值
sum += term; // 累加每一项的值
sign *= -1; // 每一项符号取反
i += 2; // 下一个项的分母加 2
} while (fabs(term) >= epsilon); // 直到最后一项的绝对值小于等于 epsilon
pi = 4 * sum; // 计算 pi 的近似值
printf("π 的近似值为: %lf\n", pi);
return 0;
}
思路:
代码示例:
#include <stdio.h>
#include <math.h>
int main() {
double epsilon;
printf("请输入精度值:");
scanf("%lf", &epsilon);
double sum = 0;
int sign = 1, denominator = 1;
double term = 1;
while(fabs(term) > epsilon) {
sum += term;
denominator += 2;
sign *= -1;
term = sign / (double)denominator;
}
double pi = 4 * sum;
printf("π的近似值为:%lf\n", pi);
return 0;
}
代码
#include<stdio.h>
#include<math.h> //程序中用到数学函数fabs,应包含文件math.h
int main()
{
int sign=1;
double pi=0.0,n=1.0,term=1.0;
while (fabs(term)>=1e-6)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf ("pi=%10.8f\n",pi);
return 0;
}
结果