当前位置:首页 > 面向对象程序设计教案
其中:
类型标识符 规定了函数的返回值类型。函数的返回值是返回给主调函数的处理结果,由函数体部分的return语句带回。无返回值的函数其类型标识符为void,不必有return语句。
形式参数表,简称形参表的内容如下:
类型l 形参名1,类型2 形参名2,?,类型n 形参名n
2.3.2 调用函数
调用函数必须遵守先定义后调用的原则,否则,需要在调用函数之前在主调函数中声明函数原型。函数原型声明形式为:
<类型标识符> <被调函数名>(含类型说明的形参表);
函数的调用形式:
<函数名>(实参1,实参2,。。。,实参n)
2.3.3 默认参数的函数
在函数定义中通过赋值运算就可指定默认参数值。一旦程序在调用该函数时,如果给出实参,则用实参初始化形参;如果没有给出实参,则C++编译系统自动以预先赋值的默认参数值作为传入数值。
需要特别注意:默认形参值必须按从右向左的顺序定义。在有默认值的形参右面,不能出现无默认值的形参。因为在调用时,实参初始化形参是按从左向右的顺序。
2.3.4 内联函数
内联函数与一般函数不同的是,它不是在调用时发生转移,而是在编译时将函数体嵌入在每一个调用语句处。这样就相对节省了参数传递、系统栈的保护与恢复等的开销。
内联函数的定义形式为:
函数体 }
注意:
① 内联函数体内一般不能有循环语句和switch语句; ② 内联函数的定义必须出现在第一次被调用之前; ③ 对内联函数不能进行异常接口声明。
因此,只有很简单而使用频率很高的函数才被说明为内联函数。内联函数会扩大目标代码,使用时要谨慎。
例2-2 内联函数例题。 #include
inline int max(int a,int b)
9
{
if(a>b)
return a; else
return b;
}
void main() {
int a,b,c,d; a=210; b=150; c=20;
d=max(a,b); d=max(d,c);
//编译时两个调用处均被替换为max函数体语句。 cout<<\< < 程序运行结果为: The biggest of 210 150 20 is 210 2.3.5 系统函数的使用 系统函数的原型声明已经全部由系统提供了,并且已分类存在于不同的头文件中。程序员需要做的事情,就是用include指令嵌入相应的头文件,然后便可以使用系统函数。 2.4 数组 数组是一种构造数据类型,是具有统一名称和相同类型的一组数据元素的集合,它占用连续内存单元进行存储。组成数组的对象称为该数组的元素,数组元素可存储的数据类型由声明时指定的C++语言数据类型决定。 2.4.1 一维数组 数组在使用前必须先声明。声明一个一维数组的形式如下: <类型标识符> <数组名>[数组长度] 注意:数组长度是个常量表达式。 数组中的每个元素可以当成普通的变量使用。访问一维数组元素的形式如下: 10 <数组名>[下标] 注意:下标的值也是从0开始,不能超过该维的长度减1。 一维数组的初始化有如下两种形式: 形式1: <类型标识符> <数组名>[数组长度]={第0个元素值,第1个元素值,? ,第n-1个元素值} 形式2: <类型标识符> <数组名>[ ]={第0个元素值,第1个元素值,...,第n个元素值} 2.4.2 多维数组 多维数组的声明形式如下: <类型标识符> <数组名>[长度1][长度2]?[长度n] 访问多维数组中的元素: <数组名>[第1维下标][第2维下标]?[第n维下标] 二维数组的初始化形式如下: 形式1: <类型标识符> <数组名>[第1维长度][第2维长度]={{第0个第2维数据组}, {第1个第2维数据组},?.,{ 第n-1个第2维数据组}} 其中:n等于第1维长度。 形式2: <类型标识符> <数组名>[第1维长度][第2维长度]={{第0个元素值, 第1个元素值,?., 第m个元素值} 其中:m小于或等于第1维长度*第2维长度。 2.4.3 数组应用 1.排序 数组元素排序是与数组有关的最重要的算法。所谓数组元素排序,是指将数组中的所有元素的位置重新排列,使得数组元素的值按照递增或递减有序排列。排序有很多方法,常用的有选择排序法和冒泡排序法。 选择排序法是很朴素的排序方法,它的思想很简单:先找到数组中最大的元素,将这个元素放到数组的最前端;然后在剩下的数组元素中再找出最大的元素,把它放在剩下的这些元素的最前端,如此下来,就能使数组中的元素以递减序排列了。 冒泡排序法是交换排序法的一种,其基本思路是:两两比较待排序的序列中的相邻元素,如果不满足顺序要求,就交换这两个元素,这样,第1轮比较完毕后,数组中的最大(或最小)元素就像气泡一样“冒”到数组的最尾部,可以认为由这个元素组成的只有一个元素的子序列是已经排好序的;然后对剩下的元素继续上述过程,直到全部元素有序。 11 例2-3 已知一个一维数组中的元素为:1、7、3、22、9、5,现要求以递增顺序对这个数组中的元素进行排列,结果为1、3、5、7、9、22,下面给出冒泡排序法的程序代码。 #include int a[6]={1,7,3,22,9,5}; int i,j,t,flag; for(i=0;i<6;i++) { flag=0; for(j=0;j<6-i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0) break; } cout<<\排序后的数组为:\\n\ for(i=0;i<6;i++) cout<<\} 2.查找 数组元素查找是与数组有关的另一种重要算法。常用的查找方法有顺序查找法和二分查找法。顺序查找法的思路很朴素,也容易实现,但效率不高:二分查找法的效率很高,但要求数组在查找前已经排好序。 顺序查找法的思路:按顺序逐个访问数组元素,并将其同要找的值比较,直到找到与要查找的值相同的元素。 二分查找法的思路:首先假设数组已经按增序排好序。取位于数组中间的元素同要查找的值比较,如果待查值等于这个元素的值,则查找结束。如果待查值小于这个元素的值,则要查找的元素肯定在数组的左半边,将数组左半边看成完整的数组,继续使用二分查找法查找。如果待查值大于这个元素的值,则要查找的元素肯定在数组的右半边,将数组右半边看成完整的数组,继续使用二分查找法查找。 二分法查找函数代码: #include 12
共分享92篇相关文档