演示文稿演示文稿第5章节数组及其应用

上传人:w****i 文档编号:91875564 上传时间:2019-07-03 格式:PPT 页数:96 大小:984KB
返回 下载 相关 举报
演示文稿演示文稿第5章节数组及其应用_第1页
第1页 / 共96页
演示文稿演示文稿第5章节数组及其应用_第2页
第2页 / 共96页
演示文稿演示文稿第5章节数组及其应用_第3页
第3页 / 共96页
演示文稿演示文稿第5章节数组及其应用_第4页
第4页 / 共96页
演示文稿演示文稿第5章节数组及其应用_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《演示文稿演示文稿第5章节数组及其应用》由会员分享,可在线阅读,更多相关《演示文稿演示文稿第5章节数组及其应用(96页珍藏版)》请在金锄头文库上搜索。

1、一维数组的应用,应知: 一维数组的定义 一维数组在内存中的存放方式 应会: 一维数组的定义、初始化方法 一维数组元素的引用和输入输出 难点: 数组元素的下标引用方式,数组相关英文词汇,Array 数组 Element 元素 Subscript 下标 Address 地址 Initialize 初始化,提 问,循环的三要素是什么? break和continue的区别?,知识回顾:for循环的使用方法,使用for循环输出1-100总共100个数 for循环格式: for(初始值;条件;循环变量) 循环体; 更一般的形式: for(表达式1;表达式2;表达式3) 循环体; ,知识回顾:条件表达式与逻

2、辑表达式,程序段: for(i=1; i=100; i+) printf(“%dt”, i); ,学一学,引入数组 数组的长度 数组的名称 数组的类型 数组的下标 关于数组 1.数组是指一组同类型数据的有序集合 2.每个数组在内存中占用一段连续的存储空间 3.用一个统一的数组名和下标来唯一确定数组中的元素,学一学,1一维数组的定义 声明数组的类型、名字和大小 类型标识符 数组名常量表达式; 其中常量表达式说明数组的大小,即数组中元素的个数,不允许动态定义 2一维数组元素的引用 引用形式为: 数组名下标表达式 其中“下标表达式”表示数组中的某一个元素的顺序号,必须是整型常量、整型变量或整型表达式

3、,下表从0开始。,试一试,问题1:学校举行知识竞赛,有10个学生参赛,请协助老师编写一个程序把成绩打印出来。 解题步骤: 定义数组存放成绩 在循环中逐个输出 流程图:,关于数组,初始化:在定义数组的同时为其赋值 类型说明符 数组名常量表达式=初值表; 数组必须先定义后使用,且在定义时必须用常量表达式表示数组大小,即数组元素的个数,不允许动态定义 数值型数组如整型、实型数组等不可以进行整体操作 数组元素的地址也是通过“&”运算符得到 数组元素在内存中是连续存放的,练一练,问题2 对问题1进行拓展:10个学生的竞赛成绩从键盘输入,计算出平均分,将平均分输出到屏幕上。,解题思路和流程图: 将问题1的

4、数组元素初始化赋值改为从键盘输入数据; 在for循环中累加每个数组元素的值,求出总分; 用总分除以总人数,求出平均分并输出。,练一练,问题3 进一步拓展:从键盘输入10个参赛学生的成绩,求出分数最高的同学的序号(从1开始)及其成绩。 解题步骤 定义一维数组存放成绩。 循环输入10个分数。 从第一个数组元素开始逐个比较,将成绩较高者的数组元素的下标存入变量iMax中。 循环比较结束后,iMax中即分数最高的同学的数组下标,加1即为其序号,输出结果,流程图:,学生容易出错的地方,数组的起始下标 数组最后一个元素的下标 使用数组越界 定义数组时不指定长度,问题与讨论,如何在前面例子的基础上将功能拓展

5、,使得程序具有增加、删除、插入、排序等功能,并可选择多次操作?,小结,数组必须先定义,后使用。一维数组定义的一般形式为: 类型标识符 数组名常量表达式; 一维数组的引用形式: 数组名下标表达式 一维数组的输入和输出:使用循环逐个进行,小结,数组的存放形式:在内存中连续存放 一维数组的初始化: 当系统为所定义的数组在内存中开辟一串连续的存储单元时,这些存储单元中并没有确定的值,所以必须进行初始化。 对全部元素初始化 对部分元素初始化,课后任务,将课堂讲授实例自行操作演练一遍 完成本单元习题作业,一维数组的应用-常用算法,应知: 常用一维数组的数据操作思路与流程 应会: 编程实现一维数组的查找、排

