33192-00课件cpp06_第1页
33192-00课件cpp06_第2页
33192-00课件cpp06_第3页
33192-00课件cpp06_第4页
33192-00课件cpp06_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,课件制作:C/C+教材编写组哈尔滨理工大学计算中心,基于计算思维,2,第1章初识C/C+程序设计语言,第2章数据类型、运算符与表达式,第3章顺序结构程序设计,第5章循环结构程序设计,第6章数组,第7章字符串,第8章指针,总复习,第4章选择结构程序设计,课程概述,第9章函数,第11章类与对象自定义数据类型,第12章继承与多态自定义数据类型,第13章C+输入/输出流类库,第14章异常处理,第15章图形界面编程简介,第10章自定义数据类型,3,数组,第6章,在+语言中,数组属于构造数据类型数组适合于处理批量相同类型数据数组中的元素在内存中连续存放,随时都可以访问数组中的每个元素数组分为数值数组、字符数组、指针数组、结构数组等各种类别本章主要介绍数值数组,4,实例:用数组计算Fibonacci数列的前20项,Fibonacci:斐波那契数列问题的提出前两项是1,从第三项开始,每一项都是前二项的和在循环结构程序设计中,用简单变量顺序计算并输出数列的每一项,但不能保存这些数据用数组中的元素依次在内存中存放,可以随机访问,6.1一维数组的定义和使用,5,算法及程序设计分析fi=fi-1+fi-2定义一个数组f21,将20个数列的值放到f1f20中数组的前两项初始化为1,即:f1=1,f2=1利用一重循环和Fibonacci数列的规律,求出数列的后18项,即求数组元素f3f20利用一重循环输出数列的前20项,每行输出4个数,实例:用数组计算Fibonacci数列的前20项,6.1一维数组的定义和使用,6,/ch06_1.cpp#include#includeusingnamespacestd;intmain()intf21,i;f1=f2=1;for(i=3;i=20;i+)fi=fi-1+fi-2;for(i=1;i=20;i+)coutsetw(10)fi;if(i%4=0)coutn;intan;,inta5;a5=10;,一维数组定义及初始化,10,6.2一维数组的定义和使用,一维数组的初始化在数组定义时给数组元素赋予初值,这就称为数组的初始化。定义数组时对全部数组元素赋初值。例如:inta10=0,1,2,3,4,5,6,7,8,9;,0,7,2,3,4,5,6,1,8,9,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,一维数组定义及初始化,11,6.2一维数组的定义和使用,定义数组时,可以只给部分元素赋初值。例如:inta5=0,1,2;初值的个数大于数组的长度时,这是错误的例如:inta3=0,1,2,3,4;,0,2,0,0,1,a0,a1,a2,a3,a4,一维数组定义及初始化,12,6.2一维数组的定义和使用,给全部数组元素赋值时,可以不指定数组的长度,系统会根据初值的个数来确定数组的长度。例如:inta=1,2,3,4,5;系统会根据初值的个数,自动定义数组a的长度为5。数组定义时如果不直接初始化,则其元素值为随机值。例如:inta10;a中的10个元素a0a9的值都是随机数,这样的数组元素必须经过赋值之后才能使用。sizeof(数组名)计算数组的长度。sizeof(数组元素)计算数组元素的长度。,一维数组定义及初始化,13,6.2一维数组的定义和使用,一维数组元素的引用,数组元素引用的一般形式为:数组名下标下标只能为整型常量或整型表达式。例如:a3-3,a3*2,a0,a6都是正确的在+语言中只能逐个地引用数组中的元素,而不能一次引用整个数组。例如:,inta5;couta;,for(i=0;i10;i+)coutscorei;for(i=0;i=9;i+)sum=sum+scorei;,例6.1输出高于平均分的成绩,用一重循环输入10个学生的成绩,求10个学生的总分,17,6.2一维数组的定义和使用,average=sum/10;coutaverage)coutsetw(5)scorei;coutscorei;max=min=score0;m=n=0;,例6.2求10个学生C+课程成绩的最高分与最低分,将首元素同时赋给最大值变量max和最小值变量min,20,6.2一维数组的定义和使用,for(i=1;iscorei)min=scorei;n=i;cout最高分是:max,下标是:mendl;cout最低分是:min,下标是:nai;,例6.3用冒泡法对n个数据从小到大排序,用一重循环输入要排序的数据,25,6.2一维数组的定义和使用,cout”输出排序结果:”;for(i=0;i=9;i+)if(i%5=0)coutendl;coutsetw(6)ai;coutai;,例6.4用简单选择法对n个数据从小到大排序,k为最小元素的位置,30,6.2一维数组的定义和使用,cout”输出排序结果:”;for(i=0;i=9;i+)if(i%5=0)coutendl;coutsetw(6)ai;coutkey;for(i=0;in;i+)if(key=ai)break;,例6.5用顺序查询的方法查找数据,计算数组长度,找到待查数据,用break强制跳出循环,33,6.2一维数组的定义和使用,if(in)coutkey在第i+1个位置。endl;elsecoutkey不存在。k;,例6.6用二分法在有序的数据中进行查找,low为左边界下标,high为左边界下标,find为查找标志,初值为0,37,6.2一维数组的定义和使用,while(lowamid)low=mid+1;elsehigh=mid-1;if(find=1)cout找到:k,下标是midendl;elsecout没找到!中间点元素,去掉左边一半数据,Kaij;bij=aij;coutsetw(5)bij;coutaij;,例6.8将二维数组a行列互换,存到数组b中,利用双重循环为二维数组a赋值,53,6.3二维数组的定义和使用,cout数组a:;for(i=0;i=1;i+)for(j=0;j=2;j+)coutsetw(5)aij;bji=aij;coutendl;,cout数组b:endl;for(i=0;i=2;i+)for(j=0;j=1;j+)coutsetw(5)bij;coutendl;return0;,例6.8将二维数组a行列互换,存到数组b中,数组a转置生成数组b,54,6.3二维数组的定义和使用,算法流程图如下图所示:,例6.9求一个34的矩阵的最大值及其位置,55,6.3二维数组的定义和使用,程序如下:/ex06_9.cpp#include#includeusingnamespacestd;intmain()inta34=1,2,3,100,4,5,6,99,-7,8,-9,0;inti,j,r,c,max;max=a00;r=c=0;,例6.9求一个34的矩阵的最大值及其位置,首元素最大,56,6.3二维数组的定义和使用,for(i=0;imax)max=aij;r=i;c=j;cout最大值是:maxendl;cout行下标:r,列下标:cendl;return0;,max存放每次比较结果的较大值,更新行标和列标,例6.9求一个34的矩阵的最大值及其位置,57,6.3二维数组的定义和使用,算法分析:杨辉三角形的规律:第一列与对角线元素都为1,其他元素是它的上一行中同一列元素与前一列元素的和,即:aij=ai-1j-1+ai-1j。杨辉三角形是一个包含对角线的下三角矩阵,列标n;,for(i=0;i=n-1;i+)for(j=0;j=i;j+)if(i=j|j=0)aij=1;elseaij=ai-1j-1+ai-1j;coutsetw(5)aij;coutselect;switch(select)case0:cout程序结束。scoreij;cout显示全部学生的成绩:endl;for(i=0;in;i+)/显示学生的成绩for(j=0;jm;j+)coutsetw(6)scoreij;coutendl;coutnumber;cout第number号学生的各科成绩为:;for(i=0;im;i+)coutsetw(6)scorenumber-1i;coutendl;break;,66,6.4综合案例:学生成绩管理系统,case4:/求最高分并找出对应的学号和成绩max=score00;r=c=0;for(i=0;in;i+)for(j=0;jm;j+)if(maxscoreij)max=scoreij;r=i;c=j;cout最高分是:maxendl;cout最高分是第r+1号学生的第c+1科成绩。endl;break;while(1);return0;,67,6.4综合案例:学生成绩管理系统,本案例要求完成多项操作,采用菜单来设计,使程序的整体结构清晰明确。在学过函数之后,可以将菜单中的每一项功能做成一个子函数,这样效果更好。在输入/输出时,加上适当的提示信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论