求圆周率pi的近似值(C语言)

题目:

求圆周率pi的近似值,直到发现某一项的绝对值小于10的负6次方为止。

要求:

输出的结果总宽度占10位,其中小数部分为8位;程序中定义浮点型数据时,请定义为双精度double型。

提示:

pi/4=1-1/3+1/5-1/7+···


可得到结果的代码:

#include<stdio.h>
#include<math.h>
int main()
{
    double sum=0,x=1,n=1,f=1,pi;
    while(fabs(n)>=1e-6){
        sum=sum+x*n;
        x=-x; 
        f=f+2;//分母 
        n=1/f;//未添加系数的第n项 
    }
    pi=sum*4;
    printf("PI=%10.8f\n",pi);
    return 0;
}

 

找到更简捷的代码:

#include<stdio.h>
#include<math.h>
int main()
{
    double sum=0,x=1,f=1,n=1,pi;
    while(fabs(n)>=1e-6){
        sum=sum+n;
        x=-x;
        f=f+2;
        n=x/f;//以系数为分子,f为分母得到第n项 
    }
    pi=sum*4;
    printf("PI=%10.8f\n",pi);
    return 0;
}

运行结果:

PI=3.14159065

解这题时曾:

误认为if语句是循环结构,

在if语句(条件语句)中误用break。

 

猜你喜欢

转载自blog.csdn.net/llllll_____/article/details/81178358