c++使用函数指针实现简单计算器

2 篇文章 0 订阅

编写一个程序,实现基本的“计算器”功能,即计算输出 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;
}
  • 函数指针的理解:就相当于多了一个可以随时用于表示各种函数的代号
  • 要用函数指针,必须保证指向的函数和指针相同的定义,包括返回值,形参的个数及类型,是否用到引用等
  • 函数指针数组,相比用if语句更加简捷——引用自该博客
  • 对于c6011警告的处理:用if语句判断一下该函数指针是不是null ——vs官网解释
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值