
第8章数组
第 8 章 数 组

本章知识点8.1一维数组的定义、引用与初始化“数组名+一维下标”---表示数据8.2一维数组的应用8.3二维数组数组名+二维下标”---表示数据8.4数组与函数
本章知识点 8.1 一维数组的定义、引用与初始化 “数组名+一维下标”-表示数据 8.2 一维数组的应用 8.3 二维数组 “数组名+二维下标”-表示数据 8.4 数组与函数

8.4数组与函数一P1718.4.1 数组元素作函数实参8.4.2数组名作函数参数8.4.3多维数组名作函数参数
8.4 数组与函数—P171 8.4.1 数组元素作函数实参 8.4.2 数组名作函数参数 8.4.3 多维数组名作函数参数

8.4.1数组元素作函数实参一P1711、每个数组元素都是一个简单变量,可以用简单变量的场合均可以使用数组元素!2、函数的实参可以是表达式,数组元素可以是表达式的组成部分--数组元素可以作为函数的实参3、数组元素作实参与变量作实参一样,是单向传递给形参,即“值传送”方式。4、用数组元素作实参时,只要数组元素类型和函数的形参类型一致,对数组元素的处理是按简单变量对待的
8.4.1 数组元素作函数实参—P171 1、每个数组元素都是一个简单变量,可以用简单变量的 场合均可以使用数组元素! 2、函数的实参可以是表达式,数组元素可以是表达式的 组成部分-数组元素可以作为函数的实参。 3、数组元素作实参与变量作实参一样,是单向传递给形 参,即“值传送”方式。 4、用数组元素作实参时,只要数组元素类型和函数的形 参类型一致,对数组元素的处理是按简单变量对待的

例8.17,数组比较:有两个数组a、b,各有10个元素,将它们对应地逐个相比(即a[0]与b[0]比、a[1]与b[1]比、...a[9]与b[9]比]。要求:统计出两个数组相应元素大于、等于、小于的次数。分析:利用函数完成2个数组相应元素的比较。将对应数组元素作为函数参数进行比较,根据函数返回值2统计两个数组相应元素大于、等于、小于的次数
例8.17,数组比较:有两个数组a、b,各有10个元素,将它 们对应地逐个相比(即a[0]与b[0]比、a[1]与b[1]比、.、 a[9]与b[9]比)。 要求:统计出两个数组相应元素大于、等于、小于的次数。 分析: ① 利用函数完成2个数组相应元素的比较。 ② 将对应数组元素作为函数参数进行比较,根据函数返回值 统计两个数组相应元素大于、等于、小于的次数

#includeint main(1/比较数组int large(intx,inty){inta[10],b[10],i,m=0,n=0,k=03Ⅱ比较两个数的大小关系for(i=0;iy) f=1;Sfor(i=0;i<=9;i++)?else if (x==y) f=0;scanf("%d"&b[);/输入b数组?elsef=-1;for(i=0;<=9;i++)8return f;9if(large(a,b[)=1))m++;?0if (large(a[],b[])==0)n++;if (large(a[],b[])==-1) k++;88995n1190680printf("%d %d %din",m,n,k);return O;4
① #include ② int large(int x,int y) ③ // 比较两个数的大小关系 ④ { int f; ⑤ if (x>y) f=1; ⑥ else if (x==y) f=0; ⑦ else f=-1; ⑧ return f; ⑨ } ① int main() //比较数组 ② { int a[10],b[10],i,m=0,n=0,k=0; ③ for (i=0;i<=9;i++) ④ scanf(" %d",&a[i]); // 输入a数组 ⑤ for (i=0;i<=9;i++) ⑥ scanf("%d",&b[i]); // 输入b数组 ⑦ for (i=0;i<=9;i++) ⑧ { if (large(a[i],b[i])==1) m++; ⑨ if (large(a[i],b[i])==0) n++; ⑩ if (large(a[i],b[i])==-1) k++; ⑪ } ⑫ printf("%d %d %d\n" ,m,n,k); ⑬ return 0; ⑭ }

