【C++ Primer Plus习题】7.10

问题:

解答:

cpp 复制代码
#include <iostream>
using namespace std;

double add(double a, double b)
{
	return a + b;
}

double mul(double a, double b)
{
	return a * b;
}

double sub(double a, double b)
{
	return a - b;
}

double div(double a, double b)
{
	return a / b;
}

double calculate(double num1, double num2, double (*p)(double, double))
{
	return p(num1, num2);
}

int main()
{
	double num1 = 0.0;
	double num2 = 0.0;
	double res = 0.0;
	
	cout << "请输入第1个数值:";
	cin >> num1;
	cout << "请输入第2个数值:";
	cin >> num2;
	res = calculate(num1, num2, add);
	cout << num1 << "+" << num2 << "=" << res << endl;
	res = calculate(num1, num2, mul);
	cout << num1 << "*" << num2 << "=" << res << endl;
	

	double (*p[4])(double, double);
	double result[4];
	p[0] = &add;
	p[1] = &mul;
	p[2] = &sub;
	p[3] = &div;
	for (int i = 0; i < 4; i++)
	{
		result[i] = calculate(num1, num2, p[i]);
	}
	cout << endl;
	cout << num1 << "+" << num2 << "=" << result[0]<< endl;
	cout << num1 << "-" << num2 << "=" << result[2] << endl;
	cout << num1 << "*" << num2 << "=" << result[1] << endl;
	cout << num1 << "/" << num2 << "=" << result[3] << endl;


	return 0;
}

运行结果:

考查点:

  • 函数指针
  • 指针数组

注意:

  • 函数指针的定义

  • 函数指针数组定义

  • 函数指针的指向

2024年8月31日21:03:20

相关推荐
小小马喽_Thendras5 分钟前
ScheduledExecutorService 和Timer的区别
java·开发语言
报错小能手14 分钟前
ios开发方向——swift内存基础
开发语言·ios·swift
minji...14 分钟前
Linux 多线程(四)线程等待,线程分离,线程管理,C++多线程,pthread库
linux·运维·开发语言·网络·c++·算法
麦德泽特16 分钟前
基于 Go 语言的 Modbus 项目实战:构建高性能、可扩展的工业通信服务器
服务器·开发语言·golang·modbus·rtu
Keep Running *17 分钟前
Angular_学习笔记
笔记·学习·angular.js
H_BB21 分钟前
DFS实现回溯算法
数据结构·c++·算法·深度优先
还是大剑师兰特22 分钟前
pnpm format 什么作用
开发语言·javascript·ecmascript
楼田莉子23 分钟前
设计模式:设计模式的相关概念与原则
c++·学习·设计模式
QuZero25 分钟前
Java Synchronized principle
java·开发语言
单片机学习之路31 分钟前
【Python】输入input函数
开发语言·python