本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。
2π=1+31!+3×52!+3×5×73!+⋯+3×5×⋯×(2×i+1)i!+⋯ 泰勒公式
输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:
scanf("%le", &eps);
输出格式:
在一行内,按照以下格式输出π的近似值(保留小数点后5位):
PI = 近似值
输入样例:
1E-5
输出样例:
PI = 3.14158
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题
①这道题开头,我们应该知道这是啥意思:%le
%le
表示按照科学计数法读取一个双精度浮点数,其中l
表示long
,e
表示指数形式。因此,当你输入一个类似于1E-5
的字符串时,scanf
函数会将其转换为一个双精度浮点数,并将其存储在变量eps
中。
②输入样例输入的是什么?
在科学计数法中,1E-5表示1乘以10的负5次方,即0.00001。其中,E表示指数形式,是英文单词exponent的缩写。因此,1E-5可以写成1×10^-5或者0.00001
好,那么以下是代码
#include<stdio.h>
int main(void)
{double i=1; //定义变量i的初始值为1double eps,sum=0,re=1; //定义变量eps、sum、re的初始值分别为0、1、1scanf("%le", &eps); //读入精度epswhile(re>=eps){ //循环计算sum = sum + re; //累加每一项的值re = re * i/(2*i+1); //计算每一项的值i = i + 1; //更新i的值}sum = sum + re; //累加最后一项的值printf("PI = %.5f",2*sum); //输出π的近似值return 0;
}