问答题 请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度 0.0005, 即某项小于0.0005时停止迭代): π 1 1×2 1×2×3 1×2×3×4 1×2×…×n ─ = 1+─+─—+────+──────+……+──────── 2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1) 程序运行后,如果输入精度0.0005,则程序输出为3.14…。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #include double fun ( double eps) { } main( ) { double x; printf("Input eps:") ; scanf("%lf",&x); printf("/neps = %lf, PI=%lf/n", x, fun(x)); NONO(); }
【正确答案】double fun ( double eps) { double s=1,t=1.0; int n=1; while(t>=eps) { s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0); } main( ) { double x; printf("Input eps:") ; scanf("%lf",&x); printf("/neps = %lf, PI=%lf/n", x, fun(x)); NONO(); }
【答案解析】