C语言实现简单计算器。

一.普通方法

用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);
}