8.4.2数组名作函数参数---P172用数组名亻注意如下:做函数参数在C语言中,数组名代表的是数组的起始地址一地址常量。用数组名作函数参数时--要求函数的形参和实参都必须是相同类型的数组名或指针一明确的类型说明用数组名作函数实参时,向形参传递的是实参数组在内存中的首地址一地址常量实参中的数组首地址传到形参中,实参和形参共用同一段内存----函数中对形参数组元素的操作实际是对实参数组元素的操作
8.4.2 数组名作函数参数-P172 用数组名做函数参数,注意如下: ① 在C语言中,数组名代表的是数组的起始地址—地址常量。 ② 用数组名作函数参数时-要求函数的形参和实参都必须是 相同类型的数组名或指针—明确的类型说明。 ③ 用数组名作函数实参时,向形参传递的是实参数组在内存 中的首地址—地址常量。 ④ 实参中的数组首地址传到形参中,实参和形参共用同一段 内存-函数中对形参数组元素的操作实际是对实参数 组元素的操作

例如:1设a为实参数组,类型为整型,a占有以2000为首地址的一块内存区。b为形参数组名,当发生函数调用时,进行地址传送,把实参数组a的首地址传送给形参数组名b,于是b也取得该地址2000。a、b两数组共同占有以2000为首地址的一段连续内存单3元。a和b下标相同的元素实际上也占同一个内存单元。即a[0]等于b[0]、a[1]等于b[1]、.....、a[9]等于b[9]。a[o]a[1]a[2]a[6]a[7] a[8]a[3]a[4] a[5]la[9]起始地址24681012141618202000b[0] b[1] b[2]b[3] b[4]b[5] b[6] b[7]b[8] b[9]
例如: ① 设a为实参数组,类型为整型,a占有以2000为首地址的 一块内存区。 ② b为形参数组名,当发生函数调用时,进行地址传送,把 实参数组a的首地址传送给形参数组名b,于是b也取得该 地址2000。 ③ a、b两数组共同占有以2000为首地址的一段连续内存单 元。a和b下标相同的元素实际上也占同一个内存单元。 即a[0]等于b[0]、a[1]等于b[1]、.、a[9]等于b[9]

注意:数组b和数组a占据同一段内存。例:数组名做参数。1#include 数组a1 f(int b[2l):void259数组b3int main(int a[2]={3,5] ;45//输出:3printf("%d %d\n",a[o],a[1]);f(a6prinf("%d %%d\n",a[o],a[1]];725//输出:8retyrn o;Ovoid/f(int b[2])10( int i;11for (i=0;i<2;i++)b[i]= b[i]*b[i];
例:数组名做参数。 注意:数组b和数组a占据同一段内存。 ① #include ② void f(int b[2]); ③ int main() ④ { int a[2]={3,5}; ⑤ printf("%d %d\n" ,a[0],a[1]); ⑥ f(a); ⑦ printf("%d %d\n",a[0],a[1]); ⑧ return 0; ⑨ } ⑩ void f(int b[2]) ⑪ { int i; ⑫ for (i=0;i<2;i++) ⑬ b[i]= b[i]*b[i]; ⑭ } 3 5 数组a //输出: //输出: 数组b 9 25

随堂练习1:一维数组sc内放10个学生成绩,求平均成绩一用函数实现。解题思路:(1用函数av求平均成绩,形参用数组名。函数首部格式:doubleav(inta[10])3在av函数中用各数组元素求出平均成绩并返回main函数形参是数组主函数调用av函数求平均值:aver-av(sc);#include儿利用函数求平均dcbleav(inta[10]1l求平均doubleav(inta[10]);② int i; double s=o;intmain()③for(i=0;i<10;i++)int sc[10],i;④s=s+a[i];doubleaver;I/平均成绩相当于sc[]?s=s/10;for(i=0;i<10;i++)?scanf("%d"&sc[i]);return S;?人avertav(sc);printf("%.2ifin",aver);return O;?
① #include // 利用函数求平均 ② double av(int a[10]); ③ int main() ④ { int sc[10],i; ⑤ double aver; //平均成绩 ⑥ for (i=0;i<10;i++) ⑦ scanf("%d",&sc[i]); ⑧ aver=av(sc); ⑨ printf("%.2lf\n",aver); ⑩ return 0; ⑪ } ① double av(int a[10]) // 求平均 ② { int i; double s=0; ③ for(i=0;i<10;i++) ④ s=s+a[i]; ⑤ s=s/10; ⑥ return s; ⑦ } 形参是数组 相当于sc[i] 一维数组sc内放10个学生成绩,求平均成绩—用函数实现。 • 解题思路: ① 用函数av求平均成绩,形参用数组名。 ② 函数首部格式:double av(int a[10]) ③ 在av函数中用各数组元素求出平均成绩并返回main函数。 ④ 主函数调用av函数求平均值: aver=av(sc); 随堂练习1: