PPT7-7数组作为函数参数(选择排序).pdf
数组作为函数参数(选择排序) 数组元素作为函数实参 void f(int m); f(a3); 数组元素可以作为函数实参,但不能作为形 参。用数组元素作为函数实参,把实参值传递给 形参,采用“值传递”方式。 数组名作为函数参数 voidmyRabbits(int f) 函数体 myRabbits(int a); 数组a数组a数组a 数组f数组f数组f 1 12 2 实例7.5用选择法对数组中10个整 数按从小到大排序。 接收任务 解题思路:第六单元学习了冒泡排序 法,该题目要使用选择排序法求解。 所谓选择排序就是将10个数中最小 的数与a0对换;再将a1到a9中 最小的数与a1对换;以此类推,经 过9轮比较,将得到一个升序排序序 列。 接收任务分析任务 核心代码接收任务分析任务 void sort(int a) int i,j,k,temp; for(i=0;i<N-1;i+ ) k=i; for(j=i+1;j<N;j+ ) if(aj<ak) k=j; if(k!=i) temp = ai;ai = ak;ak = temp; 96824 i j 01 k0 2 3 4 1 3 29 核心代码接收任务分析任务 void sort(int a) /省略 void display(int a) for(int i=0;i<N;i+) printf(%dt,ai); printf(n); 核心代码接收任务分析任务 void sort(int a) /省略 void display(int a) for(int i=0;i<N;i+) printf(%dt,ai); printf(n); int main(int argc, char *argv) int aN = 23,34,-1,2,6,78,-54,20,18,-15; printf(排序前:n); display(a); sort(a); printf(排序前:n); display(a); return 0; 核心代码接收任务分析任务 void sort(int a) /省略 void display(int a) for(int i=0;i<N;i+) printf(%dt,ai); printf(n); int main(int argc, char *argv) int aN = 23,34,-1,2,6,78,-54,20,18,-15; printf(排序前:n); display(a); sort(a); printf(排序前:n); display(a); return 0; 2334-12678-542018-15-5434-12678232018-15-54-15-1267823201834-54-15-1267823201834-54-15-1267823201834-54-15-1267823201834-54-15-1261823207834-54-15-1261820237834-54-15-1261820237834-54-15-1261820233478数组a数组a void f(int m44); 多维数组名作为函数参数 f(a); void f(int m4); 多维数组元素可以作为函数参数,这一点与 前面的情况类似。可以用多维数组名作为函数的 实参和形参。在被调用函数中对形参数组定义时 可以指定每一维的大小,其中第一维的大小可以 省略。 int a44; 实例7.6求44的整型矩阵中,所 有元素的最大值。 接收任务 解题思路:定义整型max变量, max的初始值为44的矩阵中第一 个元素的值,顺次扫描44矩阵的每 一个数据,让其与max比较,如果 比max大,就让max中存储较大值, 全部元素扫描完毕,max中存储的 就是44矩阵所有元素的最大值。 接收任务分析任务 核心代码接收任务分析任务 int maxValue(int a4) int max = a00; for(int i=0;i<N;i+) for(int j=0;j<N;j+) if(max<aij) max = aij; return max; 核心代码接收任务分析任务 int maxValue(int a4) /省略 void display(int a4) int i,j; for(i=0;i<N;i+ ) for(j=0;j<N;j+ ) printf(%dt,aij); printf(n); printf(n); 核心代码接收任务分析任务 int maxValue(int a4) /省略 void display(int a4) int i,j; for(i=0;i<N;i+ ) for(j=0;j<N;j+ ) printf(%dt,aij); printf(n); printf(n); int main(int argc, char *argv) int aNN = 23,34,-1,2, 6,78,-54,20, 18,-15,0,45, 36,58,67,37; printf(矩阵为:n); display(a); printf(最大值:%dn,maxValue(a); return 0; 解决问题 数组名作为函数参数传参,传递的是数组的首地址,此 时形参与实参共用一片存储空间。形参数据改变,实参也同 时改变。同学们,你们学会了吗?