教案首页
课程: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小时内删除。