1、7.2.17.2.1、二维数组的定义和引用、二维数组的定义和引用 1.1.二二维数组维数组定义定义:类型标识符类型标识符 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22;二维数组可看作一个二维表格或矩阵。二维数组可看作一个二维表格或矩阵。int a23;int a23;定义了一个定义了一个2 2 3 3的数组的数组a a,可存放,可存放6 6个整型数据。个整型数据。2.2.二维数组元素的引用:二维数组元素的引用:二维数组元素引用必须带有二维数组元素引用必须带有两个下标两个下标,一般形式:,一般形式:数组名数组名 下标表达式下标表达式11下标表达式下标表达式22注意:注意:下标表
2、达式可以是整型常量、整型变量及其表达下标表达式可以是整型常量、整型变量及其表达式。式。例如,对数组例如,对数组 int a23;int a23;其其6 6 个元素是:个元素是:a00,a01,a02,a10,a11,a12a00,a01,a02,a10,a11,a12 1.如果从表格角度来理解,则数组元素引用形式为 数组名数组名 行号行号列号列号 a00a00a01a01a02a02a10a10a11a11a12a12(0 0)行行(1 1)行行(0 0)列列(1 1)列列(2 2)列列2.如果从矩阵角度来理解,则2*3矩阵为:a a0000 a a0101 a a0202 a=a a=a10
3、10 a a11 11 a a12 12 则则2 2*3 3矩阵矩阵可以用数可以用数组组 a23a23来表示来表示 二维数组的顺序存储结构(按行存放):二维数组的顺序存储结构(按行存放):int a23;int a23;a00 a01a02a10a11a12第行第行 a a 代表整个二维数代表整个二维数组的组的首地址首地址等价:等价:&a00&a005/505二维数组示例1(7.5):请写出下列程序运行结果。#include main()int i,j,a23;for(i=0;i2;i+)for(j=0;j3;j+)aij=i+j;for(i=0;i2;i+)for(j=0;j2!117以下能
4、对二维数组a进行正确初始化的语句是()。Aint a14=1,2,3,4,5;Bfloat a3=1,2,2,3,3,1;Clong a23=1,1,2,1,2,3,0,0;Ddouble a 3=8;二维数组练习一:CDD 二维数组应用实例讲解10/5010n*n 矩阵 j i 1 2 3 4 10 1 2 3 10 10 1 2 10 10 10 1矩阵常用运算。矩阵常用运算。1.1.转置;转置;aijaij与与ajiaji。2.2.行或列互换及移位行或列互换及移位;3.3.加、减、乘、除及对角线求和;加、减、乘、除及对角线求和;主对角线:主对角线:i=j次对角线次对角线 i+j=n-1i
5、+j=n-1上三角:上三角:ij(红色)红色)二维数组ann常用来表示n*n 矩阵 二维数组示例2:求矩阵的转置矩阵。1 231474 562587 89369从上可知,方法1:转置矩阵是将原矩阵元素按行列互换行列互换形成的。1 2 34 5 67 8 9123456789 方法方法1之程序:之程序:#include#include main()main()int i,j;int i,j;int a33=1,2,3,4,5,6,7,8,9,b33;int a33=1,2,3,4,5,6,7,8,9,b33;for(i=for(i=0 0;i;i3 3;i+);i+)for(j=for(j=0
6、0;j3;j+);j3;j+)bji=aij;bji=aij;for(i=for(i=0 0;i;i3 3;i+);i+)for(j=for(j=0 0;j;j3 3;j+);j+)printf(%6d,bij);printf(%6d,bij);printf(n);printf(n);二维数组示例2:求矩阵的转置矩阵。1 231474 562587 89369方法2:沿主对角线将对称位置互换元素即可。这时可将转置矩阵放在原数组中。1 231474 562587 89369方法方法2之程序留给同学们完成!之程序留给同学们完成!1 2 3 49 8 7 6-10 10 -5 2 a=15 二维数组
7、示例3(7.7):有一个34的矩阵,要求编程求出其中最大元素值及其行列号。16#include main()int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;int i,j,row=0,colum=0,max;max=a00;for(i=0;i=2;i+)for(j=0;jmax)max=aij;row=i;colum=j;printf(max=%d,row=%d,colum=%dn,max,row,colum);171 1 1 1 2 1 1 3 3 1 1 4 6 4 1 二维数组示例4:输入任意行数n,输出下列格式的杨辉三角形前n行。1.可以看成5*5的矩阵;2.矩
8、阵第0列和主对角线值为1;3.aij=ai-1j-1+ai-1j;18#includemain()int a1010,i,j,n,k;scanf(%d,&n);for(i=0;in;i+)for(j=0;j=i;j+)if(i=j)|(j=0)aij=1;else aij=ai-1j-1+ai-1j;printf(%6d,aij);printf(n);191下面程序的输出结果是 。#include main()int a33=0,0,0,1,1,1,2,2,2,i,j,s=1;for(i=0;i3;i+)for(j=0;j=i;j+)s+=a2ajj;printf(%dn,s);二维数组练习二
9、:0 0 0 i=0 s=s+a20=3 1 1 1 i=1 s=3+a20+a21=7 2 2 2 i=2 s=7+a20+a21+a22=131320/50202:完成下面的程序,此程序是求出数组a的两条对角线上的元素之和。#include#include main()main()int a33=2,3,4,8,3,2,7,9,8int a33=2,3,4,8,3,2,7,9,8;int sum1=0,sum2=0,i,j;int sum1=0,sum2=0,i,j;for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j3;j+)for(j=0;j3;j+)_;_;for(i=0;i3;i+)for(i=0;i=0;j-或j=0;j3;j+i+j=221/5021例例:一个三维数组的赋值与输出一个三维数组的赋值与输出程序如下:#includemain()int i,j,k,a23=1,2,3,4,5,6,7,8,9,10,11,12;for(i=0;i2;i+)for(j=0;j2;j+)for(k=0;k3;k+)printf(%3d,aijk);printf(n);输出结果为:
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。