教案首页 课程:C语言程序设计 授课教师: 学年 第 学期 | ||||||||
周次 | 第 周 | 时间 | 年 月 日 | 专业班级: | ||||
授课 章节 | 单元6: 数组的使用(二) | 授课 方式 | 理论课□ 实验课□ 实训课□ 教学做一体化课程√ | 教学 时数 | 2学时 | |||
教学 目的 | 理解二维数组的含义;掌握二维数组的定义、初始化及引用方法;理解并掌握二维数组的输入、输出、等基本操作。 | |||||||
教 学 组 织 | 教学内容 | 教学过程设计及时间分配 | ||||||
1.复习一维数组 2.二维数组的定义与初始化 3.二维数组的引用与基本操作 4. 案例与实践操作 | 1.复习 讲授 互动 5分 2. 二维数组的定义 讲授 10分 3. 二维数组的初始化 演示、讲授 10分 4. 二维数组的引用 演示、操作 15分 5. 二维数组的基本操作 演示、讲授25分 6. 随堂练习 案例 20分 7.小结、作业及实验安排 讲授 5分 | |||||||
教学 重点 | 重点:二维数组的定义与基本操作 难点:二维数组的操作 | |||||||
教学 难点 | ||||||||
教学 手段 | 理论讲授、演示、对比讲解、案例分析 | |||||||
双语 教学 | two-dimension array —二维数组 initialize — 初始化 | |||||||
作业及 思考题 | 作业:单元总结与单元练习 知识拓展:算法的空间复杂度 | |||||||
参考 资料 | 1.谭浩强主编的《C语言程序设计》(清华大学出版社)。 2.丹尼斯·里奇《C语言程序设计》(第二版)。 3.NCRE考试用教程《C语言程序设计》(高等教育出版社)。 4.网络教学资源:国家精品课网站:一维数组的定义和初始化 121.26.225.5/jpkc/cyuyan/index.htm。 | |||||||
本讲 内容 学法 指导 | 对于数组的使用,首先要理解循环定义与声明方式,在此基础上熟练语法规则。数组作为整体进行使用是难点,数组的优势在于简化了操作多个变量的方式,通过练习最终达到灵活运用的目的。 | |||||||
单元6-2 数组的使用(教案)
教学内容及教学过程 | 说明 | |
步骤一 复习 一维数组的作用 一维数组的定义 一维数组的初始化 一维数组元素的引用 步骤二 讲授 6.2 二维数组 如果把一维数组看作数轴上的点的集合,那么二维数组就是平面直角坐标系上的点的集合。二维数组的元素要指定两个下标才能唯一的确定。 6.2.1二维数组的定义 定义二维数组的一般格式为: 类型标识符 数组名[整型常量表达式1] [整型常量表达式2]; int a[3][4]; //表示定义了一个整型二维数组,数组名为a,有12个数组元素 说明: (1)“整型常量表达式1”表示第一维下标的长度,“整型常量表达式2”表示第二维下标的长度,两个表达式分别用方括号括起来; (2)C编译系统为二维数组分配连续的存储空间,将二维数组元素按行依次存储,数组名代表数组在内存中存放的首地址。 如【例6-8】中定义的二维数组,所包含的数组元素及其存储情况如图6-2所示,先存放a[0]行,再存放a[1]行,依次类推,a[0]、a[1]、a[2]分别表示各行首地址。每行的元素也是依次存放的,每个存储单元占4个字节。 6.2.2二维数组的初始化 二维数组的初始化,以数组元素的存储顺序为依据。 【例6-10】 int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}; 这种初始化方式比较直观,按行赋初值,即{0,1,2,3}给a[0]行各元素初始化,{4,5,6,7}给a[1]行各元素初始化,{8,9,10,11}给a[2]行各元素初始化。 【例6-13】 int a[][4]={1,2,3,4,5,6,7,8,9,0}; //数组定义时不指定一维下标长度,根据初始化情况决定 当不指定一维下标长度时,一维下标长度由初始化数据数量除以二维下标长度决定。可以看出有10个初始化数值,二维下标长度为4,可以算出一维下标长度为3。所以上述定义等价于: int a[3][4]={1,2,3,4,5,6,7,8,9,0}; 6.2.3二维数组元素的引用 引用二维数组元素的方法与一维数组类似,一般格式为: 数组名[下标1][下标2] 二维数组元素的访问涉及第一维和第二维两个下标,所以对二维数组的操作通常和二重循环相结合。 【例6-14】二维数组数据的输入和输出。 #include <stdio.h> void main() {int a[3][4],i,j; for(i=0;i<3;i++) //二维数组的输入 for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) //二维数组的输出 { for(j=0;j<4;j++) printf(" %d",a[i][j]); printf("\n"); //每输出一行后换行 } } 【例6-15】将一个3*3的矩阵存入二维数组中,出其中的最大值以及对应的行下标和列下标。 #include <stdio.h> void main() {int a[3][3],i,j; int max,row=0,colum=0; for(i=0;i<3;i++) //输入矩阵 for(j=0;j<3;j++) scanf("%d",&a[i][j]); max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(max<a[i][j]) { max=a[i][j]; row=i; //记录行下标和列下标 colum=j; } printf("最大值是%d,行下标为%d,列下标为%d.\n",max,row,colum); } 6.4 综合应用案例 【例6-24】某班本学期有五门课程,分别输入某宿舍4名同学的各科成绩,输入全部成绩后,统计输出该宿舍每个同学的总成绩。 分析:涉及到的数据有4名同学各自五门课程的成绩,可定义二维整型数组a[4][5]保存成绩,还涉及到4名同学各自的总成绩,可定义一维数组s[4]保存。 #include <stdio.h> void main( ) { int i,j; int a[4][5],s[4]={0}; for(i=0;i<=3;i++) { printf("请输入第%d同学的成绩:\n",i+1); for(j=0;j<=4;j++) scanf("%d",&a[i][j]); } for (i=0;i<=3;i++) for (j=0;j<=4;j++) s[i]= a[i][j]+s[i]; printf("总分分别是:\n"); for(i=0;i<=3;i++) printf("%5d",s[i]); } 步骤三 课堂小结 1.二维数组的意义 注意:行与列 2.数组的定义格式与引用 注意长度与下标 步骤四 实验与作业 1. 实验内容 (1)教材实例6-8 利用VC环境实现该程序 (2)实训指导【1】 1 2 2.课后作业 (1) 单元总结提升 第1题,第2题 (2)单元练习 第一题 3 第二题 2 3 | 。 重点 图形参展定义对照 特殊初始化的说明 重点强调,极易犯错。 分析引导 说明二维数组的使用方法 难点 分析算法 重点分析 注意启发 注意实验总结与积累 在练习中强化 | |
教 学 总 结 | ||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论