




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第6章数组 2 内容提要 数组类型 向函数传递一维数组和二维数组 常用算法 排序 查找 求最大最小值等 用字符数组存取字符串 使用字符串处理函数处理字符串 3 数组的定义和引用 数组的概念 概念引入用基本数据类型可以解决所有问题吗 例如 对某班学生的成绩按由高到底的次序进行排序 30名 4名 见程序示例 4 数组的概念 数组是具有一定顺序关系的若干相同类型变量的集合 组成数组的变量称为该数组的元素 用统一的数组名和下标来唯一地确定数组中的元素数组属于构造类型 5 一维数组 定义类型说明符数组名 常量表达式 inta 10 定义一个有10个元素的数组 每个元素的类型均为int使用a 0 a 1 a 2 a 9 这样的形式访问每个元素 它们与普通变量没有任何区别系统会在内存分配连续的10个int空间给此数组直接对a的访问 就是访问此数组的首地址 6 一维数组的引用 引用方式数组名 下标 必须先定义 后使用 只能逐个引用数组元素 而不能一次引用整个数组 对数组每个元素的使用与普通变量无异 可以用任意表达式作为下标 动态决定访问哪个元素 for i 0 i SIZE i a i 2 i 下标越界是大忌 使用大于最大下标的下标 将访问数组以外的空间 那里的数据是未知的 可能带来严重后果 7 一维数组的初始化 数组定义后的初值仍然是随机数 需要初始化在定义数组时对数组元素赋以初值inta 5 12 34 56 78 9 可以只给一部分元素赋初值inta 5 0 1 2 在对全部数组元素赋初值时 可以不指定数组长度 inta 11 22 33 44 55 数组大小定义好后 将永远不变 8 一维数组的存储 数组元素在内存中顺次存放 它们的地址是连续的 例如 具有10个元素的整型数组A 在内存中的存放次序如下 数组名字是数组首元素的内存地址 数组名是一个常量 不能被赋值 A 9 只能逐个对数组元素进行操作 字符数组例外 输入方法 inta 10 i 输入第i个数组元素 scanf d 输入整个数组元素 for i 0 i 10 i scanf d 输出方法 输出第i个数组元素 printf d a i 输出整个数组元素 for i 0 i 10 i printf d a i 一维数组的输入和输出 10 例 把0 9的数字放到数组中 并输出 main inti a 10 for i 0 i 9 i a i i printf d a i 输出数组元素的语句对吗 for i 0 i 9 i printf d a i 11 例6 2 打印最高分教材204页 从键盘输入某班学生某门课的成绩 每班人数最多不超过40人 具体人数由键盘输入 试编程打印最高分及其学生的序号 算法 从键盘输入学生人数n 从键盘输入所有学生的学号和成绩分别存入数组num和score假设其中的一个学生成绩为最高maxScore score 0 对所有学生成绩进行比较 即for i 1 imaxScore则修改maxScore值为score i 打印最高分maxScore 见程序示例 12 排序算法 在计算机领域 排序和查找时两种最基本的操作任务 排序是把一系列数据按升序或降序排列的过程 即将一个无序的数据调整为有序序列的过程 至今已经产生了许多比较成熟的排序算法 如交换法 选择法 插入排序 冒泡法 快速排序算法 本章中介绍交换排序算法 13 排序算法 交换法排序 14 排序算法 交换法排序 15 例6 3成绩排序教材205页 从键盘输入某班学生某门课的成绩 每班人数最多不超过40人 具体人数由键盘输入 编程将分数按从高到低顺序进行排序输出 使用交换法排序算法的关键步骤 for i 0 iscore i 交换成绩score j 和score i 交换学号num j 和num i 见程序示例 16 查找算法 查找算法是程序设计中除排序算法外另一类较为常用的算法 包括在一批数据中查找最大值 最小值 顺序查找指定数据所在的位置 折半查找等 顺序查找基本思想 利用循环顺序扫描这个数组 依次将每个元素与待查找值进行比较 若找到 就停止循环 输出其位置值 若所有元素都比较后仍未找到指定的查找值 则循环结束后 输出 未找到 的提示信息 17 查找算法 顺序查找 for i 0 i n i 在数组中查找值为x的元素 if num i x pos i 若num i 等于x 则找到了该学生 break 从键盘任意输入一个学生的学号 在由高到低排序的某些课程分数排名表中查找具有该学号的的学生的名次 并打印其考试成绩 见程序示例 18 二维数组 定义 数据类型数组名 常量表达式 常量表达式 inta 2 3 a 0 a 1 a a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 19 二维数组的存储结构 inta 2 3 存放顺序 按行存放先顺序存放第0行的元素 再存放第1行的元素 第0行 第1行 第0列 第1列 第2列 数组a的逻辑存储结构 20 二维数组的初始化 分行给二维数组赋初值例如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 将所有数据写在一个 内 系统按顺序赋值例如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 可以对部分元素赋初值例如 inta 3 4 1 0 6 0 0 11 21 例 将一个二维数组行和列元素互换 存到另一个二维数组中 main inta 2 3 1 2 3 4 5 6 intb 3 2 i j for i 0 i 1 i for j 0 j 2 j printf 5d a i j b j i a i j printf n for i 0 i 2 i for j 0 j 1 j printf 5d b i j printf n 22 字符串 String 与字符数组 字符串一串以 0 结尾的字符在C语言中被看作字符串用双引号括起的一串字符是字符串常量 C语言自动为其添加 0 终结符C语言并没有为字符串提供任何专门的表示法 完全使用字符数组和字符指针来处理字符数组每个元素都是字符类型的数组charstring 80 23 字符数组的初始化和存储 用字符型数据对数组进行初始化charstr 6 C h i n a 0 用字符串常量直接对数组初始化charstr 6 China charstr 6 China 字符数组的存储 24 字符数组的输入输出 for i 0 i 10 i scanf c chars 10 gets s puts s scanf s s printf s s 单个字符逐个输入输出 整个字符串的输入输出 注意输出字符不包括 0 用 s 输出字符串时 输出项是字符数组名 不加 输出时遇到 0 结束 25 字符数组的输入 输出 注意 用scanf输入多个字符串时 以空格分隔 输入单个字符串时其中不能有空格 例如 charstr1 5 str2 5 str3 5 scanf s s s str1 str2 str3 运行时输入数据 Howareyou 若改为 charstr 13 scanf s str 运行时输入数据 Howareyou 26 字符串处理函数 在中定义了若干专门的字符串处理函数 教材233页表6 2 strcpy 目的字符串 源字符串 字符串复制strcmp 字符串1 字符串2 字符串比较当出现第一对不相等的字符时 就由这两个字符决定所在字符串的大小返回其ASCII码比较的结果值strlen 字符串 求字符串长度返回字符串的实际长度 不包括 0 27 例6 9教材234页 从键盘任意输入5个学生的姓名 编程找出并输出按字典顺序排在最前面的学生姓名 等价于求最小字符串 见程序示例 28 函数与数组教材208页 考虑程序结构的模块化 实现程序的 单一功能 单一模块 我们常将程序设计中使用频率较高的算法编入一个函数封装起来 这样 以后再使用时不必重复书写这段程序代码 只要给定必要的入口参数即可 前面我们已经介绍了用简单变量作为函数参数向被调函数传递数据值的方法 这章介绍用数组元素作为函数参数和用数组名作函数参数 29 向函数传递一维数组 传递整个数组到另一个函数内 可以将数组的首地址作为参数传过去 方法是用数组名作为函数参数 作用是将实参数组的起始地址传给形参数组 这样 两个数组就占同一段内存单元只拷贝一个地址自然比拷贝全部数据效率高在主调函数和被调函数中分别定义数组形参数组可以不指定大小 即使指定大小 实际也是不起作用的 如果需要记录数组的大小 可另设一个参数 例6 4用函数编程实现交换法排序成绩 教材210页 见程序示例 简单实例 30 向函数传递一维数组 includevoidfunc intb intj for j 0 j 10 j b j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温州提高建筑质量方案设计
- 咨询目标及咨询方案
- 云浮蒸发式空调施工方案
- 建筑方案设计流程案例范文
- 咨询机构方案模板
- 煤矿彩虹跑活动策划方案
- 芯片行业管理培训课件
- 班主任节启动仪式校长致辞:匠心塑底色微芒竞出色
- 税收法治宣传活动方案策划
- 防水监控施工方案设计
- 旅游英语ppt课件(完整版)
- DB32-T 4062-2021城市轨道交通工程质量验收统一标准-(高清现行)
- 城乡融合发展的做法和经验乡村振兴培训课件
- 最新肛肠科临床诊疗指南
- 供应商分级的管理制度管理办法
- 义务教育《语文》课程标准(2022年版)
- 人教二年级上册《生命、生态、安全》最新版教案(全册)
- T∕CTWPDA 06-2019 橡胶木指接拼板
- 职高数学各章节知识点汇总
- 完整版_第八版内科冠心病课件
- 山大初试913环境学概论
评论
0/150
提交评论