1、第七讲 二维数组,二维数组的定义和引用,一、二维数组的定义定义: 类型说明符 数组名常量表达式1常量表达式2;例如: int number 5 4 ; char ch34, name 8 ;,ch0 ch0 0、ch0 1 、 ch0 2 、ch0 3 ch1 ch1 0、 ch1 1 、 ch1 2、ch1 3 ch2 ch2 0、 ch2 1、 ch2 2、ch2 3 相当于3个一维数组ch04、ch14、ch24,数组的存储结构:以“行”为主序,.,二、二维数组的引用数组名下标下标 如:a23数组元素可出现在表达式中 b12=a23/2也可以被赋值 a23=3注意:(1)其中下标可以是整
2、型表达式;(2)不要写成a2,3等形式;(3)下标值应在已定义的数组大小范围内;(4)定义与引用时用的a34的区别。,三、 二维数组的初始化 (1)分行赋值:int a34= 1,2,3,4, 5,6,7,8, 9,10,11,12 ; (2)所有数据写在一个花括号内,按序对元素赋初值;如: int a34= 1,2,3,4,5,6,7,8,9,10,11,12 ; (3)可对部分元素赋值:int a34= 1, 5, 9 ; 等价于:int a34= 1,0,0,0, 5,0,0,0, 9,0,0,0 ; (4)若对全部元素赋初值,则第一维的长度可以不指定,但不能省略第二维的长度。如: in
3、t a34= 1,2,3,4,5,6,7,8,9,10,11,12 ; 等价于: int a 4= 1,2,3,4,5,6,7,8,9,10,11,12 ;,四、二维数组应用举例,例1:将一个二维数组行和列元素互换,存到另一个二维数组中。,分析:,aij = bji,main( ) int a23=1,2,3,4,5,6; int b32 , i, j;for (i=0;i=1;i+) for (j=0; j=2;j+) printf(“%5d” , aij);bji=aij; printf(“n”);for (i=0; i=2; i+) for (j=0; j=1; j+)printf(“%
4、5d” , bij );printf(“n”); ,程序如:,例2: 有一个二维数组a34,找出其中的最大元素,并指出所在的行号和列号。,N -S 图:,for ( i=0; i=2; i+)for ( j=0; j=3; j+)if ( aij max ) max = aij;row = i;colum = j; printf(“ max=%d , row=%d , colum=%dn”, max , row, colum); ,main( ) int i , j , row=0 , colum=0, max;int a34= 1,2,3,4, 9,8,7,6, -10,10,-5,2 ;m
5、ax=a00;,程序:,将二维数组按某行的进行列排序 求二维数组各列的和 求二维数组的鞍点矩阵(鞍点是指二维数组中某个位置上的数在行上是最大值,在列上是最小值) 将二维数组旋转90度,例1: 有3个字符串,要求找出其中的最大者。,分析:设有一个二维字符数组str,大小为320,每一行可以容纳20个字符。如下图所示:,str0,str1,str2,C h i n a 0,J a p a n 0,E n g l i s h 0,程序如下:,main( ) char string20, str320;int i;for(i=0; i0 ) strcpy(string, str0); else str
6、cpy(string, str1);if (strcmp(str2, string)0) strcpy(string, str2);printf(“nThe largest string is:n%s”, string); ,运 行,例4 打印出以下的杨辉三角形(要求打印出10行)。,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ,分析:设一个二维数组:a1111,则杨辉三角形有如下特点: (1)数组的第一列和对角线元素值均为1; (2)其他各元素为a i j=a i-1 j-1 +a i-1 j ,#define N 11main( ) int i, j, a N N;for( i=1; iN; i+) aii=1; ai1=1; for( i=3; iN; i+)for( j=2; j=i-1; j+)aij=ai-1j-1+ai-1j;for( i=1; iN; i+) for( j=1; j=i; j+)printf(“%6d”, aij );printf(“n”); ,11 11 2 11 3 3 11 4 6 4 1 1 5 10 10 5 1 .,作业:如果要输出的最终结果如上图所示, 则怎样修改程序?,作业,实验书P31/3,4;P32/B2;P36/2,