基础编程题目集
7-15 计算圆周率 (15 分)
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
//7-15 计算圆周率 (15 分)
//
//根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
//
//2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯
//输入格式:
//
//输入在一行中给出小于1的阈值。
//输出格式:
//
//在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
//输入样例:
//
//0.01
//
//输出样例:
//
//3.132157
//
#include<stdio.h>
int main(void) {
int i = 1;
float up = 1.0f;
float down = 1.0f;
float sum = 1.0f;//右边式子第一项为1,在此直接处理
float threshold;
scanf("%f", &threshold);//输入阈值
do {
up *= i;//分子
down *= (2.0 * i + 1.0);//分母(奇数相乘,从1*3开始)
i++;
sum += (up / down);//每一项的和累加
} while (up / down >= threshold);//如果当前项小于阈值,退出循环
printf("%.6f", 2.0 * sum);//最后不要忘记乘以2
return 0;
}