⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.cpp

📁 我学习C++ Primer Plus过程中写下的课后作业的编程代码
💻 CPP
字号:
//9.设计一个名为calculate()的函数,它接受两个double值和一个指向函数
//的指针,而被指向的函数接受两个double参数,并返回一个double值、
//calculate()函数的类型也是double,并返回被指向的函数使用calculate()
//的两个double参数计算得到的值。例如,假如add()函数的定义如下:
//   double add(double x,double y)
//   {
//		return x + y;
//   }
//   则下述代码中的函数调用:
//   double q = calculate(2.5,10.4,add);
// 将导致calculate()把2.5和10.4传递给add()函数,并返回add()的返回值(12.9).
//     请编写一个程序,它调用上述两个函数和至少另一个与add()类似的函数。
// 如果读者爱冒险,可以尝试创建一个指针数组,其中的指针指向add()样式的函数,
// 并编写一个循环,使用这些指针连续让calculate()调用这些函数。提示:
// 下面是声明这种指针数组的方式,其中包含3个指针:
// double (*pf[3]) (double,double);
// 可以采用数组初始化句法,并将函数名作为地址来初始化这样的数组。

#include <iostream>

double add     ( double x, double y);		//  +
double subtract( double x, double y);		//  -
double multiply( double x, double y);		//  *
double divide  ( double x, double y);		//  /

typedef double (*pf)(double,double);		//pf函数指针?
double calculate( double x, double y, double (*pf) (double,double) );

using namespace std;
int main()
{
	using namespace std;
	double a=0.0;
	double b=0.0;
	pf func[4]={add,subtract,multiply,divide};		//函数指针数组
	cout<<"请输入两个double数: ";
	while(cin>>a>>b)
	{
		for(int i=0;i<4;i++)
		{
			cout<<calculate(a,b,func[i])<<endl;
		}
		cout<<"请再输入两个double数: ";
	}
	cout<<"输入有误,已退出。"<<endl;
	return 0;
}

double add     ( double x, double y)	//加
{
	cout<<x<<"+"<<y<<"=";
	return x+y;
}

double subtract( double x, double y)	//减
{
	cout<<x<<"-"<<y<<"=";
	return x-y;
}

double multiply( double x, double y)	//乘
{
	cout<<x<<"*"<<y<<"=";
	return x*y;
}

double divide  ( double x, double y)	//除
{
	if(0==y)
	{
		cout<<"被除数不能为零!";
		return x/y;                     //为了显示后果,所以
	}
	else
	{
		cout<<x<<"/"<<y<<"=";
		return x/y;
	}
}

double calculate( double x, double y, double (*pf) (double,double) )
{
	return pf(x,y);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -