首页 C语言程序设计 教学课件 ppt 作者 柴世红_ 第7章

C语言程序设计 教学课件 ppt 作者 柴世红_ 第7章

举报
开通vip

C语言程序设计 教学课件 ppt 作者 柴世红_ 第7章*第7章数组第7章数组7.1数组概述7.2一维数组7.3二维数组7.4多维数组7.5案例学习*第7章数组     7.1数组概述7.1.1数组的引入及优点  【例7-1】从键盘上随机输入3个整数,求3个数的和。  方法一:可以定义3个整型变量,每个变量存储一个整数,再定义第4个整型或实型变量来存储3个整数的和,最后输出第4个变量的值即可。*第7章数组 程序源码如下:*第7章数组  方法二:用循环语句来解决以上问题。  通过分析我们发现,由于在上述求和的过程中,每个数只使用一次,也就是说,在求和的过程中,虽然数较多,...

C语言程序设计 教学课件 ppt 作者 柴世红_ 第7章
*第7章数组第7章数组7.1数组概述7.2一维数组7.3二维数组7.4多维数组7.5案例学习*第7章数组     7.1数组概述7.1.1数组的引入及优点  【例7-1】从键盘上随机输入3个整数,求3个数的和。  方法一:可以定义3个整型变量,每个变量存储一个整数,再定义第4个整型或实型变量来存储3个整数的和,最后输出第4个变量的值即可。*第7章数组 程序源码如下:*第7章数组  方法二:用循环语句来解决以上问题。  通过分析我们发现,由于在上述求和的过程中,每个数只使用一次,也就是说,在求和的过程中,虽然数较多,但每个数在计算过程中只使用一次。因此我们可以考虑只定义一个变量,用后面输入的值来覆盖前面变量的值,这样可以避免定义过多的变量。程序源码如下:*第7章数组*第7章数组图7.1求10个数的和的运行结果*第7章数组  【例7-2】从键盘上输入3个数,由小到大进行排序输出。  分析:对于从键盘上输入3个数并由小到大排序的问题,在第5章的例5-11已经做过介绍,其解决办法也是定义3个变量,同时定义1个临时变量用来实现值的交换。*第7章数组*第7章数组图7.2例7-2运行效果*第7章数组图7.3例7-2运行结果*第7章数组7.1.2C语言中数组的分类  C语言中数组的分类较为简单,一般根据数组元素的数据类型和数组的维数来分类。  (1)根据数组元素的数据类型分类。  (2)根据数组的维数分类。*第7章数组     7.2一维数组7.2.1一维数组的定义  在C语言中,如同定义简单变量,数组也必须先进行定义,再进行使用。  一维数组具有一个下标,其一般定义形式如下:    类型说明符数组名[常量表达式];*第7章数组  例如,下面定义了3个不同类型的数组。  (1) inta[10];定义了一个整型数组a。数组长度为10,即含有10个数组元素;数组中每个数组元素的数据类型为基本整型;整个数组一共设定为20个字节的连续存储空间。  (2) floatb[20];定义了一个单精度数组b。数组长度为20,即含有20个数组元素;数组中每个数组元素的数据类型为单精度浮点型;整个数组一共设定为80个字节的连续存储空间。  (3) charc[20];定义了一个字符数组c。数组长度为20,即含有20个数组元素;数组中每个数组元素的数据类型为字符型;整个数组一共设定为20个字节的连续存储空间。*第7章数组 【例7-3】以下数组定义语句中,错误的是()。*第7章数组7.2.2一维数组的初始化  1.一次性初始化  一次性初始化指在定义一维数组时,在后面大括号中给出每个数组元素的值,也就是在定义数组时按顺序对数组元素赋以初值。例如:   inta[5]={1,2,3,4,5};   floatb[6]={4.2,2.3,1.0,6.3,7.4,9.1};   charc[3]={'a','b','c'};*第7章数组  2.逐元素初始化  逐元素初始化指在定义完一维数组后,对其数组元素分别进行初始化。例如:   inta[5];   a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;   charc[3];   c[0]=‘a’;   c[1]=‘b’;   c[2]='c';*第7章数组  3.用循环语句初始化  用循环语句初始化指用定义的循环变量来控制数组的下标,对数组元素进行初始化的过程。例如:    inti;    for(i=0;i<10;i++)        a[i]=i+1;或者    for(i=0;i<10;i++)      scanf("%d",&a[i]);*第7章数组 【例7-4】以下程序的输出结果是( )。*第7章数组7.2.3一维数组的引用  从数组的定义可以看出,对于一维数组,由于各元素在内存中的存储空间是连续的且字节数相同,因此各元素之间是等间距的,这样就可以对所有连续的数组元素用一个连续的整数序列进行编号,以识别各元素在整个数组中的位置,这一整数序列称为下标。数组名和下标构成了数组元素。*第7章数组 【例7-5】一维数组元素的赋值和输出。*第7章数组 【例7-6】一维数组元素的赋值和输出。*第7章数组  【例7-7】读取10个整数存入数组,找出其中的最大值以及最大值所对应的下标。  分析:根据题意,可以定义一个包含10个整数的数组a和一个用于存放最大值的变量max。用scanf()函数从键盘上输入数组元素的值,可以认为第一个元素为最大值,然后依次比较后面的元素,如果比max的值大,则用此值替换max的值。*第7章数组 (1)寻找最大值。*第7章数组  (2)最大值所对应的下标。  分析:另定义一个变量m用来存储最大值最对应的下标,m初始值为0,每当最大值改变,则修改下标的值。程序可修改为:*第7章数组  【例7-8】编写程序,用冒泡法对10个数按照由小到大的顺序排序。  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。程序源码如下:*第7章数组*第7章数组  【例7-9】用数组求出Fibonacci数列前20项之和。  分析:问题的数学模型请参阅例6-15。在这里定义了一个一维整型数组来实现对Fibonacci数列的存储。*第7章数组*第7章数组     7.3二维数组7.3.1二维数组的定义  前面介绍的数组只有一个下标,如a[4]、b[5]、c[6],我们称这样的数组为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的,因此C语言允许构造二维数组。二维数组元素有两个下标,以标识它在数组中的位置,如可以定义a[3][4]这样的数组。*第7章数组图7.4二维数组示意图*第7章数组7.3.2二维数组的初始化  1.按行赋初值  按行赋值指将二维数组的每一行元素的值用一对花括号括起来。    inta[2][3]={{1,2,3},{4,5,6}};  将1,2,3三个元素用一对花括号括起来表示第1行元素,将4,5,6三个元素用一对花括号括起来表示第2行元素。*第7章数组  初始化后的结果如下:*第7章数组  2.按数组元素在内存中排列的顺序对各元素赋初值  将各初始值全部连续地写在一个花括号内,在程序编译时会按数组在内存中的排列顺序将各初始值分别赋给数组各元素,这种情况非常类似于一维数组中的一次性赋值。    inta[2][3]={1,2,3,4,5,6};  这条语句初始化后结果和前面按行赋初值的例子完全相同。*第7章数组  3.给部分元素赋初值  给部分元素赋初值也就是对二维数组中的一部分元素赋值,这时未赋值元素全部置0。    inta[2][3]={{1},{4}};  初始化后结果如下:*第7章数组  4.数组初始化时,行长度可省略,但列长度不能省略    inta[][3]={1,2,3,4,5,6,7};  结果如下:*第7章数组  结果如下: 但不能写成以下形式:   inta[2][]={1,2,3,4,5,6,7};   intb[2][]={{1},{4,5}};*第7章数组  【例7-10】以下数组定义中不正确的是( )。  A.inta[2][3]   B.intb[][3]={0,1,2,3}  C.intc[100][100]={0}   D.intd[3][]={{1,2}{1,2,3}{1,2,3,4}}  解析:二维数组初始化时,行长度可以省略,但列长度不能省略,故答案为D。*第7章数组7.3.3二维数组的引用  二维数组的元素也称为双下标变量,其引用与一维数组的引用原理完全相同。二维数组引用的一般表示形式为:    数组名[下标][下标];其中下标应为整型常量或整型表达式。例如,a[3][4]表示a数组第4行第5列的元素。*第7章数组  【例7-11】定义一个二维数组,初始化并求其元素的最大值及其位置。  (1)求二维数组的最大值。  分析:和求一维数组的最大值的思路一样,定义max变量用来存放最大值,然后依次扫描二维数组元素,如果后续元素比当前max的值大,则修改max的值。最后输出max变量的值。*第7章数组 程序源码如下:*第7章数组  (2)求最大值的位置。  分析:定义两个变量m,n存储最大值元素的行下标和列下标,当max的值有变化时,修改m和n的值。最后输出m和n的值。*第7章数组 程序源码如下:*第7章数组  【例7-12】一个学习小组有5个人,每个人有三门课的考试成绩。求全组各分科的平均成绩和各科总平均成绩。*第7章数组  分析:可设一个二维数组a[3][5]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average为全组各科总平均成绩。程序源码如下:*第7章数组*第7章数组图7.5例7-12的运行结果*第7章数组     7.4多维数组7.4.1多维数组的定义  多维数组的定义类似于二维数组的定义,其一般格式可表示为:  类型标识符多维数组名[下标1][下标2] … [下标n];  类型标识符、数组名及下标和一维、二维数组完全相同,这里不再重复。  注意:多维数组的存储顺序为最左边的下标变化最慢,越往右变化越快,最右边的下标变化最快。*第7章数组  这里我们以三维数组为例来说明多维数组。    intsal[20][25][50];  上面的定义表明数组sal具有20个25行和50列的表,这样数组的第1个元素所在的位置为sal[0][0][0],第2个元素为sal[0][0][1],第3个为sal[0][0][2],依此类推。  例如:数组元素sal[10][20][30]所代表的意思为第11张表的第21行第31列。*第7章数组7.4.2多维数组的初始化  ①例如,有以下三维数组:   inta[3][2][3];  对其可初始化:   inta[3][2][3]={{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}, {{13,14,15},{16,17,18}}};  由于第一维的大小为3,所以可以认为a数组由3个二维数组(此处每个二维数组为一页)组成,每个二维数组为2行3列,如图7.6如示。*第7章数组  ②由于多维数组和二维数组一样,采用线性分配空间,也可对其进行如下初始化:   inta[3][2][3]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16,17,18};即将三维数组中全部元素连续写在一个花括号内,按元素在内存中的排列顺序依次给各数组元素赋初值。 *第7章数组图7.6多维数组初始化示意图*第7章数组  ③也可以省略第一维的大小,上面的定义也可改写为:  inta[][2][3]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};系统会根据初值个数,算出第一维的大小为2。*第7章数组  例如以下三维数组:   inta[][3][2]={{{1,2},{3},{5}},{{0,7},{8},{10}}};  显然这是一个大小为2 × 3 × 2的三维数组,其各元素值如图7.7所示。*第7章数组图7.7多维数组初始化示意图*第7章数组7.4.3多维数组的引用  多维数组是对一维数组与二维数组的扩展,其引用基本原理与一、二维数组完全相同。多维数组引用格式可表示为:   多维数组名[下标1][下标2][下标3]…[下标n]其中下标的取值范围类似于二维数组,并且多维数组的元素同样可以赋值和出现在表达式中。例如:   x[i][j][k]=45+2*k;*第7章数组     7.5案例学习  【例7-13】在二维数组a中选出各行最大的元素组成一个一维数组b。  本题的编程思路是,在数组a的每一行中寻找最大的元素,找到之后把该值赋予数组b中相应的元素即可。*第7章数组*第7章数组*第7章数组图7.8例7-13运行结果*第7章数组  【例7-14】有一个已经按由小到大顺序排好序的数组,现输入一个数,要求按原来排序的规律将它插入到数组中。  分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的情况,插入此元素之后的数,依次后移一个位置。*第7章数组*第7章数组*第7章数组图7.9例7-14运行结果*第7章数组  【例7-15】有15个数由小到大按顺序存放在一个数组中,现输入一个数,要求用折半查找法找出该数在数组中是第几个元素,如果该数不在数组中,则打印出无此数。  分析:查找是在程序设计中最常用到的算法之一,假定要从n个整数中查找x的值是否存在,最原始的办法是从头到尾逐个查找,这种查找的方法称为顺序查找。这种方法效率低。*第7章数组*第7章数组
本文档为【C语言程序设计 教学课件 ppt 作者 柴世红_ 第7章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
希望
暂无简介~
格式:ppt
大小:505KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2019-09-16
浏览量:10