【问题描述】
通过键盘输入大于1的正整数n,当n为偶数时计算 1+1/2+1/4+…+1/n的值;当n为奇数时,计算1+1/3+1/5+…+1/n 的值。
【参考代码】
#include <stdio.h>
float call(float (*p)(), int n)
{
float s;
s = (*p)(n);
return s;
}
float even(int n)
{
float s=0;
int i=1;
while (i <= n)
{
s = s + 1 / (float)i;
i = i * 2;
}
return s;
}
float over(int n)
{
float s = 0;
int i = 1;
while (i <= n)
{
s = s + 1 / (float)i;
i = i + 2;
}
return s;
}
int main()
{
float sum = 0;
int n;
printf("请输入n:");
scanf("%d", &n);
if (n % 2 == 0) sum=call(even, n);
else sum=call(over, n);
printf("%.2f", sum);
return 0;
}