|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题在fun函数的循环那。输入精度为0.0005。求π的值。
第一个程序输出结果为3.140578。
第二个程序输出结果为3.141106。
#include <stdio.h>
#include <math.h>
double fun ( double eps)
{
double s=1.0,s1=1.0,t,r;
int n=1;
while(s1>eps)
{
t=s1*n;r=2*n+1;
s1=t/r;
s=s+s1;
n++;
}
return 2*s;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
double x ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%lf", &x) ;
fprintf(wf, "%lf\n", fun(x)) ;
}
fclose(fp) ;
fclose(wf) ;
}
#include <stdio.h>
#include <math.h>
double fun ( double eps)
{
double m, n, s;
int i;
s=1.0;m=3.0;n=1.0;
for(i = 2; n/m > eps; i++)
{
s = s + n/m;
n = n * i;
m = m * (2*i+1);
}
return 2*s;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
double x ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%lf", &x) ;
fprintf(wf, "%lf\n", fun(x)) ;
}
fclose(fp) ;
fclose(wf) ;
}
|
|