数组上课课件

上传人:ji****72 文档编号:50955869 上传时间:2018-08-11 格式:PPT 页数:28 大小:1.67MB
返回 下载 相关 举报
数组上课课件_第1页
第1页 / 共28页
数组上课课件_第2页
第2页 / 共28页
数组上课课件_第3页
第3页 / 共28页
数组上课课件_第4页
第4页 / 共28页
数组上课课件_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《数组上课课件》由会员分享,可在线阅读,更多相关《数组上课课件(28页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础(C语言)二维数组2二维数组n二维数组的定义需要两个下标才能识别某个元素的数组称为“二维数组”n二维数组可以看作具有行和列的平面数据结构如矩阵 格式n说明数据类型是数组全体数组元素的数据类型数组名用标识符表示两个整型常量表达式分别代表数组具有的行数和列 数 数组元素的下标一律从0开始n例:int array34;类型说明符 数组名常量表达式1常量表达式2;3012第0行第1行第2行0 1 2 3第0列 第1列 第2列 第3列 数组名行下标列下标a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23 该二维数组包含三行四列,因此称为34数组。数组中

2、的每一个 元素都用aij 的形式表示。所以:该例中定义了一个3*4(3行4列)的数组,我们可以将其视为 一个有3个元素a0、a1、a2组成的一维数组,而a0、a1、 a2又是包含4个元素的一维数组。因此,可以将a0、a1、a2 分别看成是三个一维数组的名字。二维数组4二维数组n二维数组的存放方式在C语言中,二维数组在内存中的存储是按行存 放的a11a12a13a20a21a22a23a00 a01a02a03a10aa00a01.a22a23二维数组存储所占的内存字节数的计算公式为: 数组总字节数=sizeof(type)*size1*size25二维数组n二维数组的初始化形式数据类型 数组名

3、整常量表达式 整常量表达式= 初始化数据 ;n在 中给出各数组元素的初值各初值之间用逗号分开把 中的初值依次赋给各数组元素初始化方式n分行进行初始化例:int a23=1,2,3,4,5,6; 在 内部再用 把各行分开提示n初始化的数据个数不能超过数组元素的个数,否则出错6二维数组n二维数组的初始化按二维数组在内存中的排列顺序初始化n例:int a23= 1,2,3,4,5,6;把 中的数据依次赋给a数组各元素(按行赋值)为部分数组元素初始化n例:int a23=1,2,4;省略第一维的定义,但不能省略第二维的定义n系统根据初始化的数据个数和第2维的长度可以确定第一维的长度n例:int a 3

4、= 1,2,3,4,5,6;na数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即 每行3个数,所以a数组的第一维是2n省略第一维的定义时,第一维的大小按如下规则确定:n初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则 第一维的大小为商再加1n例如int a 3= 1,2,3,4;等价于:int a23= 1,2,3,4; 7二维数组n二维数组的初始化提示n只对部分数组元素初始化。未被初始化的数组元素将被 编译系统自动清0两种初始化方法得到的初始结果是不同的 int a23=5,6,7 ,8;5,6,0 7,8,0int a23=5,6,7,85,6,7 8,0,

5、08二维数组n二维数组的初始化例:一下能够对二维数组a进行正确初始化的语句是: (A)int a2=1,0,1,2,0,2; (B)int a3=1,2,3,4,5,6; (C)int a24=1,2,3,4,5,6; (D)int a3=1,0,1, ,2,3;例:已知 int a3=0,1,2,3,4,5,6 ;则数组的第一维的大小是多少? (A) 2 (B) 3 (C) 4 (D)无确定值9二维数组n二维数组元素的引用格式数组名下标1下标2;每个元素同一般变量一样使用例: int a24 ;a02=a13*4;例:int a23,i=1,j=2,k=0;n合法引用aik,aj-1i,a1

6、j+k aik=ai-1j+a1j;n错误引用a23下标越界a32,行下标越界a1,0 a(1)(2) nC语言不进行数组的越界检查,在引用时不要使数组越界 10二维数组n二维数组的操作可以采用循环(嵌套)结构实现对二维数组的操作例n从键盘依次为数组元素输入数据n计算数组a24的所有元素之和的操作n将数组a24的第二行的所有元素初始化值为0的操作for(i=0;i main() int a23=1,2,3,4,5,6;int b23;int i,j;printf(“array a:n“);for(i=0;i=0;n-)if(m+n=2)sum2=sum2+amn;printf(“sum1=%d

7、,sum2=%dn“,sum1,sum2);15二维数组n应用例:根据用户输入的年份和月份,输出这个月的 天数分析n要考虑平年和闰年的二月份的天数是不一样的n程序中采用一个二维数组来存放平年和闰年的 各个月份的天数#include main() int days212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31;int year,month;int leap,i;16二维数组n应用printf(“enter a year:n“);scanf(“%d“ ,printf(“enter a month

8、:n“);scanf(“%d“ ,if (month=1 int i,n=0,count; printf(“Input score:“); scanf(“%f“, while(x=0 count+; if(count%5=0) printf(“n“); printf(“count=%dn“,count); 数组对数据排序n从键盘上输入10个数,用选择法进行排序23基本思想: (1)从第个位置到第个位置中选择出 最小的一个与第 个位置的数交换。 (2)从第个位置到第个位置中选择出最小的一个与第 个位置的数交换。 (9) 从第个位置到第个位置中选择出最小的一个与第 个位置的数交换。排序过程245

9、13 3 9 32 22 8 1 23 215 13 3 9 32 22 8 1 23 21 1 1 13 13 5 5(3) 9 32 22 8 (3) 9 32 22 8 3 3(1) 23 21(1) 23 21 1 31 3 13 9 32 22 8 13 9 32 22 8 5 5 23 21 23 21 1 3 51 3 5 9 32 22 8 13 23 21 9 32 22 8 13 23 21 1 3 5 81 3 5 8 32 22 9 13 23 21 32 22 9 13 23 21 1 1 3 5 8 9 3 5 8 9 22 32 13 23 21 22 32 13

10、 23 21 1 3 5 8 9 131 3 5 8 9 13 32 22 23 21 32 22 23 21 1 3 5 8 9 13 211 3 5 8 9 13 21 22 23 32 22 23 32 1 3 5 8 9 13 21 221 3 5 8 9 13 21 22 23 32 23 32 1 3 5 8 9 13 21 22 231 3 5 8 9 13 21 22 23 32 32输入数据:输入数据: 5 13 3 9 32 22 8 1 23 215 13 3 9 32 22 8 1 23 21 排序过程如下:排序过程如下:25#include main() int I,j,t,a10; for(I=0;Iaj) t=aI;aI=aj;aj=t; printf(“n”); for(I=0;I main() int I,j,k,a10; for(I=0;Iaj) k=j;if(k!=I)t=aI;aI=ak;ak=t; printf(“n”); for(I=0;I10;I+)printf(“%6d”,aI); 内循环外循环K是最小元素之下标

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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