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
谢谢各位求帮助
展开
 我来答
匿名用户
2014-03-28
展开全部

        Dim 累积 As Double = 4, 次数 As Int16 = 1

        For Each 序 In Enumerable.Range(1, 10000).Select(Function(x) x * 2 + 1)

            If 次数 Mod 2 = 0 Then 累积 += 4 / 序 Else 累积 -= 4 / 序

            次数 += 1

            Console.WriteLine("{0}次 {1}", 序, 累积)

            If 累积.ToString().Contains("3.14") = True Then Exit For

        Next

参考

huliyuputao
2014-03-28 · TA获得超过1912个赞
知道小有建树答主
回答量:728
采纳率:0%
帮助的人:227万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
benben王胜
2014-03-28 · 超过27用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:62.3万
展开全部
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式