回复 10# 的帖子
谢谢了,改过就可以了。 ----------------解决方案--------------------------------------------------------
你的Y是负值啊
----------------解决方案--------------------------------------------------------
π/4≈1-1/3+1/5-1/7+...求π值 直到某一项的绝对值小与10的-6次方为止
#include<stdio.h>
main(void)
{
double a;
int i,n=1;
for(i=3;1/i>1/1000000;i+=2)
{
a=1+((-1)^n)/i;
n=n+1;
}
print("pi is:",4*a);
}
----------------解决方案--------------------------------------------------------
嗯..回复你们问题
对于.楼上的问题嘛..嗯..你们都有前途.都可以成为下代的李俊先生. ----------------解决方案--------------------------------------------------------
我也是新手编写了以下程序,希望大家帮忙看看还有什么欠缺!!!
#include "stdio.h"
void main()
{
float a,pi;
int i,k=-1;
for(i=1;(1.0/i)>=0.000001;i++,i++)
{
a=a+1.0/i;
a=a*k;
}
pi=a*4;
printf("%f",pi);
}
----------------解决方案--------------------------------------------------------
一种方法,运行过了,可以的。
#include<stdio.h>void main()
{
int i=0;
double x,m,n,s;
for (x=3; x<100000; x=x+2)
{
i++;
if((i%2) != 0)
m=m+1/x;
else
n=n+1/x;
}
s=4*(1-m+n);
printf("pi is %f\n",s);
}
----------------解决方案--------------------------------------------------------
回复 10# 的帖子
类型转换时double>float>int>char所以a=1/(i*2+1);只能是0,只要将表达式中的任一变量或常最强制转换为double即可.如:
a = 1/((double)i*2 + 1)
a = 1/(i*2 + (double)1)
......
----------------解决方案--------------------------------------------------------
[bc05] 把x和y的类型改为float试试,因为如果它们是int类型的话,1/x+4的值就会变成(int)1/5=0,m=1/(x+4)+m的值就等于0.y的道理一样.这样你计算s=4*(1+m-n)的值就是4*1=4.000000了.实际上,每个for循环只进行了一次,就是当x=1的时候循环了,当下一次x=5的时候,1/x=0了,循环条件1/x>1/1000000不满足了,就不再执行循环.y的情况类似.
[bc08] 具体的程序我没有运行,但是我认为应该是这样的.如果还是不对,自己就再想想.不难的,一开始学都这样,不太注意细节,往往会出错,以后注意就是了.
----------------解决方案--------------------------------------------------------
#include<stdio.h>
{ int i;
float s,pa=1.0;
for(i=1;i<-1;i++)
{ s=1/(i*2.0+1.0);
if(s<=1/1000000)
break;
if(i%2!=0)
s=-s;
pa=s+pa;}
pa=pa*4;
printf("%f",pa);
}
各位我的答案为什么是3.141568,和前几位差了点,这是不是说明我错了啊
错在哪里呢,望各位大虾指出,谢谢啊~~~[bc08]
----------------解决方案--------------------------------------------------------
没错,无限接近的,在于取值。
----------------解决方案--------------------------------------------------------