函数指针数组实现简单的计算
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{
printf("*****************************\n");
printf("*** 请选择模式 ***\n");
printf("*** 1:Add 2:Sub ***\n");
printf("*** 3:Mul 4:Div ***\n");;
printf("*** 0:exit ***\n");
printf("*****************************\n");
}
int Add(int x,int y)
{
return x+y;
}
int Sub(int x,int y)
{
return x-y;
}
int Mul(int x,int y)
{
return x*y;
}
int Div(int x,int y)
{
return x/y;
}
int main()
{
int x=0;
int y=0;
int ret;
int intput;
int (*pfArr[])(int,int)={0,Add,Sub,Mul,Div};
do
{
menu();
scanf("%d",&intput);
if(intput>0&&intput<=4)
{
printf("请输入两个操作数\n");
scanf("%d%d",&x,&y);
ret=pfArr[intput](x,y);
printf("%d\n",ret);
}
else if(intput==0)
{
printf("退出\n");
}
else
printf("请输入正确的数\n");
}while (intput);
return 0;
}
使用回调函数计算实现简单的计算
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{
printf("*****************************\n");
printf("*** 请选择模式 ***\n");
printf("*** 1:Add 2:Sub ***\n");
printf("*** 3:Mul 4:Div ***\n");;
printf("*** 0:exit ***\n");
printf("*****************************\n");
}
int Add(int x,int y)
{
return x+y;
}
int Sub(int x,int y)
{
return x-y;
}
int Mul(int x,int y)
{
return x*y;
}
int Div(int x,int y)
{
return x/y;
}
void calc(int (*pf)(int,int))
{
int x=0;
int y=0;
printf("请输入两个操作数\n");
scanf("%d%d",&x,&y);
printf("%d\n",pf(x,y));
}
int main()
{
int intput=0;
do
{
menu();
printf("请选择模式\n");
scanf("%d",&intput);
switch(intput)
{
case 1:calc(Add);
break;
case 2:calc(Sub);
break;
case 3:calc(Mul);
break;
case 4:calc(Div);
break;
case 0:printf("退出\n");
break;
default:printf("请输入正确的数\n");
break;
}
}while (intput);
return 0;
}