这里我们用计数器来示例。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void menu()
{
printf("********0. exit******\n");
printf("********1. Add*******\n");
printf("********2. Sub*******\n");
printf("********3. Mul*******\n");
printf("********4. Div*******\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 input = 0;
int x = 0;
int y = 0;
int z = 0;
int (*PfArr[5])(int, int) = { 0,Add,Sub,Mul,Div };
do
{
menu();
printf("请选择:");
scanf("%d", &input);
if (input >= 1 && input <= 4)
{
printf("请输入两个操作数:");
scanf("%d%d", &x, &y);
z = PfArr[input](x, y);
printf("%d\n", z);
}
else if (0 == input)
{
printf("退出\n");
}
else
{
printf("输出错误,请重新输入\n");
}
} while (input);
return 0;
}
这里通过转移表我们可以简便的实现计数器的算法选择,因为四个函数返回值,参数完全一样,我们可以用函数指针数组来实现。