编写一个函数,当输入n为偶数时调用函数求1/2+1/4+...+1/n, 当为奇数时求1/1+1/3+...+1/n(利用指针函数)

题目

编写一个函数,当输入n为偶数时调用函数求1/2+1/4+…+1/n,当为奇数时求1/1+1/3+…+1/n(利用指针函数)

#include 
float pEven(int n) //偶数
{
    float sum = 0;
    for (float i = 2; i <= n; i += 2)
    {
        sum += 1 / i;
    }
    return sum;
}

float pOdd(int n) //奇数
{
    float sum = 0;
    for (float i = 1; i <= n; i += 2)
    {
        sum += 1 / i;
    }
    return sum;
}

float dcall(float (*fp)(int n), int n) //其中float (*p)(int n)是一个指向函数的指针类型,函数的参数是int n,返回值是float
{
    float s = fp(n); //相当于调用了第一个函数指针参数指向的函数
    return s;
}

int main()
{
    int n = 0;
    float sum = 0;
    while (1)
    {
        scanf("%d", &n);
        if (n < 1)
            break;
        else if ((n % 2) == 0)
        {
            printf("Even=");
            sum = dcall(pEven, n);
        }
        else
        {
            printf("Odd=");
            sum = dcall(pOdd, n);
        }
        printf("%f", sum);
    }
    return 1;
}

运行结果

编写一个函数,当输入n为偶数时调用函数求1/2+1/4+...+1/n, 当为奇数时求1/1+1/3+...+1/n(利用指针函数)_第1张图片

你可能感兴趣的:(c语言习题,算法,算法,c语言)