题目:实现一个计算器,创建两个变量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 运行效果