首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言實例練習

C語言練習實例76:函數指針實現奇偶數列求和

     編輯:C 語言實例練習

C語言練習實例76:函數指針實現奇偶數列求和

本實例演示使用函數指針根據輸入數字奇偶性,動態選擇調用不同函數計算調和級數部分和。

程序分析

  • 定義兩個函數: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。
  • 可作為回調函數傳遞,靈活性高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved