C语言练习题-C语言练习题实例76
![](https://wx.javatiku.cn/j/j301-t.jpg)
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。
程序分析:根据输入的 n 的奇偶性,选择调用不同的函数来计算相应的数列和。
实例
#include<stdio.h>
#include<stdlib.h>
double evenSum(int n);
double oddSum(int n);
int main() {
int n;
double result;
double (*sumFunc)(int);
printf("请输入一个数字:");
scanf("%d", &n);
if (n % 2 == 0)
sumFunc = evenSum;
else
sumFunc = oddSum;
result = (*sumFunc)(n);
printf("%lf\n", result);
system("pause");
return 0;
}
double evenSum(int n) {
double sum = 0;
int i;
for (i = 2; i <= n; i += 2) {
sum += 1.0 / i;
}
return sum;
}
double oddSum(int n) {
double sum = 0;
int i;
for (i = 1; i <= n; i += 2) {
sum += 1.0 / i;
}
return sum;
}
以上实例运行输出结果为:
请输入一个数字:2
0.500000
在上述代码中,我们首先通过 scanf()
函数从用户输入读取一个整数 n
。
然后,我们声明了两个函数 evenSum()
和 oddSum()
,分别用于计算偶数和奇数情况下的数列和。这两个函数接受一个整数参数 n
,并返回相应的数列和。
在 main()
函数中,我们根据输入的 n
的奇偶性,选择调用相应的函数。我们使用一个函数指针 sumFunc
来指向被选择的函数。然后,我们通过 (*sumFunc)(n)
来调用该函数,并将计算结果存储在变量 result
中。
最后,我们使用 printf()
函数输出计算结果。
以上实例运行时,会要求用户输入一个整数 n
。如果 n
为偶数,则程序会计算并输出 1/2+1/4+...+1/n 的和;如果 n
为奇数,则程序会计算并输出 1/1+1/3+...+1/n 的和。例如,如果用户输入 2
,则程序会输出 0.500000
。