编写一个程序,实现基本的“计算器”功能,即计算输出 x ? y 的结果,其中x和y是从键盘
输入的浮点数,?表示某种计算方式,比如加法、乘法等。请考虑用函数指针来实现,思考 程序的可扩展性。 输入: Please input two
numbers: 20 50 Please input the operation (1)add, (2) subtraction, (3)
multiplication, (4) division: 1 输出: 70
/*函数指针实现计算器
四种运算函数
计算器函数(实现函数指针)
主函数调用
*/
#include <iostream>
using namespace std;
/*定义运算*/
double add(double& x, double& y)
{
return x + y;
}
double sub(double& x, double& y)
{
return x - y;
}
double mul(double& x, double& y)
{
return x * y;
}
double div(double& x, double& y)
{
return x / y;
}
/*定义计算器函数,接受数字x和y,以及z作为判断运算符号*/
double calculator(double x, double y, int z)
{
double value = 0;
double (*pf)(double&, double&) = nullptr;//初始化函数指针
if (z == 1)
pf = add;
else if (z == 2)
pf = sub;
else if (z == 3)
pf = mul;
else if (z == 4)
pf = div;
else
cout << "Now there are only four operations defined, please re-input" << endl;
if (pf)//此处判断pf是否为null,否则的话会出现c6011警告
value = pf(x, y);
return value;
/*另一种函数指针数组的方法*/
/*double (*pf[5])(double&, double&) { 0, add, sub, mul, div };//此处定义函数指针数组(转换表)
if (z >= 1 && z <= 4)
value = ((*pf[z])(x, y));
else
cout << "Now there are only four operations defined, please re-input" << endl;
return value;*/
}
int main()
{
double x, y;
int z;
cout << "Please input two numbers: ";
cin >> x >> y;
cout << "Please input the operation (1)add, (2)subtraction, (3)multiplication, (4)division: ";
cin >> z;
double num = calculator(x, y, z);//调用calculator函数
cout << num << endl;
return 0;
}