Menu
CoddyTech

回顾:计算器分派

本课属于 Coddy C 学习旅程的“面向对象编程”单元。第 37 课,共 61 课。

challenge icon

挑战

简单

使用分发表创建一个计算器。你将创建一个函数指针数组,把运算代码映射到对应的函数,然后用它进行计算。

编写一个程序,完成以下操作:

  1. 创建一个名为 typedef 的 Operation,用于定义一个函数指针,该函数接受两个 int 参数并返回一个 int
  2. 定义四个算术函数:
    • add:返回 a + b
    • sub:返回 a - b
    • mul:返回 a * b
    • divide:返回 a / b(整数除法)
  3. 在 main 中创建一个分发表:一个包含 4 个 Operation 函数指针的数组,其中索引 0 对应 add,索引 1 对应 sub,索引 2 对应 mul,索引 3 对应 divide
  4. 读取三个输入:两个整数和一个运算代码(0-3)
  5. 使用运算代码索引分发表,并调用对应的函数
  6. 输出结果

你会收到三个输入:第一个数字、第二个数字和运算代码(0 表示 add,1 表示 sub,2 表示 mul,3 表示 divide)。

输出应为一个整数:运算结果:

7

在这个例子中,输入为 10、3、1:运算代码 1 会从分发表中选中 sub,因此我们计算 10 - 3 = 7。

关键是使用数组索引来选择函数:不需要 if 或 switch 语句。你的分发表应如下所示:

Operation ops[4] = {add, sub, mul, divide};

然后使用以下方式调用函数:ops[code](a, b)

亲手试试

#include <stdio.h>

// TODO: 创建一个名为 'Operation' 的函数指针 typedef
// 它接收两个 int 参数并返回一个 int


// TODO: 定义四个算术函数:add、sub、mul、divide


int main() {
    // 读取输入
    int a, b, code;
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &code);
    
    // TODO: 创建分发表(包含 4 个 Operation 函数指针的数组)
    // Operation ops[4] = { ... };
    
    // TODO: 根据操作代码调用对应的函数
    // 并存储结果
    int result;
    
    // 输出结果
    printf("%d\n", result);
    
    return 0;
}

面向对象编程中的所有课

自己练习: C 在线编译器