#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
}追问
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?!
追答你检查你上面两个函数是否有问题。。。这总不要我看吧。。
温馨提示:答案为网友推荐,仅供参考