资源描述:
《第十二讲(数组2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二讲二维数组的定义与引用【主要讲授内容】7.2二维数组的定义7.3字符数组【重点与难点】1.重点二维数组的概念、定义、赋值及引用;字符数组的定义、赋值及引用2.难点二维数组的概念、二维数组的基本运用【教学要求】1.掌握基本概念:二维数组、字符数组;2.二维数组的定义、赋值、引用;3.字符数组的定义、赋值、引用;4.二维数组和字符数组的基本运用。【实施方法】课堂讲授,利用多媒体演示数组概念,采用提问式教学法引入教学。【学时安排】2学时讲授内容1.二维数组基本概念二维数组是既有行又有列的数组的数组。从列的
2、角度来说,即一行就是一个一维数组,所有的行就构成了一个二维数组。在C中,数组是以行优先存放的,因此二维数组的第二维变化最快,然后才是第一维。(1)定义形式如下类型说明型数组名[下标1][下标2];根据C语言的规定,可以把二维数组看作一个特殊的一维数组:它的每一个元素又是一个一维数组。例如,inta[3][3];8二维数组可看成一维数组的效果如下图所示:即上述二维数组中的各个元素的存放顺序依次为:a[0][0]->a[0][1]->a[0][2]->a[1][0]->a[1][1]->a[1][2]->a[
3、2][0]->a[2][1]->a[2][2](2)初始化二维数组的初始化方法如下:1)逐行对所有元素赋初值。例如,inta[2][3]={{1,7,6},{2,3,17}};上述初始化列表中的每一对子花括号内的数值严格对应到数组中的一行。数据按顺序赋给该行中的第0列,第1列等等,如果没有足够的列获得初值,则这些列的值将是一个随机值。2)将所有数据写在一对花括号内。例如,inta[2][3]={1,7,6,2,3,17};根据数据元素存储的行优先原则,这些元素先赋值给第一行的元素,再赋值给第二行的元素等等
4、。3)可以对每行的前一部分元素赋初值。例如,inta[2][3]={{1},{2,6}};则1、2、6分别赋值给a[0][0]、a[1][0]、a[1][1]。4)如果对全部元素赋初值,则第一维的长度可以不指定,但第二维的长度不能省。例如,inta[][3]={1,7,6,2,3,17};也可以只对部分元素赋初值,但应分行赋初值。例如,inta[][3]={{1},{2,6}};(3)引用形式数组名[下标1][下标2]其中,“下标1”表示行下标,“下标2”表示列下标,二者必须都是整型表达式。例如,输出数组
5、a中的第一行第二列的元素:8printf(“%d”,a[0][1])。例如,对于上述array数组,输出第0个元素赋值:printf(“%d”,array[0]);请注意数组的定义形式和数组元素的引用形式的区别。2.二维数组应用举例例7.3按行优先次序输入一个2X3的矩阵,再按列优先次序输出。基本思路(1)定义一个2行3列的二维数组,接收键盘输入(2)将列数作为控制循环的条件,如果3列还没有输完,则转(3),否则转(4)(3)输出当前列i(首先是第一列,i=0)的当前行j(首先是第一行,j=0)元素的值,
6、即a[j][i],接着,行号加1输出a[j+1][i]后换行,然后将输出列号加1,行号赋为0,再转(2)(4)屏幕按列优先输出矩阵的值,程序结束程序见教程P98例7.4有一个3X4的矩阵,编程序求出其中最大的那个元素的值,以及它所在的行号和列号。基本思路(1)用二维数组a[3][4]存放矩阵,另外定义3个变量max,row,col,用于存放最大值,及所在行号和列号,且它们的初值分别是a[0][0],0,0(2)外层循环控制行变量i,内层循环控制列变量j(3)在每一次内循环中,将max的值和a[i][j]进
7、行比较,只要发现后者更大,即执行语句块:max=a[i][j];row=I;col=j;(4)当外循环体结束时,max,row和col变量的值即为所求程序见教程P993.字符数组基本概念字符数组是数组元素类型为字符类型的数组。字符数组中的一个元素用来存放一个字符。字符数组具有数组的全部特性。(1)字符串常量8字符数组可以被视为是字符变量的集合。和它相对应的是字符串常量,所谓字符串常量就是用一对双引号括起来的字符常量的集合。例如,"abc","hello"都是字符串常量。字符串在存储到内存中时,系统会自动对
8、它加一个′ ′作为结束符。例如:"hello"表面上看只有5个字符,但在内存中占6个字符,最后一个字符就是由系统自动添加的′ ′,也可以用0或NULL来表示。(2)字符数组的定义字符数组包括一维字符数组和多维字符数组(以二维为例)。其定义方式如下:char数组名[常量表达式];char数组名[常量表达式1][常量表达式2];例如,chara[10];chara[3][10];(3)字符数组的初始化字符数组的初始化有以下几种