C++学习,实验二
一,验证性实验部分
(1).函数声明和函数定义各自的作用和区别: 函数在使用之前首先就要声明,函数定义是自己写一个函数。 二者的区别在于,声明不需要我们写出函数的代码,而函数定义需要。 先定义再调用。 函数声明包含函数定义。
(2).什么是形参?什么是实参?: 形参也叫形式参数,是指定义函数名和函数体时使用的参数,用来接收调用该函数时传来的参数。 实参可以是常量,变量,表达式,函数等,它们具有确定的值。二者的区别在于,形参离开该函数,不能使用。实参变量进入被调函数时,不能使用。 发生函数调用时,将实参的值传给形参从而实现,主调函数向被调函数的数据传送。 形参只有在被调用时,才分配内存单元,调用结束,立即释放。 只能把实参的值传给形参(单向的),因此,在函数的调用过程中,形参的值发生改变,而实参不变。 但是!!!当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。
如果函数的参数是指针类型时,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,使用的就是实参本身。所以在函数内部可以改变实参的值。
(3).值传递和引用传递的区别:值传递,传递的是参数的值,不能改变实参的值。引用传递,传递的是地址,可以改变实参的值。
二,编程实验部分
1).
2).若一个数为素数,那么它仅可以被1和它本身整除。同时,我们只要判断1到根号它的数字,就可以得出结论。
3).
4).
首先,取小球一共有多少种,就是让我们算C(m,n) 所以只要计算m的阶乘和n的阶乘,并相除,就可以得出答案。
但是有一个注意点:C(5,3)和C(5,2)是一样的。
三,实验总结
在本次实验中,我回顾了递归算法,并编写了高中数学的求C(m,n)问题,感觉很不错。
1.在递归算法中,要注意的是:一定要有一个结束条件。
2.在函数声明和函数定义时()内也必须定义变量,例如
3.使用rand()函数注意点:
1).要加#include<stdlib.h>头文件。
2).rand()函数每次运行都与上一次的结果相同。
3).加入这一串代码,可以使随机数发生器随机化,从而得到不同的随机数。
#include<time.h>
srand(time(0));
4).rand()%b+a a是起始值,b-1+a是最大值。
4.引用传递和值传递的区别:引用传递,传递的是地址,可以改变实参的值。值传递,传递的是参数的值,不能改变实参的值。
5. break用于循环体和switch语句, continue用于循环体结构。