6、序、插入、删除等功能 难点: 冒泡排序算法的思路,数组相关英文词汇,Reference 引用 Sort 排序 Insert 插入 Delete 删除,提 问,什么是数组? 数组下标从哪里开始? 数组在内存中是如何存放的?,知识回顾:关于一维数组,数组不能够动态定义,定义时数组大小应是确定的 数组下标从0开始 数值型数组不能够整体输入输出,需要用循环语句进行输入或输出,试一试,问题4:数据查找 用初始化方法,把某学习小组10名学生C语言程序设计课程的考试成绩存储在数组中,再从键盘输入一个考分,查找该数是否在数组中,如果是的话,请输出它是第几名学生的成绩,流程图:,算法与步骤: 定义一维数组存放成

7、绩。 循环输入10个分数。 从第一个数组元素开始逐个比较,将成绩较高者的数组元素的下标存入变量iMax中。 循环比较结束后,iMax中即分数最高的同学的数组下标,加1即为其序号,输出结果,试一试,问题5:排序 软件系要选拔创新小组的成员,有N名同学参加考试,请你帮助老师将成绩输入计算机,从低分到高分进行冒泡排序并输出排序后的结果。,冒泡排序算法: 从最后一个元素开始(设置循环的初始值) 根据排序的顺序,两相邻元素进行比较和交换(内层循环) 进行下一轮相邻数据的比较交换(外层循环),流程图:,进一步优化:在某一趟循环比较中如果没有发生数据交换,则表明数据已然有序。,练一练,问题6:数据插入 一位

8、同学因为参加大学生运动会需要进行缓考,缓考过后,老师要把他的成绩插入班级的成绩单中,成绩单已经按照分数从高到低进行了排序,试问这个缓考成绩要怎样插入才不影响已经排好序的成绩单?,插入算法的步骤 1)数据初始化 2)输入待插入数据 3)找到待插入位置 4)将待插入位置空出(从插入位置i起,把以后的数据后移,以备插入数据) 5)插入数据 6)输出结果,流程图:,想一想,问题7:数组元素的删除 一个同学光荣入伍了,要离开学校开始军旅生涯,老师在计算奖学金的时候要将他的成绩从排好序的成绩单中删除,有两种情况:输入这个学生在成绩单中的位置序号,怎么删除呢? 输入这个学生的成绩(假设每个学生的分数都不相同

9、),又该怎么删除?,学生容易出错的地方,数组越界、下标起始值 排序时不注意要求是升序还是降序 插入数据和删除数据时找不到对应元素位置,问题与讨论,如何在前面例子的基础上将功能拓展,使得程序具有增加、删除、插入、排序等功能,并可选择多次操作?,小结,数组元素在内存中是连续存放的,数组元素按顺序排列,数组元素的访问是通过下标变量进行的,因此,可用循环语句操作数组 数组的应用通常都是通过仔细观察,找出下标的变化规律实现的,课后任务,1. 课堂讲授实例自行再演练一遍 2. 完成本单元习题作业,二维数组的应用,应知: 二维数组的定义 二维数组在内存中的存放方式 二维数组和一维数组的区别和联系 应会: 二

10、维数组的定义、初始化方法 二维数组元素的引用和输入输出 难点: 如何根据实际情况灵活使用二维数组,提 问,什么情况下需要使用数组? 使用哪个循环语句最适合遍历数组?,知识回顾:一维数组的使用,一维数组的遍历: for(i=0;iSIZE;i+) /逐一处理iArrayi; 使用单重循环可以解决:一维数组的输入、输出、查找、排序、插入、删除等应用,学一学,1二维数组的定义 类型标识符 数组名常量表达式1常量表达式2; 其中常量表达式1和常量表达式2,分别表示数组的行数和列数。 2.二维数组元素的引用 二维数组元素的引用形式为: 数组名行下标列下标 行下标和列下标可以是整常数或整型表达式,其取值范

