c语言用图中公式设计程序,首先输入一个字符,如果不是1到18得整数,则break,如果是,则用图中公式计算e得值到小数点后相应位数

img

你把刚才给你的diam修改一下循环体就可以了啊,显示部分写成函数了,代码如下:

#include <stdio.h>
long long jc(int n)
{
    long long s = 1;
    int i;
    for(i=1;i<=n;i++)
        s*=i;
    return s;
}
double power(int n)
{
    double s=1.0;
    int i=0;
    for(;i<n;i++)
        s/=10;
    return s;
}

void printlongf(double e,int k)
{
    switch(k)
    {
    case 1:
        printf("%.1lf",e);break;
    case 2:
        printf("%.2lf",e);break;
    case 3:
        printf("%.3lf",e);break;
    case 4:
        printf("%.4lf",e);break;
    case 5:
        printf("%.5lf",e);break;
    case 6:
        printf("%.6lf",e);break;
    case 7:
        printf("%.7lf",e);break;
    case 8:
        printf("%.8lf",e);break;
    case 9:
        printf("%.9lf",e);break;
    case 10:
        printf("%.10lf",e);break;
    case 11:
        printf("%.11lf",e);break;
    case 12:
        printf("%.12lf",e);break;
    case 13:
        printf("%.13lf",e);break;
    case 14:
        printf("%.14lf",e);break;
    case 15:
        printf("%.15lf",e);break;
    case 16:
        printf("%.16lf",e);break;
    case 17:
        printf("%.17lf",e);break;
    case 18:
        printf("%.18lf",e);break;
    }
}

int main()
{
    double e=0;
    double r2=1,ex;
    int k;
    char c ;
    while(1)
    {
        c = getchar();
        if(c>=1 && c<=18)
            break;
    }
    ex = power((int)c)/2;
    k = 0;
    while(1)
    {
        r2 = (double)(9*k*k+1)/jc(3*k);
        if(r2 < ex )
            break;
        e += r2;
        k++;
    }
    
    printlongf(e,(int)c);
    return 0;
}

这跟刚才的差不多啊