#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <windows.h>
typedef int(*pFunc)(int a,int b);//用typedef声明一个名为pFunc的函数指针类型
typedef struct
{
int a;//前一个数
int b;//后一个数
pFunc pf;//函数指针变量
}Func;
int add(int a, int b)//加法运算
{
return a + b;
}
int sub(int a, int b)//减法运算
{
return a - b;
}
int multiply(int a, int b)//乘法运算
{
return a * b;
}
int divide(int a, int b)//除法运算
{
return a / b;
}
int calculator(char str,Func *p)
{
return p->pf(p->a,p->b);
}
int main(void)
{
Func func;//定义一个结构体变量
char ch; //定义一个接收运算符的变量
int res; //定义一个接收运算结果的缓存变量
printf("=============加减乘除计算=============\r\n");
scanf("%d%c%d",&func.a,&ch,&func.b);//输入两个整数和运算符,如20+5
switch(ch){//运算符判断,+,-,*,/
case '+':
func.pf = add;//加法
break;
case '-':
func.pf = sub;//减法
break;
case '*':
func.pf = multiply;//乘法
break;
case '/':
func.pf = divide;//除法
break;
default:
printf("输入错误,请重新输入!!!\r\n");
return;
}
res = calculator(ch,&func);
printf("%d%c%d=%d\r\n",func.a,ch,func.b,res);
return 0;
}