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;
}
实现解析:
函数指针数组定义:
ctypedef int (*ArithmeticFunction)(int, int);
这里定义了一个类型
ArithmeticFunction
,它是一个函数指针类型,指向接受两个int参数并返回int的函数。各种运算函数:
cint add(int a, int b); int subtract(int a, int b); int multiply(int a, int b); int divide(int a, int b);
这些函数分别实现了加法、减法、乘法和除法运算。
函数指针数组:
cArithmeticFunction operations[] = { add, subtract, multiply, divide };
这里定义了一个函数指针数组
operations
,包含了四个运算函数的地址。运算符的处理:
cswitch (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语句来进行运算的选择,从而实现了简易的四则运算功能。