题目:实现一个计算器,创建两个变量a,b,以及操作字符,实现输入“+”,执行加法,‘-’,执行减法,以此类推,有一个综合函数处理输入,有加减乘除求余5种运算,请用函数指针实现,以及函数指针作为参数来实现,具体实现如下:
#include<stdlib.h> #include<stdio.h> typedef int(*FunPtr)(int, int); int Add(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b; } int Mul(int a, int b) { return a*b; } int Div(int a, int b) { return a / b; } int Mod(int a, int b) { return a%b; } int Op(FunPtr f1, FunPtr f2, FunPtr f3, FunPtr f4, FunPtr f5, char cOperator, int a, int b, int * Out) { if (f1 == NULL || f2 == NULL || f3 == NULL || f4 == NULL || f5 == NULL || Out == NULL) { return 0; } switch (cOperator) { case '+': { *Out = f1(a, b); break; } case '-': { *Out = f2(a, b); break; } case '*': { *Out = f3(a, b); break; } case '/': { *Out = f4(a, b); break; } case '%': { *Out = f5(a, b); break; } default: return 0; } return 1; } int main() { printf("请输人两个数据和一个运算符(x+y):\n"); int a = 0; int b = 0; char c = 0; int nRet = 0; scanf("%d%c%d", &a, &c, &b); if (Op(Add, Sub, Mul, Div, Mod, c, a, b, &nRet) == 0) { printf("函数计算失败.\n"); return 0; } printf("结果=%d\n", nRet); system("pause"); return 0; }运行效果如图1所示:
图1 运行效果