为什么这调用函数里s1=s1*n/(2*n+1);变成 s1=s1*(n/(2*n+1));结果就变了?
#include
#include
double fun ( double eps)
{
double s=1.0,s1=1.0;
int n=1;
while(s1>=eps)
{
s1=s1*n/(2*n+1);
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) ;
}
人气:104 ℃ 时间:2019-10-23 16:25:16
解答
s1=s1*n/(2*n+1);原因在于n设置的类型为int,不加括号时相当于s1=(s1*n)/(2*n+1);也就是s1=double/int所以结果自动转换为double型,就相当于是double/double,所以结果可以是小数.s1=s1*(n/(2*n+1));而(n/(2*n+1))加括...
推荐
- 点P(3,a)是函数y=-2/x图像上的一点,过点P分别作x轴和y轴的垂线,两条垂线与座标轴围成的矩形面积为S1;点Q(b,6)也是此函数图像的一点,过点Q分别作x轴和y轴的垂线,两条垂线与坐标轴围成的矩形面积为S2.求a、b、S1、S2的
- 已知数列{an}的前n项和为Sn,S1=1且对任意的n(为正整数),点(n,Sn)均在函数y=2x+r(r为常数)的图像上
- 结尾“南阳诸葛庐,西蜀子云亭.孔子云:“何陋之有?”有什么作用?
- 已知等腰三角形一腰上的中线将三角形的周长分为9厘米和15厘米两部分,求这个三角形的腰长和底边长.
- 小学立体图形之间的关系
- 初一下册数学几何题练习 带图
- 描写操场上很热闹的四字成语
- 谁能告诉我40个动词并写出它的过去式,现在分词?
猜你喜欢
- 判断下列物质熔点由低到高的顺序,并简述理由:
- 一个数减少它的20%后是80,这个数是多少?甲数的25%与乙数的75%相等,乙数是40,甲数是多少?
- 什么是蓄电池的额定容量?影响因素有哪些?
- 把103只乒乓球放进两个盒子,每个大盒子装12只,每个小盒子装5只,恰好装完,两种盒子各有多少?
- 信息技术的发展给我们的生活带来巨大的影响.你还对生活中的哪些变化感兴趣?请你开展调查,并将收集到的信息进行整理,将调查结果简单记录下来.
- 一根电线正好在一个圆棒上绕满20周,每圈的直径是8厘米,这根电线长的1/4是多少分米?
- 】x^2y^2-5x^2y-6x^2
- 生物的基本分类单位?