1.题目
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
2.分析
坑:
1.分子分母不可以分开算,因为n!会超过int范围(错误1)
2.最后一项是要小于给定阈值(即最终结果要加上那一项,不加则会造成错误2)
3.代码
错误1:n!
错误2:最后小于阈值的项没加上
#include <stdio.h>
int main()
{
float n, Sum = 0, Last = 1,i=1;
scanf("%f", &n);
while (Last >= n)
{
Sum += Last;
Last = Last*i/(2*i+1);
i++;
}
printf("%f", Sum*2);
return 0;
}
正确解法:
#include <stdio.h>
int main()
{
float n, Sum = 1, Last = 1,i=1;
scanf("%f", &n);
while (Last >= n)
{
Last = Last*i/(2*i+1);
Sum += Last;
i++;
}
printf("%f", Sum*2);
return 0;
}
4.总结
要注意题目的要求
5.更新日志
**2022.3.9 遇到并上传错误1、2
2022.3.10 得出正确解法**
欢迎讨论、指正~~