C语言第6章2、二维数组.ppt_第1页
C语言第6章2、二维数组.ppt_第2页
C语言第6章2、二维数组.ppt_第3页
C语言第6章2、二维数组.ppt_第4页
C语言第6章2、二维数组.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,1,构造数据类型,第六章,2,2,主要内容,数组概述 一维数组 二维数组 字符数组 结构体类型,3,3,二维数组,一、二维数组的定义 二、二维数组的引用 三、二维数组的初始化 四、二维数组元素在内存中的排列顺序 五、应用举例,4,4,一、二维数组的定义,格式: 数组类型名 数组名数组元素个数 数组元素个数 例: float a5 4; int b5 6; char str3020;,二维实数数组, 5行、4列,二维整数数组, 5行、6列,二维字符数组, 30行、20列,第一维,第二维,5,5,float a5 4;,列,行,二维实数数组: 5行、4列,矩阵 A,0,1,2,3,4,0,1,2,3,6,6,二维数组在内存中的存放过程: float a5 4;,1.00 2.00 3.00 4.00,5.00 6.00 7.00 8.00,9.00 10.0 11.0 12.0,13.0 14.0 15.0 16.0,17.0 18.0 19.0 20.0,1.00,2.00,3.00,4.00,5.00,6.00,. ,18.0,19.0,20.0,7,7,char str3020,在内存中的存放过程:,M a r r y,H a r r y,P h i l i p,B u s h,L i n d a,0,1,2,3,4,0,1,3,4,2,8,8,二、数组的引用,格式:数组名行下标列下标; 例: b32:b 数组第 4 行第 3 列的元素; aij : a 数组第 i+1 行第 j+1 列的元素; 注意:数组的下标从 0 开始计数,9,9,对数组的操作是通过对每个数组元素的处理来实现的:,二维数组的输入 int b32; printf(“please enter the data:n“) for(i = 0;i3;i+) for(j = 0;j2;j+) scanf(“%d“, ,内循环,外循环,每一个数组元素,怎样输入数据, 能保证输入正确?,程序中语句的写法 计算机处理读入数据的方法,for(i = 0;i3;i+) for(j = 0;j2;j+) scanf( “%d, “, ,b00,b01,b10,b11,b20,b21,1,b00,int b32; for(i = 0;i2;i+) for(j = 0;j3;j+) scanf(“%d“, ,如果, 输入程序如下所示:,那么, 输入的数组元素的顺序如何?,1.0,输入的数据应以怎样的顺序排列?,、b10,、b20,、b01,、b11,、b21,5.0,9.0,2.0,6.0,10.0,2,12,输出数组,int b32; for(i = 0;i3;i+) for(j = 0;j2;j+) printf(“b%d%d = %d“, i, j, bij); printf(“n“); ,输出结果形式如何?,b00 = 1.0,b01 = 2.0,b10 = 5.0,b11 = 6.0,b10 = 9.0,b11 = 10.0,13,13,如果输出程序改为:,int b32; for(i = 0;i2;i+) for(j = 0;j3;j+) printf(“b%d%d = %dt“, j, i, bji); printf(“n“); ,b00 = 1.0 b01 = 2.0 b02 = 5.0 b10 = 6.0 b11 = 9.0 b12 = 10.0,输出结果形式如何?,四、二维数组的初始化,分行赋初值 int a23 = 1, 2, 3, 4, 5, 6 ;,a,第一行,第二行,15,四、二维数组的初始化,不分行赋初值 int b23 = 1, 2, 3, 4, 5, 6;,16,16,对部分元素赋初值 int c24 = 0, 2, 3 ; 未赋值的元素自动赋值0, 而且前面的0不能省, 后面的0可以省,对全部元素赋初值, 省略第一维的长度 int a 2 = 1, 2, 3, 4 ; 第一维的长度由初始化状态决定。 本例为:2行,四、二维数组的初始化,17,17,二维数组:,定义: 数组元素的类型、数组变量名称、数组的维数、每一维数组元素的个数; 引用: 数组型变量必须先定义, 后使用。 只能逐个引用数组元素, 不能直接引用整个数组型变量。 数组下标从 0 开始。,用二维数组编程时,可以这样思考:,在存储器中有一片连续的内存区,名称为a。 它对应一个m行n列的矩阵。,将需要处理的一组数据,依次放入这片连续内存区的每一个单元中。对应的名称分别为:,a0 0,a0 1,a02, ,a0 n-1,根据问题的需要,对这组数据中的每一个数据元素进行相应的处理,处理时的访问方式为:a ij ,即:数组a中行下标为i列下标为j 的位置处的数组元素。,a1 0,a1 1,a12, ,a1 n-1,am-1 0,am-1 1,am-12, ,am-1 n-1, ,19,19,二维数组,一、二维数组的定义 二、二维数组的引用 三、二维数组的初始化 四、二维数组元素在内存中的排列顺序 五、应用举例,20,20,定义三个二维数组:a34, b34, c34;,for(i = 0;i3;i+) for(j = 0;j4;j+) scanf(“%d“, ,输入 b 矩阵的元素值:,for(i = 0;i3;i+) for(j = 0;j4;j+) scanf(“%d“, ,输入 a 矩阵的元素值:,1. 求两个3*4矩阵的和。,21,21,计算 c 矩阵的元素值:,输出矩阵a、b、c,for(i = 0;i3;i+) for(j = 0;j4;j+) cij = aij+ bij;,for(i = 0;i3;i+) for(j = 0;j4;j+) printf(“%6d“, aij); printf(“n“); ,1. 求两个3*4矩阵的和。,for(i = 0;i3;i+) for(j = 0;j4;j+) printf(“%6d“, bij); printf(“n“); ,for(i = 0;i3;i+) for(j = 0;j4;j+) printf(“%6d“, cij); printf(“n“); ,22,23,24,24,2. 将一个4*3的矩阵转置。,(1)定义两个二维数组:a43, b34;,for(i = 0;i4;i+) for(j = 0;j3;j+) scanf(“%d“, ,(2)输入 a 矩阵的元素值:,25,25,2. 将一个4*3的矩阵转置。,(4)输出矩阵a、b:,for(i = 0;i3;i+) for(j = 0;j4;j+) printf(“%6d“ , b i j ); printf(“n“); ,for(i = 0;i4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论