内容正文:
课程单元教案
本课编号
13
本课课时
2学时
内容提要
项目5 数组应用
任务3 二维数组
教学目的
1、掌握二维数组的定义、初始化和引用的方法;
2、熟练使用二维数组解决问题。
知识能力
结构
掌握二维数组的用法。
教学重点
难点
重点:二维数组的定义、初始化和引用;
难点:二维数组初始化。
教学手段
方法
教学方法:项目任务驱动教学法、提问式、启发式
教学手段:课堂讲授法、操作演示法、多媒体教学
思考题与
习题
1、什么是二维数组。
2、求二维数组中最大数和最小数及其对应的行号和列号。
教学内容进程设计
项目导入:综合实践5学生多门成绩存储与处理设计
项目描述:利用数组来存储和处理学生的多门课成绩。
问题导入:如何实现多个学生多门成绩的存储与处理?
根据课前预习及搜集的资料,对二维数组的概念有一个初步的了解,以方便进行下面知识内容的学习。
任务3 二维数组定义及应用
3.1 二维数组
1.定义
二维数组定义的一般形式:
类型声明符 数组名 [常量表达式1] [常量表达式2];
例如:int a[2][3];说明了一个两行三列的数组。
二维数组在内存中按行存放:
说明:(1)二维数组定义中常量表达式1表示数组的行数,常量表达式2表示数组的列数;两个数字的乘积是数组元素的个数。
(2) 二维数组占有连续的存储空间,各元素是按行存储的。
(3)二维数组元素的行列下标值也是从 0 开始的。
2. 初始化
(1)按行给二维数组赋初值。
例如:int b[3][2]={{1,6},{2,5},{3,4}};
(2)按存储顺序对各元素赋初值。
例如:int d[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)如对全部元素赋初值,则第1维长度可以省略。
例如:int d[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
(4)可以对部分元素赋初值,未赋初值的元素自动取0值。
例如: int a[3][3]={{1},{2},{3}};
赋值后各元素的值为:
1 0 0
2 0 0
3 0 0
3.引用
数组引用格式:数组名[下标] [下标]
例如:int a[3][3]={1,2,3,4,5,6,7,8,9};
则第1行第2个元素是a[0][1],第2行第3个元素是a[1][2]。
3.2 二维数组应用
例1:编程实现求一个3行4列整型数组的平均数。
算法分析:
(1)定义一个二维数组a[3][4];
(2)为数组赋值;
(3)累加元素的和,存入变量s中;
(4)求平均数ave=s/12;
(5)输出平均数ave。
#include<stdio.h>
main()
{ int a[3][4],i,j,s=0;
printf(“请输入二维数组:”);
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++)
s+=a[i][j];
ave=s/12;
printf(“平均值为:%5d
”,ave); }
例2:编程实现把一个三行三列的二维数组转置输出。
算法分析:
(1)定义一个二维数组a[3][3];
(2)为数组赋值;
(3)交换a[i][j]与a[j][i]的值;
(4)输出交换后的数组a。
#include<stdio.h>
main()
{int a[3][3],i,j,s=0,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<i;j++)
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for(i=0;i<3;i++) { for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("
");} }
随堂实训练习:
1、建立一个3*4的实型数组矩阵,求它的行平均数和列平均数。
2、建立一个4*4的整型数组矩阵,分别求主对角元素和副对角线之和并输出。
3、建立一个4*4的整型数组矩阵,输出最大数和最小数及其对应的行号和列号。
教学小结
(1)理解二维数组的概念;
(2)掌握二维数组如何定义、初始化,以及如何引用数组元素;
(3)能将数组用于实际数据的存储,并完成相关题目。
学科网(北京)股份有限公司
$$