题目
编写一个函数,当输入n为偶数时调用函数求1/2+1/4+…+1/n,当为奇数时求1/1+1/3+…+1/n(利用指针函数)
#include <stdio.h>
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;
}