
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501

第8章 数组
第 8 章 数 组

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

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

8.4.1数组元素作函数实参一P171 1、函数的实参可以是表达式,数组元素可以是表达式的 组成部分数组元素可以作为函数的实参。 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个数组相应元素的比较。 ②将对应数组元素作为函数参数进行比较,根据函数返回值 统计两个数组相应元素大于、等于、小于的次数
例8.17,数组比较:有两个数组a、b,各有10个元素,将它 们对应地逐个相比(即a[0]与b[0]比、a[1]与b[1]比、.、 a[9]与b[9]比)。 要求:统计出两个数组相应元素大于、等于、小于的次数。 分析: ① 利用函数完成2个数组相应元素的比较。 ② 将对应数组元素作为函数参数进行比较,根据函数返回值 统计两个数组相应元素大于、等于、小于的次数

① #include ① int main0l比较数组 ② int large(intx,inty) ② {inta[10],b[10],i,m=0,n=0,k=0; ③ Ⅲ比较两个数的大小关系 ③ for(i=0;iy)f仁1; ⑤ for (i=0;i<=9;i++) ⑥ else if (x==y)f=0; ⑥ scanf("%d",&b[;∥输入b数组 ⑦ else f=-1; ⑦ for (i=0;i<=9;i++) ⑧ return f; ⑧ if (large(a[i],b[i])==1) m++; ⑨ ⑨ if(large(a0,b0)==o) n++; ⑩ if (large(a[i],b[i])==-1)k++; 23 45 678899 0 23456780901 ① 2 7 ② printf("%d %d %dln",m,n,k); ⑧ return 0; ④}
① #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语言中,数组名代表的是数组的起始地址—地址常量。 ② 用数组名作函数参数时-要求函数的形参和实参都必须是 相同类型的数组名或指针—明确的类型说明。 ③ 用数组名作函数实参时,向形参传递的是实参数组在内存 中的首地址—地址常量。 ④ 实参中的数组首地址传到形参中,实参和形参共用同一段 内存-函数中对形参数组元素的操作实际是对实参数 组元素的操作

例如: ①设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]。 a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9] 起始地址 2000 2468101214161820 b[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占据同一段内存。 ① #include〈stdio.h> ② void f(int b[2]); 数组a 9 25 ③ int main() 数组b ④ {inta[2]={3,5}; ⑤6 printf("%d%d小n",a[0],a[1]);/输出:35 f(a) ⑦⑧ 1%dn",a[0],a[1]); /输出:925 return 0; 0 void (int b[2]) int i; f6r(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 //输出:3 5 //输出:9 25 数组b 9 25