1、除了可以用数组元素作为函数参数外除了可以用数组元素作为函数参数外,还可以用数组名作函数参数,还可以用数组名作函数参数(包括实参包括实参和形参和形参)注意:用数组元素作实参时,向形参变量传递的是数组元素的值;用数组名作函数实参时,向形参 传递的是数组首元素的地址。例例7.10 有一个一维数组有一个一维数组score,内放,内放10个学生成绩,求平均成绩。个学生成绩,求平均成绩。解题思路:解题思路:u用函数用函数average求平均成绩,用数组名求平均成绩,用数组名作为函数实参,形参也用数组名作为函数实参,形参也用数组名u在在average函数中引用各数组元素,求函数中引用各数组元素,求平均成绩并
2、返回平均成绩并返回main函数函数#include int main()float average(float array10);float score10,aver;int i;printf(input 10 scores:n);for(i=0;i10;i+)scanf(%f,&scorei);printf(n);aver=average(score);printf(%5.2fn,aver);return 0;定义实参数组定义实参数组score0score1score2score3score4score5score6score7score8score967.589.59969.57789.5
3、76.5546099.5array0array1array2array3array4array5array6array7array8array9执行到语句aver=average(score)时时:score0score1score2score3score4score5score6score7score8score967.589.59969.57789.576.5546099.567.589.59969.57789.576.5546099.5array0array1array2array3array4array5array6array7array8array9score0score1score
4、2score3score4score5score6score7score8score967.589.59969.57789.576.5546099.5array&score0arrayi相当于scoreifloat average(float array10)int i;float aver,sum=array0;for(i=1;i10;i+)sum=sum+arrayi;aver=sum/10;return(aver);定义形参数组定义形参数组相当于相当于score0相当于相当于scorei 例例7.11 有两个班级,分别有有两个班级,分别有35名和名和30名学生,调用一个名学生,调用一个a
5、verage函数,分别求函数,分别求这两个班的学生的平均成绩。这两个班的学生的平均成绩。解题思路:解题思路:u需要解决怎样用同一个函数求两个不同长度的需要解决怎样用同一个函数求两个不同长度的数组的平均值的问题数组的平均值的问题u定义定义average函数时不指定数组的长度,在函数时不指定数组的长度,在形参表中增加一个整型变量形参表中增加一个整型变量iu从主函数把数组实际长度从实参传递给形参从主函数把数组实际长度从实参传递给形参iu这个这个i用来在用来在average函数中控制循环的次数函数中控制循环的次数u为简化,设两个班的学生数分别为为简化,设两个班的学生数分别为5和和10#include
6、int main()float average(float array,int n);float score15=98.5,97,91.5,60,55;float score210=67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5;printf(“%6.2fn”,average(score1,5);printf(“%6.2fn”,average(score2,10);return 0;float average(float array,int n)int i;float aver,sum=array0;for(i=1;in;i+)sum=sum+arrayi;
7、aver=sum/n;return(aver);调用形式为调用形式为average(score1,5)时时相当于相当于score10相当于相当于score1i相当于相当于5float average(float array,int n)int i;float aver,sum=array0;for(i=1;in;i+)sum=sum+arrayi;aver=sum/n;return(aver);调用形式为调用形式为average(score2,10)时时相当于相当于score20相当于相当于score2i相当于相当于10 例例7.13 有一个的矩阵,求所有有一个的矩阵,求所有元素中的最大值。元
8、素中的最大值。解题思路:先使变量解题思路:先使变量max的初值等于的初值等于矩阵中第一个元素的值,然后将矩阵矩阵中第一个元素的值,然后将矩阵中各个元素的值与中各个元素的值与max相比,每次比相比,每次比较后都把较后都把“大者大者”存放在存放在max中,全中,全部元素比较完后,部元素比较完后,max 的值就是所有的值就是所有元素的最大值。元素的最大值。#include int main()int max_value(int array4);int a34=1,3,5,7,2,4,6,8,15,17,34,12;printf(“Max value is%dn”,max_value(a);return 0;可以省略可以省略不能省略不能省略要与要与形参数组第形参数组第二二维大小维大小相同相同int max_value(int array4)int i,j,max;max=array00;for(i=0;i3;i+)for(j=0;jmax)max=arrayij;return(max);要与实参要与实参数组第数组第二二维大小维大小相同相同数组名作函数参数数组名作函数参数