一.普通方法
用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);
}