关于C语言的一道题
求大神!目前还不会阿。:cry #include<stdio.h>
void main()
{
int n,i=1,b;
float pi=0,t,a=1;
printf("n=");
scanf("%d",&n);
while(i<=n)
{
pi=pi+a;
++i;
b=1+2*(i-1);
t=(i-1)*1.0/b;
a=a*t;
}
printf("n=%dpi=%f\n",n,pi);
} n是和的个数,越大越精确pi是π/2想得到π,再乘个2就行了 效果截图:
程序代码如下:
#include <stdio.h>
//求圆周率近似值函数,n越大越准确
double CalPai(int n)
{
double sum;
if(n<2)
{
return 1*2;
}
if(n<3)
{
return (1+1.0/3)*2;
}
if(3==n)
{
return (1+1.0/3+(1.0/3)*(2.0/5))*2;
}
sum=1+1.0/3+(1.0/3)*(2.0/5);//前3项和
double a=2; //分子
double b=5; //分母
double ab=(1.0/3)*(2.0/5);//第三项
for(int i=3;i<n;i++)
{
ab*=(a+1)/(b+2);
sum+=ab;
a++; //分子加1
b+=2; //分母加2
}
return sum*2;
}
void main ()
{
printf("%-6d项和时,计算圆周率结果为:%f\n",1,CalPai(1));
printf("%-6d项和时,计算圆周率结果为:%f\n",2,CalPai(2));
printf("%-6d项和时,计算圆周率结果为:%f\n",3,CalPai(3));
printf("%-6d项和时,计算圆周率结果为:%f\n",10,CalPai(10));
printf("%-6d项和时,计算圆周率结果为:%f\n",10000,CalPai(10000));
printf("%-6d项和时,计算圆周率结果为:%f\n",99999999,CalPai(99999999));
}
版主帮我选最佳答案吧:dizzy: friendan 发表于 2013-11-13 00:09 static/image/common/back.gif
效果截图:
printf("%-6d项和时,计算圆周率结果为:%.20f\n",1,CalPai(1));
printf("%-6d项和时,计算圆周率结果为:%.20f\n",2,CalPai(2));
printf("%-6d项和时,计算圆周率结果为:%.20f\n",3,CalPai(3));
printf("%-6d项和时,计算圆周率结果为:%.20f\n",10,CalPai(10));
printf("%-6d项和时,计算圆周率结果为:%.20f\n",10000,CalPai(10000));
printf("%-6d项和时,计算圆周率结果为:%.20f\n",99999999,CalPai(99999999)); void main()
{
int a = 1.0, b = 3.0,
j = 1.0\3.0, pi = 2.0;
printf("输入一个数");
scanf("%d", &n);
float p (int n);
pir= p(n);
printf("pi = %f",pir);
}
if (n = 1)
{
pir= pi;
}
float p (int n)
{
for(int i = 2; i<=n;++i)
{
j *= a\b;
pir += 2*j;
++a, b += 2;
return pir;
}
retrun p;
}我身边占时还没有编译器,也不知道对不对,请哪位大神帮忙看看哪个地方错了。 我的求助里面有道类似的题,你可以去参考一下, 顶一个{:1_1:}{:1_1:}{:1_1:}{:1_1:} 此题好像可以用一个递归函数来实现,这样代码量或许就会少点。 本帖最后由 cyshhm 于 2013-11-16 15:15 编辑
楼主你的题是错的 你的分子增加 明显快于 分母 后面加的数字会不断怎大
你这个计算π的公司是错的
你这个书上的题印错了 是盗版的吧
我记得以前我做题的时候 计算π 是一个加一个减
分子所乘的数是1 1 2 3 5 8 13 21这样增长
分母是1 3 5 7 9 这样增长的
所以你这个题是错误的
#include<stdio.h>
void main()
{
int n,i=1;
double pi=0,t,a=1,b;
printf("n=");
scanf("%d",&n);
while(i<=n)
{
pi=pi+a;
b=1+2*i;
t=i/b;
a=a*t;
i+=1;
}
printf("pi=%lf\n",pi);
}
怎么感觉跟高数课本上的有道题很像呢
页:
[1]