第11讲 数组与指针 ①感觉越来越难的原因是对前面的知识没有及时理解和掌握 看懂、听懂并不等于会用 课堂上时间有限,大家一定要及时预习和复习 复习时注意只需要把我课上讲的几个例题理解透彻并掌握即 可。 编程步骤: 分析→程序框架(粗算法)→细算法→程序→调试 另:贵班某些人的学习情况令人担忧!
第11讲 数组与指针 感觉越来越难的原因是对前面的知识没有及时理解和掌握。 看懂、听懂并不等于会用。 课堂上时间有限,大家一定要及时预习和复习。 复习时注意只需要把我课上讲的几个例题理解透彻并掌握即 可。 •编程步骤: •分析→程序框架(粗算法)→细算法→程序→调试 另:贵班某些人的学习情况令人担忧!
统计将“求一个数组所有元素 之和”写成函数,怎样 n算法: 写? n输入# include<stih *define N 30 统计 void maino 计算ntaN 输入 float sum=o, ave uts("please input %d score: 2, 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)
2 统计总分和平均分 ▪ 算法: ▪ 输入全班学生的成绩 ▪ 统计总分 ▪ 计算平均分 ▪ 输入总分和平均分 #include <stdio.h> #define N 30 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> 数参数 *definen 30 /函数功能:求一个长度为如中所右云素的性和 float Sum(float ad, in 调用过程? int l, void m 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);
3 写成多函数形式 #include <stdio.h> #define N 30 /*函数功能:求一个长度为n的数组中所有元素的总和*/ float Sum(float 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 67 78 主函数
4 难点:函数调用过程 形参数组a sum函数 参数传递 传过来的是数组首地址 实参数组与形参数组共占内存 即两者是同一个数组 只是名称和作用域各不相同 6000 实参数组score 主函数 67 78 97 79 6000 67 78 … 79 97 实参数组score 主函数
涉及语法 数组名作函数参数 传递整个数组到另一个函数内,只是将数组 的首地址作为参数传过去 用数组名作为函数参数 只拷贝一个地址自然比拷贝全部数据效率高 由于首地址相同,故实参数组与形参数组占用同 段内存 这样,在该函数内,不仅可以读这个数组的元素, 还可以修改它们 普通变量做参数,形参另占一个存储空间,存储由实参传递过来 的数值。 数组做参数,形参另占一个存储空间,存储由实参传递过来 的地址
5 涉及语法 -数组名作函数参数 ▪ 传递整个数组到另一个函数内,只是将数组 的首地址作为参数传过去 ▪ 用数组名作为函数参数 ▪ 只拷贝一个地址自然比拷贝全部数据效率高 ▪ 由于首地址相同,故实参数组与形参数组占用同 一段内存 ▪ 这样,在该函数内,不仅可以读这个数组的元素, 还可以修改它们 ▪普通变量做参数,形参另占一个存储空间,存储由实参传递过来 的数值。 ▪ 数组做参数,形参另占一个存储空间,存储由实参传递过来 的地址