C语言求圆周率

Description
祖冲之是世界上第一位将圆周率准确地推算到小数点后七位数值的科学家,并将这一纪录在世界上保持了一千年之久。 祖冲之按照刘徽的割圆术之法,设了一个直径为一丈的圆,在圆内切割计算。当他切割到圆的内接一百九十二边形时,得到了“徽率”的数值。但他没有满足,继续切割,作了三百八十四边形、七百六十八边形……一直切割到二万四千五百七十六边形,依次求出每个内接正多边形的边长。最后求得直径为一丈的圆,它的圆周长度在三丈一尺四寸一分五厘九毫二秒七忽到三丈一尺四寸一分五厘九毫二秒六忽之间,上面的那些长度单位我们现在已不再通用,但换句话说:如果圆的直径为1,那么圆周小于3.1415927、大 大不到千万分之一,它们的提出,大大方便了计算和实际应用。 现在你有了计算机了,你是不是可以比祖冲之更厉害?你能求出圆周率吗? 现在我们可以利用公式pai/4=1-1/3+1/5-1/7+...求pai的近似值,直到某一项的绝对值小于或等于某个数f为止,我们可以通过控制f的大小来提高pai的精确性(注意:pai应该为double型)

注意:用于求和的变量pi必须是double,若是float,则出错。某个数据f必须是float.

Input
有多组测试数据,每组测试数据一行。 该行输入一个小数f(小数点后最多6位).

Output
输出利用pai/4=1-1/3+1/5-1/7+...公式直到最后一项的绝对值小于f为止后求出的pai值(保留6位小数)

Sample Input
2
1
0.34
Sample Output
4.000000
2.666667
2.666667
HINT
用do{ }while();循环更 方便些

第1个回答  2018-09-21
#include <>

int main()
{
    float f;
    double pi,i,sign;
    while(scanf("%f",&f)==1)
    {
        pi=0;
        i=1;
        sign=1;
        do
        {
            pi+=sign*1.0/i;
        }while(1.0/i>=f&&(sign=-sign)&&(i+=2));
        printf("%lf\n",pi*4.0);
    }
    return 0;
}

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网