C语言ch062二维数组

上传人:平*** 文档编号:46084874 上传时间:2018-06-22 格式:PPTX 页数:33 大小:2.28MB
返回 下载 相关 举报
C语言ch062二维数组_第1页
第1页 / 共33页
C语言ch062二维数组_第2页
第2页 / 共33页
C语言ch062二维数组_第3页
第3页 / 共33页
C语言ch062二维数组_第4页
第4页 / 共33页
C语言ch062二维数组_第5页
第5页 / 共33页
点击查看更多>>
资源描述

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

1、2012/10/141上一节我们学到了n一维数组的声明、初始化、赋值及元素引用n一维数组的排序、逆置2012/10/142第六章 利用数组处理批量数据2012/10/143n n6.1 6.1 怎样定义和引用一维数组怎样定义和引用一维数组n n6.2 6.2 怎样定义和引用二维数组怎样定义和引用二维数组n n6.3 6.3 字符数组字符数组内容Contents2012/10/1446.2.1 怎样定义(声明)二维数组nC支持多维数组。n比如,一个二维数组的创建ntype arrayName行数列数;n如:float a36;n定义1个float型二维数组a,3行6列,18个元素nint b51

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

3、10 a)nint a2010;n定义了一个有20个int10类型元素数组na0、 a1a9的类型是int10,na00、 a01a199的类型是intnint a302010;n这个呢?n这种特性决定了数组元素在内存的分布规律,也解释了数组 的很多语法现象2012/10/1486.2.2 怎样引用二维数组的元素n先定义,后使用n数组元素的引用:数组名行下标 列下标n行下标和列下标:整型表达式n行下标的取值范围是0,行长度-1n列下标的取值范围是0,列长度-1nint a32; 3 行 2 列, 6 个元素na00 a01 na10 a11 na20 a21 n注意下标不要越界2012/10/

4、1496.2.3 二维数组的初始化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; / 不推荐2012/10/14106.2.3 二维数组的初始化int a34 = 1, 5, 9;等价于int a34 = 1,0,0,0, 5,0,0,0, 9,0,0,0; 2012/10/14116.2.3 二维数组的初始化int a34 = 1, 5,6;相当于int a34 = 1, 5,6, 0;2012/10/14126.2.3 二维数组的初始化int a34

5、= 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; 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;2012/10/1413int a34;int i, j;for (i=0; iint mai

6、n() int a23 = 1, 2, 3,4, 5, 6;int b32,i,j;printf(“array a:n“);for (i=0; iint main(void) int row, col, i, j; int a32;printf(“Enter 6 integers:n“);for (i = 0; i arowcol)row = i; col = j; printf(“max = a%d%d = %dn“, row, col, arowcol);return 0; 6_5_MatMax.c2012/10/14192012/10/1420nN阶方阵用二维数组表示:nint aNN;

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

8、;printf(“original array:n“);for (i = 0; i int main(void) 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(“rev

9、ersed array:n“);for (i = 0; i 3; i+) for (j = 0; j 3; j+)printf(“%5d“, aij);printf(“n“);return 0; 这个程序的输出是?这个程序的输出是?2012/10/14241 2 3 4 5 6 7 8 9思考 互换之后数组a变为?i=0 1 4 7 2 5 6 3 8 9i=1 1 2 7 4 5 8 3 6 9i=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; 2012/10/1425思考n矩阵的加法怎么实现?2012/10/1426这一节我们学到了n二维数组的定义、初始化和引用n基本的矩阵运算2012/10/1427作业nP168 习题2、4、6、8n周三(17号)8:00之前提交到ftp服务器2012/10/14282012/10/14292012/10/14302012/10/14312012/10/14322012/10/1433

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号