例3:丝增“求一个数组所有元素 之和"写成函数,怎样写? n算法: n输入# include<stih *define N 60 统计 void maino 计算ntaN a输 4 float sum0ave puts("please input %d score: N) for(i=O: i<N: i++) scanf( %d &a[D sum+=a0: 输入并统计总分 ave=sum/N S4 printf"Sum=%.1f, Average=%.1f.\n", sum, ave)
11 例3:统计总分和平均分 ▪ 算法: ▪ 输入全班学生的成绩 ▪ 统计总分 ▪ 计算平均分 ▪ 输出总分和平均分 #include <stdio.h> #define N 60 void main() {int a[N],i; float sum=0,ave; puts("please input %d score:",N); for(i=0;i<N;i++) { scanf("%d",&a[i]); sum+=a[i]; }/*输入并统计总分*/ ave=sum/N; printf(" Sum=%.1f, Average=%.1f.\n", sum,ave); } •将"求一个数组所有元素 之和" 写成函数,怎样写?
写成多函重点:数组名做函 Include <stdio.h> 数参数 *define n 60 /函数功能:求一个长度为组甲匠云素的当和数 float Sum(int al, int 调用过程? [int void mm float sum=0: int score[ni, i: for(i=0; i<n: i++)float sum=0, ave sum+=a[i:puts(“ please input‰ d score:",N); }/统计总分*/for(=0;i<N;i++) return sum scanf(%d5, score[iD) /*输入*/ sum=Sum(score, N: 函数调用,注意数组名做实参*/ printf Sum=%. 1f, Average=%.1f. \n sum, sum/N);
12 写成多函数形式 #include <stdio.h> #define N 60 /*函数功能:求一个长度为n的数组中所有元素的总和*/ float Sum(int a[], int n) {int i; float sum=0; for(i=0;i<n;i++) { sum+=a[i]; }/*统计总分*/ return sum; } void main() {int score[N],i; float sum=0,ave; puts("please input %d score:",N); for(i=0;i<N;i++) { scanf("%d",& score[i]); }/*输入*/ sum=Sum(score,N); /*函数调用,注意数组名做实参*/ printf("Sum=%.1f, Average=%.1f.\n", sum,sum/N); } 重点:数组名做函 数参数 •调用过程?
难点:函数调用过程 数组 SCore 6000 参数传递过程: 实参是主函数中的数组名,因此,传过来的是数组 首地址 形参看似是一个数组,其实,只是一个变量,接收 了传递过来的数组名(首地址) 因此形参和实参均指的是同一个数组 只是名称和作用域各不相同,在主函数中只能使用 score,在Sum函数中只能使用a
13 难点:函数调用过程 形参a Sum函数 6000 数组score 主函数 67 78 97 79 6000 67 78 … 79 97 数组score 主函数 参数传递过程: •实参是主函数中的数组名,因此,传过来的是数组 首地址 •形参看似是一个数组,其实,只是一个变量,接收 了传递过来的数组名(首地址) •因此形参和实参均指的是同一个数组 •只是名称和作用域各不相同,在主函数中只能使用 score,在Sum函数中只能使用a
涉及语法 数组名作函数参数 传递整个数组到另一个函数内,只是将数组 的首地址作为参数传过去 用数组名作为函数参数 只拷贝一个地址自然比拷贝全部数据效率高 由于首地址相同,故实参数组与形参数组占用同 段内存 这样,在该函数内,不仅可以读这个数组的元素, 还可以修改它们 普通变量做参数,形参另占一个存储空间,存储由实参传递过来 的数值。 数组做参数,形参另占一个存储空间,存储由实参传递过来 的地址
14 涉及语法 -数组名作函数参数 ▪ 传递整个数组到另一个函数内,只是将数组 的首地址作为参数传过去 ▪ 用数组名作为函数参数 ▪ 只拷贝一个地址自然比拷贝全部数据效率高 ▪ 由于首地址相同,故实参数组与形参数组占用同 一段内存 ▪ 这样,在该函数内,不仅可以读这个数组的元素, 还可以修改它们 ▪普通变量做参数,形参另占一个存储空间,存储由实参传递过来 的数值。 ▪ 数组做参数,形参另占一个存储空间,存储由实参传递过来 的地址
小结1 n数组和数组元素的概念 数组的定义、初始化、数组元素的引用 与数组相关的程序设计 数组作函数参数 理解数组作函数参数的传递过程 理解并记住形参和实参的格式 15
15 小结1 ▪ 数组和数组元素的概念 ▪ 数组的定义、初始化、数组元素的引用 ▪ 与数组相关的程序设计 ▪ 数组作函数参数 ▪ 理解数组作函数参数的传递过程 ▪ 理解并记住形参和实参的格式