c++第二次作业
函数相关
1.使用函数的目的
设计函数的目的在于是对于一段代码的引用简洁方便,易于维护
例如:求x到y两个数之间所有的整数之和,
例如
#include <iostream> using namespace std void main() { int a,b; int sum cin>>a>>b; for(sum=0;a<=b;a++) { sum=sum+a; } cout<<"a="<<sum<<endl; }
如果要在函数中反复调用这段代码需要,多次复制,一旦出现问题需要到全文中到处去修改,但是如果是使用函数可以只修改函数避免了到全文去修改的麻烦。
2.函数的重载
c++允许用同一个函数名命名不同的函数,以输入参数类型的不同来进行区分,使得对于类似功能的函数极为友好,降低编程的命名复杂度。
例如在实现计算器加减乘除功能时使用函数的重载可以使得编程更加简单:
#include <iostream> using namespace std int add(int x,int y) { return x+y; } float add(float x,float y) { return x+y; } int main() { int x,y; add(x,y); (float) x; (float) y; add(x,y); }
3.值传递
值传递是指只将参数的值传入函数中,无法对参数进行修改
例如:
#include <iostream> using namespace std int add(int x,int y) { x=x+1; y=y+1 return x+y; } float add(float x,float y) { x=x+1; y=y+1; return x+y; } int main() { int x,y; cin>>x>>y; add(x,y); (float) x; (float) y; add(x,y); cout<<"x="<<x<<"y="<<y<<endl; }
其中参数无法在函数中被改变,打印出的x,y不会改变
4.地址传递
将参数的地址传入函数中,可以使得函数对参数进行修改,使用面积较大啊
例如
#include <iostream> using namespace std int add(int *x,int *y) { x=x+1; y=y+1 return x+y; } float add(float *x,float *y) { x=x+1; y=y+1; return x+y; } int main() { int x,y; cin>>x>>y; add(x,y); (float) x; (float) y; add(x,y); cout<<"x="<<x<<"y="<<y<<endl; }
在该函数中传入的参数得以修改,打印出的x,y,的值对应其在函数中的变化
5.如何编写递归函数
#include <iostream> using namespace std int feibo(int n) { if(n == 0) { return 0; } if(n == 1) { return 1; } else { return feibo(n-1)+feibo(n-2); } } void main() { int n; cin>>n; cout<<feibo(n)<<endl; }
递归函数指在函数内部调用自己,降低函数复杂度,使用递归函数必须设置下线否则函数会无限的调用自己。
实验设计:将五中函数取消下限看是否有结果,在自己加上下限,观察下限的重要性。