062是c语言常量吗,C语言ch062二维数组.pptx

《C语言ch062二维数组.pptx》由会员分享,可在线阅读,更多相关《C语言ch062二维数组.pptx(33页珍藏版)》请在人人文库网上搜索。

1、2020/11/11,1,上一节我们学到了,一维数组的声明、初始化、赋值及元素引用 一维数组的排序、逆置,2020/11/11,2,第六章 利用数组处理批量数据,2020/11/11,3,6.1 怎样定义和引用一维数组 6.2 怎样定义和引用二维数组 6.3 字符数组,内容Contents,2020/11/11,4,6.2.1 怎样定义(声明)二维数组,C支持多维数组。 比如,一个二维数组的创建 type arrayName行数列数; 如:float a36; 定义1个float型二维数组a,3行6列,18个元素 int b510; 定义1个int型二维数组a,5 行 10 列, 50 个元素。

2、,2020/11/11,5,二维数组的理解,二维数组可被看作是一种特殊的一维数组: 二维数组包含行数个子数组 每个子数组包含列数个元素 例如int a23,a包含2个子数组:a0、a1 a0和a1都是包含3个元素的一维数组,a0,a1,2020/11/11,6,内存图示,6,2,a0,a12,int a23 = 1,2,3,4,5,6;,1,3,4,5,6,a11,a10,a02,a01,a00,a1,a,a,a0,a1, 定义了一个有10个int类型元素的数组 a的类型可以看作int10(只是看作,语法并不允许这么定义: int10 a) int a2010; 定义了一个有20个int10类。

3、型元素数组 a0、 a1a9的类型是int10, a00、 a01a199的类型是int int a302010; 这个呢? 这种特性决定了数组元素在内存的分布规律,也解释了数组的很多语法现象,2020/11/11,8,6.2.2 怎样引用二维数组的元素,先定义,后使用 数组元素的引用:数组名行下标 列下标 行下标和列下标:整型表达式 行下标的取值范围是0,行长度-1 列下标的取值范围是0,列长度-1 int a32; 3 行 2 列, 6 个元素 a00 a01 a10 a11 a20 a21 注意下标不要越界,2020/11/11,9,6.2.3 二维数组的初始化,int a34 = 1,。

4、 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12 ; 相当于 int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; / 不推荐,2020/11/11,10,6.2.3 二维数组的初始化,int a34 = 1,5,9 ;等价于 int a34 = 1,0,0,0,5,0,0,0,9,0,0,0 ;,2020/11/11,11,6.2.3 二维数组的初始化,int a34 = 1,5,6 ;相当于 int a34 = 1,5,6,0 ;,2020/11/11,12,6.2.3 二维数组的初始化,int a34 = 1,2,3,4,5,6,7,8,9,10,。

5、11,12; 等价于: int a 4 = 1,2,3,4,5,6,7,8,9,10,11,12; int a4 = 0,0,3,0,0,10 ;/合法,只有第一维长度可以省略,但不推荐 int a = 0,0,3,0,0,10 ;/不合法,int a34; a00 = 1; a01 = 2; a02 = 3; a03 = 4; a10 = 5; a11 = 6; a12 = 7; a13 = 8; a20 = 9; a21 = 10; a22 = 11; a23 = 12;,2020/11/11,13,int a34; int i, j; for (i=0; i3; +i) for (j=0。

6、; j4; +j) aij = i * 4+ j + 1;,2020/11/11,14,6.2.4 二维数组程序举例,例6.4 将一个二维数组行和列的元素互换,存到另一个二维数组中。(矩阵转置),2020/11/11,15,解题思路: 可以定义两个数组:数组a为2行3列,存放指定的6个数 数组b为3行2列,开始时未赋值 将a数组中的元素aij存放到b数组中的bji元素中 用嵌套的for循环完成,2020/11/11,16,#include int main() int a23 = 1, 2, 3, 4, 5, 6 ; int b32,i,j; printf(array a:n); for (i。

7、=0; i2; i+) for (j=0; j3; j+) printf(%5d, aij); bji = aij; printf(n); ,printf(array b:n); for (i=0; i3; i+) for (j=0; j2; j+) printf(%5d, bij); printf(n); return 0; ,2020/11/11,17,例6.5 如何找出矩阵中最大值所在的位置?,将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。 思路: row 记录最大值的行下标 col 记录最大值的列下标 最大值就是 arowcol,2020。

8、/11/11,18,#include int main(void) int row, col, i, j; int a32; printf(Enter 6 integers:n); for (i = 0; i 3; i+) for (j = 0; j 2; j+) scanf(%d, ,row = col = 0; for(i = 0; i arowcol) row = i; col = j; printf(max = a%d%d = %dn, row, col, arowcol); return 0; ,6_5_MatMax.c,2020/11/11,19,2020/11/11,20,N阶方。

9、阵用二维数组表示: int aNN; 其中,N是正整数 每个元素:aij,其中i、j的取值范围0,N-1 下标的对应关系: a00 a01 a02 主对角线 a10 a11 a12 上三角 a20 a21 a22 下三角 副对角线,用二维数组表示方阵,i=j i=j i+j=N-1,21,方阵原地转置,Q:如何将1个n*n的方阵转置(行列互换)后输出 ? 分析:int a33;,#include int main(void) int i, j, temp; int a33 = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; printf(original array:n); for (。

10、i = 0; i 3; i+) for (j = 0; j 3; j+) printf(%5d, aij); printf(n); ,源程序,/ 行列互换 for (i = 1; i 3; i+) / 只遍历除主对角线的下三角阵 for (j = 0; j i ; j+) temp = aij; aij = aji; aji = temp; printf(reversed array:n); for (i = 0; i 3; i+) for (j = 0; j 3; j+) printf(%5d, aij); printf(n); return 0; ,#include int main(vo。

11、id) int i, j, temp; int a33 = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; printf(original array:n); for (i = 0; i 3; i+) for (j = 0; j 3; j+) printf(%5d, aij); printf(n); ,源程序,/ 行列互换 for (i = 0; i 3; i+) for (j = 0; j 3; j+) temp = aij; aij = aji; aji = temp; printf(reversed array:n); for (i = 0; i 3; i+) for (j = 。

12、0; j 3; j+) printf(%5d, aij); printf(n); return 0; ,这个程序的输出是?,2020/11/11,24,1 2 3 4 5 6 7 8 9,思考互换之后数组a变为?,i=0 1 4 7 2 5 6 3 8 9,i=1 1 2 7 4 5 8 3 6 9,i=2 1 2 3 4 5 6 7 8 9,/ 行列互换 for (i = 0; i 3; i+) for (j = 0; j 3; j+) temp = aij; aij = aji; aji = temp; ,2020/11/11,25,思考,矩阵的加法怎么实现?,2020/11/11,26,这一节我们学到了,二维数组的定义、初始化和引用 基本的矩阵运算,2020/11/11,27,作业,P168 习题2、4、6、8 周三(17号)8:00之前提交到ftp服务器,2020/11/11,28,2020/11/11,29,2020/11/11,30,2020/11/11,31,2020/11/11,32,2020/11/11,33。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值