




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章数组,哈尔滨工业大学计算机科学与技术学院苏小红sxh,本章学习内容,对数组名特殊含义的理解数组类型,数组的定义和初始化向函数传递一维数组和二维数组排序、查找、求最大最小值等常用算法,为什么使用数组(Array)?,【例8.1】要读入5人的成绩,然后求平均成绩需定义5个不同名整型变量,需要使用多个scanf()intscore1,score2,score3,score4,score5;scanf(%d,保存大量同类型的相关数据,8.1一维数组的定义和初始化,一维数组的定义存储类型数据类型数组名整数1整数2整数n;,a4,a3,a2,a1,a0,inta5;定义一个有5个int型元素的数组系统在内存分配连续的5个int空间给此数组直接对a的访问,就是访问此数组的首地址,基类型,下标从0开始,8.1一维数组的定义和初始化,a4,a3,a2,a1,a0,inta5;数组大小必须是值为正的常量,不能为变量一旦定义,不能改变大小数组大小最好用宏来定义,以适应未来可能的变化#defineSIZE5intaSIZE;,一维数组的定义存储类型数据类型数组名整数1整数2整数n;,8.1一维数组的定义和初始化,数组定义后的初值仍然是随机数一般需要进行初始化inta5=12,34,56,78,9;inta5=0;inta=11,22,33,44,55;,8.1一维数组的定义和初始化,数组的引用数组名下标数组下标(index)都是从0开始使用a0、a1、a2、a3、a4这样的形式访问每个元素下标既可是常量,也可是整型表达式,允许快速随机访问,如ai可以像使用普通变量一样使用它们,如何使两个数组的值相等?,main()inta5=1,2,3,4,5,b5;b=a;,解决方法方法1:逐个元素赋值b0=a0;b1=a1;b2=a2;b3=a3;b4=a4;方法2:通过循环赋值inti;for(i=0;i0?sum/n:-1;更安全,【例8.6】计算平均分当输入负值时,表示输入结束,标记控制的循环负值作为输入结束标记,【例8.6】计算平均分当输入负值时,表示输入结束,标记控制的循环负值作为输入结束标记,【例8.7】计算最高分,#include#defineN40intReadScore(intscore);intFindMax(intscore,intn);intmain()intscoreN,max,n;n=ReadScore(score);printf(Totalstudentsare%dn,n);max=FindMax(score,n);printf(Thehighestscoreis%dn,max);return0;,max(i=0),max(i=2),max(i=3),计算最大值算法,假设其中的一个学生成绩为最高maxScore=score0;对所有学生成绩进行比较,即for(i=1;imaxScore则修改maxScore值为scorei打印最高分maxScore,【例8.7】计算最高分,【例8.7】计算最高分,8.4排序和查找,排序(Sorting)算法交换法排序选择法排序,交换法排序,交换法排序,【例8.8】交换法从高到低排序,交换法排序for(i=0;iscorei)交换成绩scorej和scorei,如何实现两数交换?,temp=scorej;scorej=scorei;scorei=temp;,70,50,70,【例8.8】交换法从高到低排序,voidDataSort(intscore,intn)/*交换法排序*/inti,j,temp;for(i=0;iscorei)/*从高到低*/temp=scorej;scorej=scorei;scorei=temp;,选择法排序,k=1,k=2,k=0,k=1,选择法排序,k=3,k=4,k=3,k=4,选择法排序,选择法排序for(i=0;iscorek)记录此轮比较中最高分的元素下标k=j;若k中记录的最大数不在位置i,则交换成绩scorek和scorei,交换学号numk和numi;,voidDataSort(intscore,longnum,intn)/*选择法*/inti,j,k,temp1;longtemp2;for(i=0;iscorek)k=j;/*记录最大数下标位置*/if(k!=i)/*若最大数不在下标位置i*/temp1=scorek;scorek=scorei;scorei=temp1;temp2=numk;numk=numi;numi=temp2;,【例8.8】成绩从高到低顺序,8.4排序和查找,查找(Searching)算法顺序查找折半查找,【例8.10】顺序查找学号,intLinSearch(longnum,longx,intn)inti;for(i=0;in;i+)if(numi=x)returni;return-1;,哈,找到了!,【例8.11】折半查找学号,哈,找到了!,1012210124101261012810130,【例8.11】折半查找学号,唉,没找到!,1012210124101261012810130,intBinSearch(longnum,longx,intn)intlow,high,mid;low=0;high=n-1;while(lownummid)low=mid+1;elseif(xnummid)high=mid-1;elsereturnmid;return-1;,若未按学号排序,则如何修改程序?,voidDataSort(intscore,longnum,intn)/*选择法*/inti,j,k,temp1;longtemp2;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(numjnumk)k=j;/*记录最大数下标位置*/if(k!=i)/*若最大数不在下标位置i*/temp1=scorek;scorek=scorei;scorei=temp1;temp2=numk;numk=numi;numi=temp2;,8.5向函数传递二维数组,实际传送的是数组第一个元素的地址,shorta23;,8.5向函数传递二维数组,在声明二维数组形参时,不能省略数组第二维的长度(列数),为什么?想想数组在内存中是如何分布的?元素aij在数组a中的位置是:i*N+j元素地址:首地址+偏移量,实际传送的是数组第一个元素的地址,shortaMN;,偏移1*3+2,例8.12计算每门课程的总分和平均分,voidAverforCourse(intscoreCOURSE_N,intsum,floataver,intn)inti,j;for(j=0;jCOURSE_N;j+)sumj=0;for(i=0;in;i+)sumj=sumj+scoreij;averj=(float)sumj/n;,可省略数组第一维的长度不能省略第二维的长度,例8.12计算每门学生的总分和平均分,voidAverforStud(intscoreCOURSE_N,i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4.3《电阻:导体对电流的阻碍作用 》教学设计-教科版物理九年级上学期
- 第2课 按需选择数字设备说课稿小学信息技术陕教版2024三年级上册-陕教版2024
- 2025秋招笔试题及答案小米
- 热液喷口区金属矿床形成机制-洞察及研究
- 2025武安医院招聘试题及答案
- 借钱搞笑合同模板怎么写(3篇)
- 广西安全员c证历年考试题库及答案解析
- 儿童保健题库护理面试题及答案解析
- 五官科护理学题库大全及答案解析
- 2025-2030中国工业无人机巡检数据智能分析平台功能测评
- 2025年全科医师转岗培训理论必刷试题库及答案
- 城市智能感知系统-洞察及研究
- 中储粮损耗管理办法
- 2025年《治安管理处罚法》新修订课件
- 【课件】有理数的加法(第1课时+有理数的加法法则)(课件)数学人教版2024七年级上册
- 透析患者血磷控制健康宣教
- 2025年江苏省苏州市中考数学模拟试卷(十三)(含答案)
- 项目制用工管理制度
- 2025年中国跨境电商SaaS市场行业报告
- 2025至2030年中国税务信息化行业市场研究分析及发展规模预测报告
- 2025叉车理论考试试题及答案
评论
0/150
提交评论