编辑代码

#include <stdio.h>
int main () 
{
    unsigned int i,n=100;
    unsigned int t=1;
    float f_pi=2.0,f_i=1.0;
    double d_pi=2.0,d_i=1.0;
    long double ld_pi=2.0,ld_i=1.0;
    printf("输入计算的迭代次数(0~4294967295):");
    scanf("%u",&n);
    printf("选择数据类型:1-float,2-double,3-long double:");
    scanf("%u",&t);
    for(i=0;i<n;i++)
    {
        switch(t)
        {
            case 1:
                f_pi*=4.0*f_i*f_i/(2*f_i-1)/(2*f_i+1);
                f_i+=1.0;
                break;
            case 2:
                d_pi*=4.0*d_i*d_i/(2*d_i-1)/(2*d_i+1);
                d_i+=1.0;
                break;
            case 3:
                ld_pi*=4.0*ld_i*ld_i/(2*ld_i-1)/(2*ld_i+1);
                ld_i+=1.0;
                break;
        }
    }
    switch(t)
    {
        case 1:
            printf("迭代%u次,pi近似为:%.8f\n",n,f_pi);
            break;
        case 2:
            printf("迭代%u次,pi近似为:%.16f\n",n,d_pi);
            break;
        case 3:
            printf("迭代%u次,pi近似为:%.20Lf\n",n,ld_pi);
            break;
    }
    return 0;
}