已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章数组 2 一维数组示例 例2 用数组来求Fibonacci数列前20项 include defineN20voidmain inti f N 1 1 for i 2 i N i f i f i 2 f i 1 for i 0 i N i if i 4 0 printf n printf 6d f i printf n Fibonacci数列 1 1 2 3 5 8 13 21 34 3 分析 定义一个整型数组score 30 存放全班每位同学的分数 用for循环读入分数 并求出总分和平均分 定义变量high存放当前得到的 最高分 每得到一个分数都要与high的值比较 若比high大 则放入high中 这样最后high的值一定是最高分 用数组实现 4 defineN5main inti sum 0 high score N floataverage printf inputeveryone sscore n for i 0 ihigh high score i average float sum N printf average f n average printf highest d n high for high 0 i 0 ihigh high score i 补充题 找出n个数中超出平均值的那些数 5 例 求数组中0元素的个数 include defineN10voidmain inti count 0 intdata N 1 0 3 5 for i 0 i N i if data i 0 count printf Countofzerois d n count 一维数组 6 例 假设数组a为 1 2 3 4 5 6 7 8 9 10 试编程将其倒置 结果为 10 9 8 7 6 5 4 3 2 1 要满足两个条件 1 数组长度最大为100 2 程序中只能使用一个数组 不能引入第二个数组 一维数组 7 include defineN100intmain inti j n t a N scanf d 8 将10个数从小到大排序 A 0 A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 584201516937 方法一 对N个数交换排序 N 10 基本思想 第1次 在A 0 A N 1 中找最小的数交换到A 0 第2次 在A 1 A N 1 中找最小的数交换到A 1 第N 1次 A N 2 A N 1 中找最小的数交换到A N 1 9 defineN10for i 0 iA j tmp A i A i A j A j tmp printf 排序为 n 将10个数从小到大排序 10 例 用起泡法对10个数排序 从小到大 冒泡排序 起泡排序 思想 小的浮起 大的沉底 从左端开始比较 第一趟 第1个与第2个比较 大则交换 第2个与第3个比较 大则交换 关键是最大的记录交换到最后一个位置上 第二趟 对前n 1个记录进行同样的操作 关键是次大的记录交换到第n 1个位置上 依次类推 则完成排序 11 985420 985420 89 59 49 29 09 9 9 854209 58 48 28 08 8 8 420589 5 5 204589 4 4 024589 2 2 结果 开始 024589 例 用冒泡法 下沉法 对6个数排序 由小到大 起泡法的思路是 将相邻两个数比较 将小的调到前头 比较次数 54321 12 includevoidmain inta 10 inti j t printf input10numbers n for i 0 ia j 1 t a j a j a j 1 a j 1 t printf thesortednumbers n for i 0 i 10 i printf d a i 13 例 假设数组a中已有5个数 要在第1个数的前面插入一个数x 并保持这5个数的前后关系不变 试编程实现 分析 数组中的数据是从第1个元素开始依次顺序存放的 5个数之间 包括它们的前面 是没有空的位置的 要插入一个数 就必须把其他数移走 14 includevoidmain inti x a 6 for i 0 i0 i a i a i 1 a i x for i 0 i 6 i printf d a i printf n 15 一数组按照从小到大的顺序排列 插入一个新的数 使数组从小打大顺序排列的特点不变 16 includeintmain intscore 6 2 4 6 8 10 i j n scanf d 17 例 设整型数组a 5 删去某数x 并使原来的顺序关系不变 试编程实现 问题分析 主要解决两个关键问题 查找某个元素是否等于x找到后删除该元素 该元素后的数组元素逐个向前移动一个位置 18 include defineN5voidmain inti k x a N del 0 m 0 printf 输入 d个整数 N for i 0 i N i scanf d 19 例 二维数组的输入与输出 includevoidmain inta 3 3 i j for i 0 i 2 i for j 0 j 2 j scanf d 一般二维数组的处理用二重循环来实现 用循环变量的值控制数组元素的下标 123456789123456789 20 例 矩阵a 与数值t的乘积定义为t a 编程实现这一运算 21 includevoidmain inti j t inta 3 3 printf 请输入一个3x3数组 n for i 0 i 3 i for j 0 j 3 j scanf d 22 求二维数组的最大值所在的行和列 includevoidmain inti j max x y inta 3 4 1 4 7 2 1 2 5 0 8 1 3 1 max a 0 0 x y 0 for i 0 i 3 i for j 0 j 4 j if max a i j max a i j x i y j printf 最大值在第 d行第 d列 x 1 y 1 23 例 求二维数组各个元素的和 includevoidmain inti j sum 0 a 3 3 printf 请输入一个3x3数组 n for i 0 i 3 i for j 0 j 3 j scanf d 24 例 求二维数组下三角各个元素的和 includevoidmain inti j sum 0 a 3 3 printf 请输入一个3x3数组 n for i 0 i j sum sum a i j printf d sum 25 判断n阶方阵A 是否为对称方阵 对称方阵的每一个元素aij 1 i j n 都有aij aji 26 include defineN100voidmain intn i j iFlag 1 floatfMat N N printf 方阵的阶数为 1 d N scanf d 27 二维数组示例 includevoidmain inta 2 3 1 2 3 4 5 6 b 3 2 i j printf 数组a n for i 0 i 2 i for j 0 j 3 j printf 5d a i j printf n for i 0 i 2 i for j 0 j 3 j b j i a i j 转置 例3 将二维数组a转置存到二维数组b中 printf 数组b n for i 0 i 2 i for j 0 j 1 j printf 5d b i j printf n 28 读程序 intMax intx inty return x y x y voidmain inta 10 k m m a 0 for k 1 k 10 k m Max m a k printf Maxis d m 程序功能 找10个任意整数中的最大数 子函数功能 求两个整数中的最大数 数组元素作函数实参 值传递 29 如果形参是变量 则它的改变不影响对应的实参如果形参是数组 则它的改变影响对应的实参 voidf inta intb a a b voidmain intx 10 y 20 f x y printf x dy d n x y 结果 x 10y 20 voidf inta 5 intn a n 3 a n 2 voidmain intb 5 1 2 3 4 5 f b 3 for k 0 k 5 k printf 4d b k printf n 结果 12365 30 如果形参数组某元素值被修改 实参数组对应的元素值也就改变了 如 a 3 3 a 3 2 使a 3 变为6结果a 3 对应的实参b 3 也变为6 实际上形参数组与实参数组共享同一片存储空间 数组名作参数时传递的是数组的首地址 6 31 voidmain inta 10 i k max a 10 printf Maxis d k 数组名作函数参数1 实参数组与形参数组的类型必须一致2 用数组作参数时 形参必须是定义方式 实参必须是数组名3 形参数组可不指定大小 intmax intx 10 intn inti m m x 0 for i 1 i n i if m x i m x i returnm intx 32 数组名作函数参数 地址传递 例求学生的平均成绩 includefloataverage intstu 10 intn intmain intscore 10 i floatav printf Input10scores n for i 0 i 10 i scanf d floataverage intstu 10 intn inti floatav total 0 for i 0 i n i total stu i av total n returnav 实参用数组名 形参用数组定义 intstu 33 includevoidswap2 intx inty intz z x x y y z intmain inta 2 1 2 swap2 a 0 a 1 printf a 0 d na 1 d n a 0 a 1 return0 34 includevoidswap2 intx intz z x 0 x 0 x 1 x 1 z intmain inta 2 1 2 swap2 a printf a 0 d na 1 d n a 0 a 1 return0 35 值传递 实参 形参的单向传递 函数调用时 为形参分配存储单元 并将实参的值复制到形参中 调用结束 形参单元被释放 实参单元仍保留原值 形参与实参占用不同的内存单元 地址传递 实参 形参的双向传递 函数调用时 将数据的存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校科研管理与服务方案
- 超声医学科年终总结
- 污水泵站智能化改造方案
- 旅游业设备基础工程施工方案
- 健身行业个性化训练方案
- 快餐店员工薪酬与绩效方案
- 邢台学院《招贴设计》2021-2022学年第一学期期末试卷
- 汽车零部件物资供应售后服务方案
- 风险管理咨询服务合同
- 邢台学院《统计学》2021-2022学年第一学期期末试卷
- 学生会考核表(共3页)
- 小蛋壳历险记.ppt
- 汽车常用英文术语
- 六年级家长会家长代表演讲稿-PPT
- 学校校报校刊卷首语(创刊词)
- 《电容的连接》ppt课件
- 采集运维专业问答题(修订)20140627
- 毕业生就业推荐表填写说明-北京化工大学理学院.doc
- 一例重症肺炎的个案护理.doc
- 玻璃幕墙计算书
- 《医院重点病种分析》.doc
评论
0/150
提交评论