上机题问题
题:请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代): Л/2=1+1/3+1*2/3*5+...1*2*.....*n/3*5*7......(2*n+1)程序运行后,如果输入精度0.0005,则程序输出为3.140578。
注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
我的回答是:
#include <stdio.h>
#include <math.h>
double fun ( double eps)
{double i,j,sum=1;
int t=1,k=3;
for(i=1,j=1;(i/j)>=eps;t+=1,k+=2)
{i=i*t;
j=j*k;
sum=sum+i/j;
}
return sum*2;
}
main( )
{ double x;
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
getch();
}
运行输出的是 3.141106
请问哪出问题了?算法没错?
[ 本帖最后由 maxdison 于 2010-4-1 20:37 编辑 ]