c语言求π问题
问题用下列公式求 p 的近似值。π/4=1-1/3+1/5-1/7+........ 直到最后一项的绝对值小于10-7为止。不懂就问,我的出啥问题了?#include <stdio.h>#include<math.h>int main() {int i;double a,b,sum; for(i=0;fabs(1/(2*i+1)*pow(-1,i))<1e-7;i++) { sum+=1/(2*i+1)*pow(-1,i); } a=4*(sum+1); printf("%lf",a);return 0;}
最大的问题,循环条件你都是错的,i为0时,fabs(1/(2*i+1)*pow(-1,i))<1e-7;初始肯定不成立的(前面的结果为1),循环直接退出了
另外的大问题,你对C的类型运算没有了解,在c语言中,整形的1/i,只要i>1,结果恒为0
还有,sum没有初始值,它是随机的,可能是任何数
最后你的+1是多余的
正确的程序(按你的算法)
再有,你的程序可优化,根本不用任何数学函数的(pow,fabs都不用),我写的
效率比你的高很多的
热门标签: