#define _CRT_SECURE_NO_WARNINGS 1 #include//定义加减乘除方法 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 main() { int input = 0; int ret = 0; int a = 0; int b = 0; do { printf("********************n"); printf(" 1.add 2.sub n"); printf(" 3.mul 4.div n"); printf(" 0.exit n"); printf("********************n"); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: printf("请输入操作数:"); scanf("%d %d", &a, &b); ret = add(a, b); printf("%dn", ret); break; case 2: printf("请输入操作数:"); scanf("%d %d", &a, &b); ret = sub(a, b); printf("%dn", ret); break; case 3: printf("请输入操作数:"); scanf("%d %d", &a, &b); ret = mul(a, b); printf("%dn", ret); break; case 4: printf("请输入操作数:"); scanf("%d %d", &a, &b); ret = div(a, b); printf("%dn", ret); break; case 0: printf("退出程序~n"); break; default: printf("选择错误n"); break; } } while (input); return 0; }
函数指针数组实现计算器功能:
利用函数指针数组把计算器方法(封装?)在一个数组中
调用更加简单,代码更加简洁~
#define _CRT_SECURE_NO_WARNINGS 1 #includeint 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 main() { int input = 0; int ret = 0; int a = 0; int b = 0; 声明定义函数指针数组 让NULL在0是让用户选择函数方法时操作方便 int(*pfArr[5])(int, int) = { NULL,Add,Sub,Mul,Div }; do { printf("********************n"); printf(" 1.add 2.sub n"); printf(" 3.mul 4.div n"); printf(" 0.exit n"); printf("********************n"); printf("请选择:>"); scanf("%d", &input); //细心判断用户选择 if (input >= 1 && input <= 4) { printf("请输入两个操作数:>"); scanf("%d %d", &a, &b); 通过用户input选择哪个函数,就去函数指针数组中找该函数 并且把a,b的数据传递过去。 ret = (pfArr[input])(a, b); printf("ret = %dn", ret); } else if (input == 0) { printf("退出程序~"); break; } else { printf("选择错误n"); } } while (input); return 0; }



