资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,数 组,数据类型 数组名常量表达式1常量表达式2,例如:int a 24;,将二维数组可以看作是由行和列组成的,类似于矩阵的形式。,行,列,表示 数组名为a 每个元素的类型int; 数组元素有2X4=8个: 数组的存储单元大小。 8 x sizeof(int)=16 数组元素分别为:,a00,a01,a02,a03,a10,a11,a12,a13,二维数组,P148,C语言中,在线性存储器中存放二维数组 ,是按行排列的 , 即放完一行之后顺次放入第二行 ,依次类推。,二维数组在内存中的存储,若已定义: int a24,问题1: int b32;,问题2: float a222;,P150,将二维数组也可看作一种特殊的一维数组;则一维数组的数组元素又是一个一维数组的数组名。,如有定义,int a24; 数组名 a 可看作由a0、a1两个元素组成的一维数组。而数组元素a0,a1又是包含四个数组元素的一维数组的数组名。,二维数组的特殊性,1、分行赋初值,,2、可不分行,全部写在一起:,如: int a23 = 2,4,1,5,12,67 ,如: int a23 = 2,4,1,5,12,67,如: int a3 3 = 1,5,9 ,以行为基准:每行第1列元素赋初值, 未赋值者自动赋0值。,3、若对全部元素赋初值,则定义数组时对第一维的长度可以省略,但第二维的长度一定不能省。,4、部分赋初值:,如: int a 3 = 2,4,1,5,12,67,等价,二维数组初始化,如: int a33 = 1,0,5,0,0,9 ,如 int a23 = 1,5,9,7,P151,2 4 1,5 12 67,1 0 0,5 0 0,9 0 0,0 5 0,0 0 9,1 5 9,7 0 0,整个数组的输入格式:,若已定义: int a行长列长;,整个数组的输出格式:,for (i=0;i行长;i+) for(j=0;j列长;j+) scanf( %d, ,二维数组的输入输出双循环结构,该语句的作用是:控制二维数组的元素以矩阵的形式输出,for (i=0;i行长;i+) for(j=0;j列长;j+) printf( %d,aij ); printf(n) ,#include main() int a23=1,2,3,4,5,6,b32, i, j ; for (i=0;i=1;i+ +) for (j=0;j=2;j+ +) bji=aij; for (i=0;i3;i+ +) for (j=0;j2;j+ +) printf(%5d,bij); printf(n); ,a =,b =,P152 例6.4:求一个矩阵的转置矩阵。即:将一个二维数组行和列元素互换,存到另一个二维数组中。,已知:,算法,二维数 组输出,#include main() int a34,max, i, j,ai,aj ; for (i=0;i3;i+) for (j=0;j4;j+) scanf(“%d”, ,P153 例6.5有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。,#include main() int a34,max3, i, j ; for (i=0;i3;i+) for (j=0;j4;j+) scanf(“%d”, ,有一个34的矩阵,要求编程序实现,求出每行的最大的值。,#include #define N 5 main() int aNN,i,j; for(i=0;ij) aij=2; for(i=0;iN;i+) for(j=0;jN;j+) printf(%3d,aij); printf(n); ,编程输出,上三角的值为1,主对角线的值为0,下三角的值为2的55方阵。,#include main() int a55,i,j; for(i=0;i5;i+) aii=i+1; for(j=0;j5;j+) if(j!=i) aij=j; for(i=0;i5;i+) for(j=0;j5;j+) printf(%2d,aij); printf(n); ,例:分析下列程序运行结果,j,1,0,0,0,i,0,1,2,1,1,1,2,2,3,2,2,3,3,3,4,3,4,4,4,4,5,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1,打印杨辉三角:即输出下列结果。,P168.6,#include main() int a1010,i,j,k; for(i=0;i10;i+) aii=1;ai0=1; for(i=1;i10;i+) for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(k=0;k30-i*3;k+) printf( ); for(j=0;ji+1;j+) printf(%6d,aij); printf(n); ,#include main() int a1010,i,j, k; a00=1; for(i=1;i10;i+) ai0=1;aii=1; for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(k=0;k30-i*3;k+) printf( ); for(j=0;ji+1;j+) printf(%6d,aij); printf(n); ,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号