本實例演示使用函數指針根據輸入數字奇偶性,動態選擇調用不同函數計算調和級數部分和。
evenumber(n) 計算 1/2 + 1/4 + ... + 1/n(n 為偶數),oddnumber(n) 計算 1/1 + 1/3 + ... + 1/n(n 為奇數)。double (*pfunc)(int),根據 n%2 指向對應函數。(*pfunc)(n) 得到結果並輸出。// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
double evenumber(int n);
double oddnumber(int n);
int main() {
int n;
double r;
double (*pfunc)(int);
printf("請輸入一個數字:");
scanf("%d", &n);
if (n % 2 == 0)
pfunc = evenumber;
else
pfunc = oddnumber;
r = (*pfunc)(n);
printf("%lf\n", r);
system("pause");
return 0;
}
double evenumber(int n) {
double s = 0, a = 0;
int i;
for (i = 2; i <= n; i += 2) {
a = (double)1 / i;
s += a;
}
return s;
}
double oddnumber(int n) {
double s = 0, a = 0;
int i;
for (i = 1; i <= n; i += 2) {
a = (double)1 / i;
s += a;
}
return s;
}
請輸入一個數字:
2
0.500000
if-else。