我用的for循环为什么实现出来结果跟答案不一样,下面是我的代码,注释部分是答案的代码。
#include
#include
int main()
{
int i;
double pi,sum=0.0;
for(i=1;1/(i*i)>=1e-5;i++)
{
sum+=1/(i*i);
}
pi=sqrt(sum*6);
printf("%lf",pi);
}
/*
#include
#include "math.h"
int main()
{
double pi,sum=0.0;
int i=1;
while(1.0/(i*i)>=1e-5)
{
sum = sum + 1.0/(i*i);
i++;
}
pi = sqrt(sum*6);
printf("近似值为%lf",pi);
return 0;
}*/
由于int型与int型运算还是int型,所以sum+=1/(ii);当i>=2时,1/(ii)就是0了,所以最终sum=1,而你最终的答案是sqrt(1*6)
题目要求某项的值小于10的-5次方为止,但你的for循环要求所有项都大于10的-5次方,所以你的少了最后一项
int main(void)
{
int i=1;
double pi,sum=0.0,item=0;
do
{
item = 1.0/(i*i);
sum += item;
i++;
}while(item >= 1e-5);
pi=sqrt(sum*6);
printf("%lf",pi);
return 0;
}
for循环运行出来得2.4多,while 循环出来是3.13
你这代码明显不对呀
for循环里,i是int型,除法也是int型的除法,i=2的时候1/(i*i)就是0了,
最终sum=1
sum*6=6
根号6不是2.45吗