11、围从0开始,分别到行数-1和列数-1为止。,试一试,问题1 一个学习小组有5名同学,每人有英语和数学两项考试成绩 ,试将成绩表用二维数组存储,并输出到屏幕上。,流程图:,关于二维数组,1.二维数组同一维数组一样,也要先定义,后使用,定义时用常数或宏定义常量明确给出行、列数 2.二维数组元素由行、列下标确定,同一维数组一样,行、列下标都从0开始,关于二维数组,3. 二维数组在内存中按行存放,关于二维数组,4. 同一维数组一样,二维数组可在定义时给出初始化数据,每一行数据可用大括号分开,也可以不使用括号,未被初始化的数据自动赋值为0,练一练,问题2 扩展:上述问题中,成绩表的数据是在定义时初始化赋

12、值的,但是现在又有一组考试数据要输入,请你将数据改由键盘输入。,练一练,问题3 在问题1解决中,使用双重循环来输出成绩表,如果不用双重循环,请你尝试用两个单重循环来输出数据。,学生容易出错的地方,二维数组的理解 用单层循环输入二维数组数据 二维数组用双重循环输入时混淆行列的意义 输入输出时用错符号,问题与讨论,二维数组在内存中是按行存放的 数组元素的下标每一维都是从0开始 数值型数组不能够整体引用 可以把二维数组看成是一个特殊的一维数组,即其元素是一个一维数组 什么问题需要用二维数组来解决?,小结,二维数组的定义: 类型标识符 数组名常量表达式1常量表达式2; 二维数组的引用形式: 数组名行下

13、标列下标 二维数组的输入和输出:,小结,二维数组的存放:系统以“按行存放”的方式将二维数组分配在内存中一片连续的存储空间中。 二维数组的初始化: 按行赋初值 例如:int iTall34=11,12,13,14,21,22,23,24,31,32,33,34; 按二维数组在在内存中的排列顺序给各元素赋初值 例如:int iTall34= 11,12,13,14,21,22,23,24,31,32,33,34; 若对全部元素显示赋初值,则数组第一维的元素个数在定义时可以不指定,但第二维的元素个数仍然不能缺省。,课后任务,课堂实例自行再演练一遍 完成本单元习题作业,二维数组的应用2,应知: 学习二

14、维数组编程思路 应会: 掌握二维数组的编程实现方法 难点: 如何根据实际情况灵活使用二维数组,提 问,二维数组和一维数组有什么区别?,知识回顾:二维数组的遍历,for(i=0;i2;i+) /*循环2次,输出两行数据*/ printf(“n“); /*输出一行数据后换行*/ for(j=0;j5;j+) /*循环5次,输出一行5个*/ printf(“%-6d”,iScoreij); /* 输出每个元素*/ ,试一试,问题4 新生入校参加军训,12名同学站成了3行4列,请编程序帮助教官从键盘输出12名同学的身高,并且求出其中个子最高的同学的身高。,解题思路: 定义一个3行4列的数组存放身高数据

15、 定义一个变量iTallest=0存放最大身高 构造双重循环将12个身高数据逐个和iTallest比较,如果比iTallest大则存入iTallest并进行下一个比较,否则直接进行下一个比较,直到比较完12个身高; 最后的iTallest就是最大身高,流程图,练一练,问题5 看过电影黑客帝国(the Matrix)之后,有12名同学排成3行4列准备进行演习,根据他们自编的剧情需要,他们需要进行行列交换,在另一个位置上站成4行3列,请编写程序实现交换后的站位,每个同学的代号由初始化数据给出。,解题步骤: 定义iMatrix134和iMatrix243,并初始化iMatrix134 使用双重循环将

16、iMatrix134的每一个元素赋值给iMatrix243,前者的行、列下标分别是后者的列、行下标 使用双重循环输出iMatrix243,流程图:,学生容易出错的地方,数组下标越界 在使用双重循环引用二维数组元素时混淆行、列下标,问题与讨论,在数组的使用过程中,数组元素的下标和数组元素的值有什么联系?,小结,二维数组的相关算法编程实现,其思路同一维数组一样,都是通过观察下标的变化,找出下标变化规律从而构建适当的表达式,课后任务,整理课堂笔记 完成本单元习题作业,字符数组与字符串的应用,应知: 字符数组的定义 C语言中字符串的表示方法 应会: 字符数组的定义、初始化方法 字符数组元素的引用和输入输出 难点: 如何根据实际情况灵活使用字符数组 常

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

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

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