#include <stdio.h>
double fun(int n) {
double sum = 0;
for (int i = 1; i <= n; i++) {
sum += 1.0 / i;
}
return sum;
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("1+1/2+1/3+1/4+……+1/%d=%lf\n", n, fun(n));
return 0;
}
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数 求1/1+1/3+…+1/n(要求利用函数指针编程)
程序运行示例1如下:
10
Even=1.141666
程序运行示例2如下:
9
Odd=1.787302
#include <stdio.h>
#include <stdlib.h>
double oushu(int n);
double jishu(int n);
int main()
{
int n;
double (*p)(int);
scanf("%d",&n);
if(n%2==0){
p=oushu;
double r=(*p)(n);
printf("Even=%lf\n",r);
}
else{
p=jishu;
double r=(*p)(n);
printf("Odd=%lf\n",r);
}
}
double oushu(int n)
{
double sum=0;
int i;
for(i=2;i<=n;i++){
if(i%2==0)
sum+=(double)1/i;
}
return sum;
}
double jishu(int n)
{
double sum=0;
int i;
for(i=1;i<=n;i++){
if(i%2!=0)
sum+=(double)1/i;
}
return sum;
}