首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 函數指針陣列實現計算器:命令行參數選擇運算、動態分發

     編輯:程式設計疑難解答

題目需求

命令行參數:運算符選擇 (1~4)、兩整數。使用函數指針陣列分發 add/sub/mul/div。

完整代碼

#include <iostream>
using namespace std;

int add(int x, int y) { return x + y; }
int sub(int x, int y) { return x - y; }
int mul(int x, int y) { return x * y; }
int div(int x, int y) { return y ? x / y : 0; }

int main() {
    int (*pf[4])(int, int) = { add, sub, mul, div };
    while (true) {
        cout << "0.add 1.sub 2.mul 3.div 4.exit\nSelect: ";
        int op; cin >> op;
        if (op == 4) break;
        cout << "Operands: "; int a, b; cin >> a >> b;
        cout << "Result = " << pf[op](a, b) << endl;
    }
    return 0;
}

關鍵點

  • int (*pf[4])(int, int):函數指針陣列,每元素指向同簽名函數。
  • pf[op](a, b):透過索引動態調用,消除 switch/if 分支。
  • 除法檢查除數為零。

擴展:命令行參數版

int main(int argc, char* argv[]) {
    if (argc != 4) return 1;
    int op = atoi(argv[1]);
    int a = atoi(argv[2]);
    int b = atoi(argv[3]);
    if (op >= 0 && op < 4) cout << pf[op](a, b) << endl;
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved