需要先了解一下abs()是对整数取绝对值, 而fabs()是对浮点数取绝对值,保证绝对值小于0.00001
1e-5就是 1*(10的-5次方)即0.00001
第一个数可以看做1/1,所以分母都是以2为公差的等差数列
使用while-do循环的时候,先需要sum的值为1
#include <stdio.h>
#include <math.h>
int main(void){
//while循环是先执行判断再执行循环体
//所以count用来计数一共累加多少个从1开始,n作为分母也从1开始
int n=1,count=1;
//取最后的累加和使用类型为double类型
double sum=1.0,term=1.0,sign=1;
//1e-5就是 1*(10的-5次方)即0.00001
while (fabs(term)>=1e-5){
count++;
sign=-sign;
n=n+2;
term=sign/n;
sum=sum+term;
}
printf("π=%f \n 一共累加项count=%d\n",4*sum,count);
}
方法二使用
do-while循环,先执行循环体再判断条件
第一次循环体先执行了所以
所以初始化的时候sum=0,term=0,count=0
#include <stdio.h>
#include <math.h>
int main(void){
//do-while循环是先执行循环体再判断
//n作为分母也从1开始
//count从0开始,因为第一次执行再do循环体中
int n=1,count=0;
//取最后的累加和使用类型为double类型
//sum就从0开始因为第一次执行再do循环体中
//term也是为0
double sum=0,term=0,sign=1;
//1e-5就是 1*(10的-5次方)即0.00001
do {
term = sign / n;
sum = sum + term;
count++;
sign = -sign;
n = n + 2;
} while (fabs(term) >= 1e-5);
printf("π=%f \n 一共累加项count=%d\n",4*sum,count);
}