#include<stdio.h>
// 声明四个运算函数
int add(int,int);
int sub(int,int);
int multiply(int,int);
int divide(int,int);
// 声明calc函数,用于通过函数指针调用运算函数
int calc(int (*)(int,int),int,int);
// 声明select函数,根据操作符返回相应的运算函数指针
int (*select(char))(int,int);
// 实现加法运算
int add(int num1,int num2)
{
return num1 + num2;
}
// 实现减法运算
int sub(int num1,int num2)
{
return num1 - num2;
}
// 实现乘法运算
int multiply(int num1,int num2)
{
return num1 * num2;
}
// 实现除法运算
int divide(int num1,int num2)
{
return num1 / num2;
}
// 实现calc函数,通过函数指针调用运算函数
int calc(int (*fp)(int,int),int num1,int num2)
{
return (*fp)(num1,num2);
}
// 实现select函数,根据操作符返回相应的运算函数指针
int (*select(char op))(int,int)
{
switch(op)
{
case '+': return add;
case '-': return sub;
case '*': return multiply;
case '/': return divide;
}
}
int main()
{
int num1,num2;
char op;
int (*fp)(int,int);
while(1)
{
printf("输入一个式子:\n");
scanf("%d%c%d",&num1,&op,&num2);
fp = select(op);
printf("%d %c %d = %d\n",num1,op,num2,calc(fp,num1,num2));
printf("继续按任意键,退出输入n\n");
char a=getchar();
getchar();
if(a!='n') continue;
else break;
}
return 0;
}