#include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ float s=1; float pi=0; float i=1.0; float n=1.0; while(fabs(i)>=1e-6){ pi+=i; n=n+2; // 这里设计的很巧妙,每次正负号都不一样 s=-s; i=s/n; } pi=4*pi; printf("pi的值为:%.6f\n",pi); return 0; }运行结果:
pi的值为:3.141594上面的代码,先计算π/4的值,然后再乘以4,s=-s; 用的很巧妙,每次循环,取反,结果就是,这次是正号,下次就是负号,以此类推。
#include <stdio.h> #include <math.h> int main(){ float pi=1; float n=1; int j; for(j=1;j<=100;j++,n++){ if(j%2==0){ pi*=(n/(n+1)); }else{ pi*=((n+1)/n); } } pi=2*pi; printf("pi的值为:%.7f\n",pi); return 0; }运行结果:
pi的值为:3.1260781
#include <stdio.h> #include <math.h> int main(){ float term,result=1; int n; for(n=2;n<=100;n+=2){ term=(float)(n*n)/((n-1)*(n+1)); result*=term; } printf("pi的值为:%f\n", 2*result); return 0; }运行结果:
pi的值为:3.126079算法思想:采用累乘积算法,累乘项为term=n*n/((n-1)*(n+1)); n=2,4,6,...100。步长为2。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有