一.普通方法
用C语言来实现一个简单的计算器。
#include <iostream> // 头文件 using namespace std; // 命名空间名称引入 // std 是 C++ 标准库的命名空间名,C++ 将标准库的定义实现都放在这个命名空间中 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 menu() {// 打印菜单 cout << "****1,加法********************" << endl; cout << "****2.减法*********************" << endl; cout << "****3.乘法*********************" << endl; cout << "****4.除法*********************" << endl; cout << "****0.exit*********************" << endl; } int main() { int input; int x, y; do { menu(); cin >> input; // 输入input switch (input) { case 0: cout << "退出" << endl; break; case 1: cout << "请输入两个操作数" << endl; cin >> x >> y; // 输入 x, y cout << Add(x, y) << endl;// 调用函数 Add, 下面情况都一样 break; case 2: cout << "请输入两个操作数" << endl; cin >> x >> y; cout << Sub(x, y) << endl; break; case 3: cout << "请输入两个操作数" << endl; cin >> x >> y; cout << Mul(x, y) << endl; break; case 4: cout << "请输入两个操作数" << endl; cin >> x >> y; cout << Div(x, y) << endl; break; default: cout << "输入错误,请重新输入" << endl; } } while (input); return 0; }
可以发现这种办法,有的语句重复输入多次,并且很长,可以用最近新学的指针数组解决直接将函数的名字存进一个,指针数组里就可以方便许多。
二.指针数组实现
代码如下:
#include <iostream> using namespace std; 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 menu() { cout << "****1,加法********************" << endl; cout << "****2.减法*********************" << endl; cout << "****3.乘法*********************" << endl; cout << "****4.除法*********************" << endl; cout << "****0.exit*********************" << endl; } int main() { int input; int x, y; int(*arr[])(int,int) = { 0,Add,Sub,Mul,Div };//指针数组,存放地址的数组。 int len = sizeof(arr) / sizeof(arr[0]); do { menu(); cout << "请选择" << endl; cin >> input; if (input > 0 && input <= len) { cout << "请输入两个操作数" << endl; cin >> x >> y; cout << arr[input](x,y) << endl; } else if (input == 0) { cout << "退出" << endl; } else { cout << "请重新输入" << endl; } } while (input); }