C语言习题, 求指导根据以下公式求π的近似值,直到最后一项的绝对值小于10-5为止π/61/1+1/2+1/3+1/4+....+1
C语言习题, 求指导
根据以下公式求π的近似值,直到最后一项的绝对值小于10-5为止
π²/6=1/1²+1/2²+1/3²+1/4²+....+1/n²
请给出程序源码:
#include "math.h"
#include "stdio.h"
float square(n)
{
float square;
square=1/(n*n);
return (square);
}
void main()
{
int n;
float sum;
sum=0;
for(n=1;square(n)>=0.00001;n++)
sum=sum+square(n);
sum=sqrt(6*sum);
printf("%f\n",sum);
}
结果不对啊, 到底是哪错了。 求解啊
[解决办法]
- C/C++ code
#include "math.h"#include "stdio.h"float square(int n)//参数的类型没写{ float square; square=1.0/(n*n);//浮点型除法,用1的话每次除的小数会被舍去 return (square);}void main(){ int n; float sum; sum=0; for(n=1;square(n)>=0.00001;n++) sum=sum+square(n); sum=sqrt(6*sum); printf("%f\n",sum);}
[解决办法]
改
square=1/(n*n);
为
square=1.0/(n*n);
隐式转换问题,上面的表达式,会用整形运算,结果肯定不对了
