c++第二次作业

关于函数

1.为什么要用函数

函数是对一些数据指令的封装,用函数可以减少重复的代码量,提高代码的质量。有利于代码重用,提高开发效率,增强程序的可靠性,也便于分工合作和修改维护。举一个例子吧,如果你是一名理发店里的洗头员工,你给第一位客人洗头的时候,要去放毛巾的地方拿毛巾,去放洗头护发素的地方拿洗头护发素,第二位客人来的时候,你重复上面的行为,如果客人很多,难道要一趟一趟的跑吗,这个时候,如果你把洗头护发素第一次拿过来了,就把它放在那里等着下次再用,就可以不用跑那么多趟了。函数的功能与此相似,节省重复的步骤。

2.为什么要用重载函数

什么是重载函数
两个以上的函数,具有相同的函数名,但是形参个数或类型不同,编译器根据实参的个数或类型进行最佳匹配,自动确定调用哪一个函数,这就是函数的重载。

当有多个功能相似的函数都出现在一个main函数里面被调用时,如果函数名各不相同,找到对应的要调用的那个函数相对比较难,需要一个一个的看函数内容。重载函数可以解决这个问题。

/*这里如果要对两个数进行求和,在找函数时就显得有点麻烦,尤其是函数个数较多时*/
int add1(int x, int y)
int add2(float x, float y)
int add3(double x, double y)
#include<iostream>
using namespace std;
int add(int x, int y)
{
	return( x + y);
}
float add(float x, float y)
{
	return x + y;
}
double add(double x, double y)
{
	return x + y;
}
int main()
{
	int x, y;
	cin >> x >> y;

	float a,b;
	cin >> a >> b;

	double m, n;
	cin >> m >> n;
	cout<<"整型数的和为"<<add(x, y)<<endl;
	cout<<"浮点数之和为"<<add(m, n) << endl;
	cout<<"double型的和为"<<add(a, b) << endl;
	return 0;
}

3.什么是值传递

值传递是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参,这个过程是参数值的单向传递过程,一旦形参获得了值便于实参脱离关系,此后无论形参发生什么改变,实参不会受影响

假设我们要交换两个数的值,应该怎么做呢

#include<iostream>
using namespace std;
void swap_1(int x,int y)
{
	int t;
	t=x;
	x=y;
	y=t;
}

int main()
{
	int a,b;
	cin>>a>>b;
	cout<<"没有交换时a,b为  "<<a<<";"<<b<<endl;
	swap_1(a,b);//值不交换
	cout<<"调用函数1后a,b为  "<<a<<";"<<b<<endl;
	return 0;
}
//结果展示
5 8
没有交换时a,b为  5;8
调用函数1后a,b为  5;8

4.什么是地址传递

#include<iostream>
using namespace std;
void swap_2(int &x,int &y)
{
	int t;
	t=x;
	x=y;
	y=t;
}
int main()
{
	int a,b;
	cin>>a>>b;
	cout<<"没有交换时a,b为  "<<a<<";"<<b<<endl;
	swap_2(a,b);//值交换
	cout<<"调用函数2后a,b为  "<<a<<";"<<b<<endl;
	return 0;
}
//结果展示
5 8
没有交换时a,b为  5;8
调用函数2后a,b为  8;5

5.如何编写递归函数

以经典的汉诺塔为例,想要把最大的盘子放在最下面,首先要把上面的其余盘子放在B上去,而又要将B的最大的盘子移过去,就又要把B的其余盘子放在A上,以此类推

#include<iostream>
using namespace std;
void move(char src,char dest)
{
	cout<<src<<"-->"<<dest<<endl;
}
void hanoi(int n,char src,char medium,char dest)
{
	if(n==1)
		move(src,dest);
	else
	{
		hanoi(n-1,src,dest,medium);
		move(src,dest);
		hanoi(n-1,medium,src,dest);
	}
}
int main()
{
	int m;
	cout<<"输入碟子数目"<<endl;
	cin>>m;
	cout<<"the steps to moving "<<m<<"diskes:"<<endl;
	hanoi(m,'A','B','C');
	return 0;
}
//结果展示
输入碟子数目
3
the steps to moving 3diskes:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
posted on 2019-09-15 12:18  duoraemon  阅读(154)  评论(0编辑  收藏  举报