C语言编程,错在哪儿了?这是求pai π 的值得,精度0.0005时跳出迭代。 谢谢。

#include <stdio.h>
int ok(int a)
{
int s,b;
s=1;
for(b=1;b<=a;b++)
{
s=s*b;
}
return s;
}
int fun(int a)
{
int s,b;
s=1,b=1;
while(b!=2*a+1)
{
b=b+2;
s=s*b;
}
return s;
}
main()
{
int n,s;
float PI=0,esp;
printf("Please input 精度:");
scanf("%f",&esp);
for(n=1;;n++)
{
s=ok(n)/fun(n);
if(s<esp)break;
PI=1+s+PI;
}
printf("π的值是:%f\n",PI);
}

两个函数不能一起用么?定义的函数好像没问题。
哦 我好像忘了乘以2了,这是我的问题。但是还是错的。输出为0

#include <stdio.h>
int ok(int a)
{
int s,b;
s=1;
for(b=1;b<=a;b++)
{
s=s*b;
}
return s;
}
int fun(int a)
{
int s,b;
s=1,b=1;
while(b!=2*a+1)
{
b=b+2;
s=s*b;
}
return s;
}
main()
{
int n;
float PI=1,esp,s; //pi初始化为1,s定义为float类型
printf("Please input 精度:");
scanf("%f",&esp);
for(n=1;;n++)
{
s=(float)ok(n)/fun(n); //这里加强制类型转换
if(s<esp)break;
PI=s+PI;
}
printf("π的值是:%f\n",2*PI);//这里乘2,ok
}追问

你改的也太少啦。。。总觉得有点虚。只有那里点错了么?

追答

什么我改的太少了。。。你错了多少,我就改多少

追问

奇怪了 咋个和实际的3.1415926偏差那么大?3.148974?!

追答

你检查你上面两个函数是否有问题。。。这总不要我看吧。。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网