回顾:计算器分派
本课属于 Coddy C 学习旅程的“面向对象编程”单元。第 37 课,共 61 课。
挑战
简单使用分发表创建一个计算器。你将创建一个函数指针数组,把运算代码映射到对应的函数,然后用它进行计算。
编写一个程序,完成以下操作:
- 创建一个名为
typedef的Operation,用于定义一个函数指针,该函数接受两个int参数并返回一个int - 定义四个算术函数:
add:返回 a + bsub:返回 a - bmul:返回 a * bdivide:返回 a / b(整数除法)
- 在
main中创建一个分发表:一个包含 4 个Operation函数指针的数组,其中索引 0 对应 add,索引 1 对应 sub,索引 2 对应 mul,索引 3 对应 divide - 读取三个输入:两个整数和一个运算代码(0-3)
- 使用运算代码索引分发表,并调用对应的函数
- 输出结果
你会收到三个输入:第一个数字、第二个数字和运算代码(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 在线编译器