C语言学习-菜鸟教程C经典100例-练习76
题目
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。
思路
- 定义两个函数分奇偶数;
- 使用指针根据n的奇偶性指向不同函数;
- 调用函数指向相应的计算函数
代码
c
#include <stdio.h>
double sum_even(int n); // 计算偶数序列和
double sum_odd(int n); // 计算奇数序列和
int main(){
int n;
printf("请输入一个正整数n :");
scanf("%d", &n);
if(n <= 0){
printf("错误!请输入一个正整数!\n");
return 1;
}
// 定义函数指针
double (*sum_func)(int);
// 根据n的奇偶性指向不同函数
if(n%2 == 0){
printf("n为偶数,计算:1/2 + 1/4 + ... + 1/n\n");
sum_func = sum_even; // 指向偶数序列和函数
}else{
printf("n为奇数,计算:1/1 + 1/3 + ... + 1/n\n");
sum_func = sum_odd; // 指向奇数序列和函数
}
// 调用函数
double result = sum_func(n);
printf("结果为:%.6f\n", result);
return 0;
}
// 定义偶数序列和函数
double sum_even(int n){
double sum = 0.0;
for(int i=2; i<=n; i+=2){
sum = sum + 1.0/i;
}
return sum;
}
// 定义奇数序列和函数
double sum_odd(int n){
double sum = 0.0;
for(int i=1; i<=n; i+=2){
sum = sum + 1.0/i;
}
return sum;
}
输出结果
c
请输入一个正整数n :2
n为偶数,计算:1/2 + 1/4 + ... + 1/n
结果为:0.500000
请输入一个正整数n :3
n为奇数,计算:1/1 + 1/3 + ... + 1/n
结果为:1.333333