公司网站开发毕业设计,贸易公司注册需要什么条件,做商品网站数据库有哪些,优化算法分类文章目录 计算器的一般实现使⽤函数指针数组的实现#xff08;转移表#xff09; 计算器的一般实现
通过函数的调用#xff0c;实现加减乘除
# define _CRT_SECURE_NO_WARNINGS#includestdio.hint Add(int x, int y) {return x y;
}int Sub(int x, int y) {retur… 文章目录 计算器的一般实现使⽤函数指针数组的实现转移表 计算器的一般实现
通过函数的调用实现加减乘除
# define _CRT_SECURE_NO_WARNINGS#includestdio.hint 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 menu() {printf(*****************************************\n);printf(*********1.Add***************************\n);printf(*********2.Sub***************************\n);printf(*********3.Mul***************************\n);printf(*********4.Div***************************\n);printf(*********0.exit**************************\n);printf(*****************************************\n);
}int main() {int x 0;int y 0;int input 0;int ret 0;do {menu();printf(请选择 );scanf(%d,input);switch (input){case 1:printf(请输入操作数: );scanf(%d %d, x, y);ret Add(x, y);printf(%d\n, ret);break;case 2:printf(请输入操作数: );scanf(%d %d, x, y);ret Sub(x, y);printf(%d\n, ret);break;case 3:printf(请输入操作数: );scanf(%d %d, x, y);ret Mul(x, y);printf(%d\n, ret);break;case 4:printf(请输入操作数: );scanf(%d %d, x, y);ret Div(x, y);printf(%d\n, ret);break;case 0:printf(退出程序\n);break;default:printf(输入错误请重新输入\n);break;}} while (input);return 0;
}使⽤函数指针数组的实现转移表
前面我们使用调用函数的方式来实现计算器的基本功能。
但是在一些牛逼的计算器中实现的功能会更多不仅实现加减乘除还能实现位运算等。
那么我们还是依然去调用函数吗switch语句也会越来越长
会不会有点麻烦啦
于是我们需要在上面的基础上进行更改。 简化代码 # define _CRT_SECURE_NO_WARNINGS# define _CRT_SECURE_NO_WARNINGS#includestdio.hint 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 menu() {printf(*****************************************\n);printf(*********1.Add***************************\n);printf(*********2.Sub***************************\n);printf(*********3.Mul***************************\n);printf(*********4.Div***************************\n);printf(*********0.exit**************************\n);printf(*****************************************\n);
}int main() {int x 0;int y 0;int input 0;int ret 0;//函数指针数组int(*pfArr[])(int x,int y) { 0,Add,Sub,Mul,Div }; //转移表// 0 1 2 3 4do {menu();printf(请选择 );scanf(%d, input);if (input 1 input 4) {printf(请输入操作数:);scanf(%d %d, x, y);ret (*pfArr[input])(x, y);printf(%d\n, ret);}else if (input 0) {printf(退出程序\n);}else {printf(输入错误重新输入\n);}} while (input);return 0;
}