c语言问题,圆周率近似值π=4-4/3+4/5-4/7+4/9……,回答程序要计算多少项才能得到数值3.14 3.141 3.1415
#include<stdio.h>#include<math.h>#defineEpsilon0.00001main(){intk,x1,x2,x3,x4;doubles...
#include <stdio.h>
#include <math.h>
#define Epsilon 0.00001
main()
{
int k,x1,x2,x3,x4;
double s,t;
s=0.0;
k=1;
t=4;
while (fabs(t)>=Epsilon)
{
s+=t;
if(((int)(s*100-314)==0)&&fabs(s-3.14)<0.005)
x1=k-1;
if(((int)(s*1000-3141)==0)&&fabs(s-3.141)<0.0005)
x2=k-1;
if(((int)(s*10000-31415)==0)&&fabs(s-3.1415)<0.00005)
x3=k-1;
if(((int)(s*100000-314159)==0)&&fabs(s-3.14159)<0.000005)
x4=k-1;
t=-t*(2*k-1)/(2*k+1);
k++;
}
printf("%.5lf\n",s);
printf("%d,%d,%d,%d\n",x1,x2,x3,x4);
}
这个是我写的程序,求指出错误O.O
要是能帮忙改正就更好了T T
谢谢各位求帮助 展开
#include <math.h>
#define Epsilon 0.00001
main()
{
int k,x1,x2,x3,x4;
double s,t;
s=0.0;
k=1;
t=4;
while (fabs(t)>=Epsilon)
{
s+=t;
if(((int)(s*100-314)==0)&&fabs(s-3.14)<0.005)
x1=k-1;
if(((int)(s*1000-3141)==0)&&fabs(s-3.141)<0.0005)
x2=k-1;
if(((int)(s*10000-31415)==0)&&fabs(s-3.1415)<0.00005)
x3=k-1;
if(((int)(s*100000-314159)==0)&&fabs(s-3.14159)<0.000005)
x4=k-1;
t=-t*(2*k-1)/(2*k+1);
k++;
}
printf("%.5lf\n",s);
printf("%d,%d,%d,%d\n",x1,x2,x3,x4);
}
这个是我写的程序,求指出错误O.O
要是能帮忙改正就更好了T T
谢谢各位求帮助 展开
3个回答
展开全部
#include <stdio.h>
#include <math.h>
#define Epsilon 0.00001
main()
{
int x1 = 0, x2 = 0, x3 = 0, x4 = 0;
double s, t, k;
s = 0.0;
k = 1;
t = 4;
while (fabs(t) >= Epsilon)
{
s += t;
if (((int)(s * 100 - 314) == 0) && (fabs(s - 3.14) < 0.005) && (x1 == 0))
x1 = k - 1;
if (((int)(s * 1000 - 3141) == 0) && (fabs(s - 3.141) < 0.0005) && (x2 == 0))
x2 = k - 1;
if (((int)(s * 10000 - 31415) == 0) && (fabs(s - 3.1415) < 0.00005) && (x3 == 0))
x3 = k - 1;
if (((int)(s * 100000-314159) == 0) && (fabs(s - 3.14159) < 0.000005) && (x4 == 0))
x4 = k - 1;
t = -(t * (2 * k - 1)/(2 * k + 1));
k++;
}
printf("%d, %d, %d, %d\n", x1, x2, x3, x4);
}
追问
这个得出来的答案不对啊。。。
追答
上面的没有修改你的算法:
#include <stdio.h>
#include <math.h>
#define Epsilon 1e-6
int main()
{
int x1 = 0, x2 = 0, x3 = 0, x4 = 0;
double s, t, k;
int flag = 1;
s = 0.0;
k = 1;
t = 4;
while (flag)
{
s += t;
if ((fabs(s - 3.14) < Epsilon) && (x1 == 0))
x1 = k - 1;
if ((fabs(s - 3.141) < Epsilon) && (x2 == 0))
x2 = k - 1;
if ((fabs(s - 3.1415) < Epsilon) && (x3 == 0))
x3 = k - 1;
if ((fabs(s - 3.14159) < Epsilon) && (x4 == 0))
x4 = k - 1;
t = -(t * (2 * k - 1)/(2 * k + 1));
k++;
if (x1 != 0 && x2 != 0 && x3 != 0 && x4 != 0)
flag = 0;
}
printf("%d, %d, %d, %d\n", x1, x2, x3, x4);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Epsilon 0.00001
int ans(float x,int y)
{float s=0;
int flag=1,i,j,t1,t=x*100;
for(i=0,j=1;;i++,j=j+2,flag=-flag)
{
s=s+flag*4.0/j;
if((int)(s*y-x*y)==0&&fabs(s-x)<Epsilon)//你的条件是这个哇?
break;
}
printf("%.kf\n",y,s);
return i;
}
main()
{
int k,x1,x2,x3,x4,flag=1;
x1=ans(3.14,100);
x2=ans(3.141,1000);
x3=ans(3.1415,10000);
x4=ans(3.14159,10000);
printf("%d,%d,%d,%d\n",x1,x2,x3,x4);
}
#include <stdlib.h>
#include <math.h>
#define Epsilon 0.00001
int ans(float x,int y)
{float s=0;
int flag=1,i,j,t1,t=x*100;
for(i=0,j=1;;i++,j=j+2,flag=-flag)
{
s=s+flag*4.0/j;
if((int)(s*y-x*y)==0&&fabs(s-x)<Epsilon)//你的条件是这个哇?
break;
}
printf("%.kf\n",y,s);
return i;
}
main()
{
int k,x1,x2,x3,x4,flag=1;
x1=ans(3.14,100);
x2=ans(3.141,1000);
x3=ans(3.1415,10000);
x4=ans(3.14159,10000);
printf("%d,%d,%d,%d\n",x1,x2,x3,x4);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询