c语言如何不用if和switch等判断语句实现简易四则运算

在C语言中实现简易的四则运算而不使用if和switch等判断语句可以借助函数指针数组来实现。以下是一个基本的实现示例,涵盖了加减乘除四种运算:

c
#include <stdio.h> // 定义函数指针类型,该函数接受两个int参数并返回int typedef int (*ArithmeticFunction)(int, int); // 加法函数 int add(int a, int b) { return a + b; } // 减法函数 int subtract(int a, int b) { return a - b; } // 乘法函数 int multiply(int a, int b) { return a * b; } // 除法函数,注意这里未处理除数为0的情况 int divide(int a, int b) { return a / b; } int main() { int a, b; char op; // 函数指针数组,包含了加减乘除四个函数的地址 ArithmeticFunction operations[] = { add, subtract, multiply, divide }; printf("Enter an expression (e.g., 2 + 3): "); scanf("%d %c %d", &a, &op, &b); // 根据操作符选择相应的函数 int result; switch (op) { case '+': result = operations[0](a, b); // 调用加法函数 break; case '-': result = operations[1](a, b); // 调用减法函数 break; case '*': result = operations[2](a, b); // 调用乘法函数 break; case '/': result = operations[3](a, b); // 调用除法函数 break; default: printf("Invalid operation.\n"); return 1; // 退出程序 } printf("Result: %d\n", result); return 0; }

实现解析:

  1. 函数指针数组定义

    c
    typedef int (*ArithmeticFunction)(int, int);

    这里定义了一个类型ArithmeticFunction,它是一个函数指针类型,指向接受两个int参数并返回int的函数。

  2. 各种运算函数

    c
    int add(int a, int b); int subtract(int a, int b); int multiply(int a, int b); int divide(int a, int b);

    这些函数分别实现了加法、减法、乘法和除法运算。

  3. 函数指针数组

    c
    ArithmeticFunction operations[] = { add, subtract, multiply, divide };

    这里定义了一个函数指针数组operations,包含了四个运算函数的地址。

  4. 运算符的处理

    c
    switch (op) { case '+': result = operations[0](a, b); // 调用加法函数 break; case '-': result = operations[1](a, b); // 调用减法函数 break; case '*': result = operations[2](a, b); // 调用乘法函数 break; case '/': result = operations[3](a, b); // 调用除法函数 break; default: printf("Invalid operation.\n"); return 1; // 退出程序 }

    在主函数中,根据输入的运算符op,使用switch语句来选择相应的函数指针并调用。

这样,通过函数指针数组,我们避免了直接使用if或者更复杂的switch语句来进行运算的选择,从而实现了简易的四则运算功能。