第5章 数组教学课件PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第5章 数组教学课件PPT.ppt》由会员分享,可在线阅读,更多相关《第5章 数组教学课件PPT.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、完整版教学课件完整版教学课件第5章 数组第五章第五章 数数 组组 第第5 5章章 数组数组u5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用u5.2 5.2 完美矩形:二维数组的定义和使用完美矩形:二维数组的定义和使用u5.3 5.3 戴帽成串:字符数组和字符串戴帽成串:字符数组和字符串u5.4 5.4 思维训练:几种重要的算法思维训练:几种重要的算法u5.5 5.5 知识拓展:向函数传递数组知识拓展:向函数传递数组u5.6 5.6 本章小结本章小结4 数组数组是是C C语言中提供的一种专门用来组织批量数据的语言中提供的一种专门用来组织批量数据的数据类型,它可以将性
2、质相同且需要共同参与某项操作的数据类型,它可以将性质相同且需要共同参与某项操作的多个数据有效地组织起来,是一种应用十分频繁且非常重多个数据有效地组织起来,是一种应用十分频繁且非常重要的数据类型。要的数据类型。 所谓所谓数组就是一批同类型数据的有序集合,每个数组数组就是一批同类型数据的有序集合,每个数组在内存中占一片连续的存储空间,用一个统一的数组名和在内存中占一片连续的存储空间,用一个统一的数组名和下标来唯一确定数组中的元素,其中每一个元素通常称为下标来唯一确定数组中的元素,其中每一个元素通常称为下标变量。下标变量。只有一个下标的数组称为一维数组,有二个下只有一个下标的数组称为一维数组,有二个
3、下标的数组称为二维数组,依此类推。标的数组称为二维数组,依此类推。5 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用 5.1.1 5.1.1 一维数组的定义方式一维数组的定义方式 数组作为带有下标的变量,也需要数组作为带有下标的变量,也需要经历定义、初始化和引用经历定义、初始化和引用3 3个阶段个阶段。一维数组定义的一般形式为:一维数组定义的一般形式为: 类型说明符类型说明符 数组名数组名 常量表达式常量表达式 其中:其中: 类型说明符用于说明数组的基类型,即数组中每一个元素的类型,可类型说明符用于说明数组的基类型,即数组中每一个元素的类型,可以是任一种基本数据类
4、型或构造数据类型。以是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符,应符合标识符的书写规定。数组名是用户定义的数组标识符,应符合标识符的书写规定。 方括号中的常量表达式表示数组元素的个数,也称为数组的长度。方括号中的常量表达式表示数组元素的个数,也称为数组的长度。 例如:例如: int a10; /int a10; /* *说明整型数组说明整型数组a a,有,有1010个元素个元素* */ / float score20; / float score20; /* *说明实型数组说明实型数组scorescore,有,有2020个元素个元素* */ / char letter2
5、6; / char letter26; /* *说明字符数组说明字符数组letterletter,有,有2626个元素个元素* */ /6对于数组类型说明应注意以下几点:对于数组类型说明应注意以下几点: 1 1. .允许在同一个类型说明中,说明多个数组和多个变量。允许在同一个类型说明中,说明多个数组和多个变量。如:如: int a,b,c,d,k110,k220int a,b,c,d,k110,k220; 2 2. .方括号中的常量表达式通常取整型常量或整型常量表达方括号中的常量表达式通常取整型常量或整型常量表达式(包括符号常量)。如:式(包括符号常量)。如: #define N 20#def
6、ine N 20 / /* *用此命令行定义符号常量用此命令行定义符号常量N N,方便程序修改,方便程序修改* */ / float scoreN;float scoreN; / /* *正确的定义方式,提倡使用正确的定义方式,提倡使用* */ / C C语言中不允许用变量下标形式对数组进行动态定义。如语言中不允许用变量下标形式对数组进行动态定义。如n n为一个普通变量,定义:为一个普通变量,定义: float scoren;float scoren; 是非法的。是非法的。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用7 3 3. .与其他高级语言(如与其他高级
7、语言(如PASCALPASCAL、BASICBASIC)不同,)不同,C C语言语言中规定数组元素的下标总是从中规定数组元素的下标总是从0 0开始开始,例如,例如int a10int a10;说明整;说明整型数组型数组a a,有,有1010个元素。这个元素。这1010个元素是:个元素是: a0,a1,a2,a3,a4,a5,a6,a7,a8, a9a0,a1,a2,a3,a4,a5,a6,a7,a8, a9; 注意最后注意最后一个元素是一个元素是a9a9,而不是,而不是a10a10,该数组不存在数组元素,该数组不存在数组元素a10a10。 并且特别值得注意的是,并且特别值得注意的是,C C编译
8、器对数组下标越界不作检编译器对数组下标越界不作检查。查。如上述数组不存在数组元素如上述数组不存在数组元素a10a10,但是在程序中不小心,但是在程序中不小心引用了引用了a10a10,程序编译时仍认为是合法的。但程序运行后可,程序编译时仍认为是合法的。但程序运行后可能会出现逻辑错误,因为能会出现逻辑错误,因为a10a10已不是数组中的元素,越界的已不是数组中的元素,越界的操作可能破坏操作可能破坏a9a9后面的数据或程序,要特别引起注意。后面的数据或程序,要特别引起注意。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用8 4 4. .在说明一个数组后,系统会在内存中分
9、配一段连续的空在说明一个数组后,系统会在内存中分配一段连续的空间用于存放数组元素,并且数组名代表首地址。间用于存放数组元素,并且数组名代表首地址。如说明如说明int a10int a10; 则其在内存中的存放形式如图则其在内存中的存放形式如图4-14-1所示:所示: a0 a1 a2 a3 a4 a5 a6 a7 a8 a9a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 图图4-1 4-1 数组数组a a在内存中的存放形式在内存中的存放形式 在内存中一维数组所占用的总字节数为:数组长度在内存中一维数组所占用的总字节数为:数组长度* *sizeof(sizeof(基类型基类型) ),
10、如在如在Turbo CTurbo C环境中,整型数组环境中,整型数组a a所占用的总所占用的总字节数为:字节数为:1010* *2=202=20。从上面可以发现每一个元素都相当于一。从上面可以发现每一个元素都相当于一个整型变量,其中可存放一个整型数值。个整型变量,其中可存放一个整型数值。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用9 5.1.2 5.1.2 一维数组的初始化一维数组的初始化 数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的化是在编译阶段进行的。 初始化赋值的
11、一般形式为:初始化赋值的一般形式为: 类型说明符类型说明符 数组名数组名 常量表达式常量表达式=初值表初值表 其中其中 初值表初值表 中的各数据值即为各元素的初值,各值之间用逗号分中的各数据值即为各元素的初值,各值之间用逗号分隔。例如:隔。例如: int a10= 0,1,2,3,4,5,6,7,8,9 int a10= 0,1,2,3,4,5,6,7,8,9 ; 相当于相当于a0=0a0=0;a1=1a1=1; . a9=9. a9=9; 语言对语言对数组的初始化赋值还有以下几点规定:数组的初始化赋值还有以下几点规定: 1. 1.可以只对部分元素赋初值。可以只对部分元素赋初值。 当当 中值的
12、个数少于元素个数时,只给前面部分元素赋值。例如:中值的个数少于元素个数时,只给前面部分元素赋值。例如: int a10=0,1,2,3,4int a10=0,1,2,3,4; 表示只给表示只给a0a0a45a45个元素赋值,而后个元素赋值,而后5 5个元素自动赋个元素自动赋0 0值。值。 如果想使一个数组中全部元素值为如果想使一个数组中全部元素值为0 0,可以写成:,可以写成: int a10=0 int a10=0; / /* *第第1 1个元素赋值个元素赋值0 0,后面,后面9 9个元素自动为个元素自动为0 0* */ / 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的
13、定义和使用10 2. 2.只能给元素逐个赋值,不能给数组整体赋值。只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋例如给十个元素全部赋1 1值,只能写为:值,只能写为: int a10=1,1,1,1,1,1,1,1,1,1;int a10=1,1,1,1,1,1,1,1,1,1; 而而不能写不能写为:为: int a10=1;int a10=1; 3. 3.如给全部元素赋值,则在数组说明中,可不指定数组长度。如给全部元素赋值,则在数组说明中,可不指定数组长度。 例如:例如: int a5=1,2,3,4,5int a5=1,2,3,4,5; 可写为:可写为: int a=1,2
14、,3,4,5int a=1,2,3,4,5; 4. 4.当数组被说明为当数组被说明为静态静态(static(static)或或外部存储类型(即在所有函外部存储类型(即在所有函数外部定义)数外部定义)时,若不赋初值,则在程序编译阶段对数值型数组时,若不赋初值,则在程序编译阶段对数值型数组全部元素赋初值全部元素赋初值0 0,对字符型数组全部元素赋空字符(,对字符型数组全部元素赋空字符(ASCIIASCII码为码为0 0的字符的字符00)。)。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用11 5.1.3 5.1.3 一维数组元素的引用一维数组元素的引用 数组是由若干
15、个元素组成,数组名只能表示整个数组(首数组是由若干个元素组成,数组名只能表示整个数组(首地址),而并不能说明其中某一个元素。如果希望指出具体的地址),而并不能说明其中某一个元素。如果希望指出具体的元素,需要按照下列格式书写:元素,需要按照下列格式书写: 数组名数组名 下标表达式下标表达式 其中数组名是一个已经定义的数组,其中数组名是一个已经定义的数组, 下标表达式下标表达式 的结果应的结果应该是一个介于数组下标取值范围内的整型数值,通常是一个整该是一个介于数组下标取值范围内的整型数值,通常是一个整型表达式(其中可以包含整型常量或已赋值的整型变量)。型表达式(其中可以包含整型常量或已赋值的整型变
16、量)。 数组元素也是一种变量,对数组元素的访问是通过下标来数组元素也是一种变量,对数组元素的访问是通过下标来进行的,进行的,因此,可用循环语句操作数据,这在处理数据时带来因此,可用循环语句操作数据,这在处理数据时带来很大方便。很大方便。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用12 【案例【案例5.1】用数组来处理求用数组来处理求Fibonacci数列问题(具体描述见【案例数列问题(具体描述见【案例3.23】)。】)。#include #define N 40int main() int i; long int fN=1, 1; /*数组初始化,数组初始化,
17、f0及及f1分别为分别为1,其它为,其它为0*/ for(i=2; iN; i+) fi=fi-2+fi-1; /*计算从第计算从第3个月起每月的总兔子对数个月起每月的总兔子对数*/ for(i=0;iN;i+) if(i%5=0) printf(n); /*控制一行输出控制一行输出5个数个数*/ printf(%12ld, fi); printf(n); return 0; 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用13 5.1.4 5.1.4 一维数组程序举例一维数组程序举例 【案例案例5.25.2】某电视台举办青年歌手大奖赛。假设有某电视台举办青年歌手大
18、奖赛。假设有1111个评委参个评委参与评分工作。计算每位歌手最终得分的与评分工作。计算每位歌手最终得分的方法方法是:首先去掉一个最高分和是:首先去掉一个最高分和一个最低分,然后计算剩余一个最低分,然后计算剩余9 9个分数的平均值,所得结果就是选手的最个分数的平均值,所得结果就是选手的最终得分。希望编写一个程序,帮助工作人员计算每个歌手的分数。终得分。希望编写一个程序,帮助工作人员计算每个歌手的分数。 分析分析:要考虑两个问题:(:要考虑两个问题:(1 1)数据结构:数据结构:程序所要处理的数据如何程序所要处理的数据如何存储和表示。显然选用一维数组来存储比较合适。(存储和表示。显然选用一维数组来
19、存储比较合适。(2 2)算法算法: :根据计算根据计算每位歌手最终得分的方法,关键是如何求出每位歌手所得的最高分和最每位歌手最终得分的方法,关键是如何求出每位歌手所得的最高分和最低分?求最高分可以采用打擂台的方法:先假设第一个得分为最高分(低分?求最高分可以采用打擂台的方法:先假设第一个得分为最高分(即擂主),然后把其他的每个得分依次与最高分(即擂主)进行比较,即擂主),然后把其他的每个得分依次与最高分(即擂主)进行比较,若发现后面的得分高于前面的最高分,则将把最高分修改为后面的得分若发现后面的得分高于前面的最高分,则将把最高分修改为后面的得分(产生新擂主)。如此一直下去。(产生新擂主)。如此
20、一直下去。 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用14 5.1.4 5.1.4 一维数组程序举例一维数组程序举例 【案例案例5.25.2】某电视台举办青年歌手大奖赛。假设有某电视台举办青年歌手大奖赛。假设有1111个评委参个评委参与评分工作。计算每位歌手最终得分的与评分工作。计算每位歌手最终得分的方法方法是:首先去掉一个最高分和是:首先去掉一个最高分和一个最低分,然后计算剩余一个最低分,然后计算剩余9 9个分数的平均值,所得结果就是选手的最个分数的平均值,所得结果就是选手的最终得分。希望编写一个程序,帮助工作人员计算每个歌手的分数。终得分。希望编写一个程序
21、,帮助工作人员计算每个歌手的分数。 分析分析:要考虑两个问题:(:要考虑两个问题:(1 1)数据结构:数据结构:程序所要处理的数据如何程序所要处理的数据如何存储和表示。显然选用一维数组来存储比较合适。(存储和表示。显然选用一维数组来存储比较合适。(2 2)算法算法: :根据计算根据计算每位歌手最终得分的方法,关键是如何求出每位歌手所得的最高分和最每位歌手最终得分的方法,关键是如何求出每位歌手所得的最高分和最低分?求最高分可以采用打擂台的方法:先假设第一个得分为最高分(低分?求最高分可以采用打擂台的方法:先假设第一个得分为最高分(即擂主),然后把其他的每个得分依次与最高分(即擂主)进行比较,即擂
22、主),然后把其他的每个得分依次与最高分(即擂主)进行比较,若发现后面的得分高于前面的最高分,则将把最高分修改为后面的得分若发现后面的得分高于前面的最高分,则将把最高分修改为后面的得分(产生新擂主)。如此一直下去。(产生新擂主)。如此一直下去。#include #include #define NUM 11 #define NUM 11 / /* *评委人数评委人数* */ /int main( )int main( ) float scoreNUM, sum; float scoreNUM, sum; / /* *一维数组一维数组scorescore用于保存用于保存1111位评委的评分位评委的
23、评分* */ / int i, maxvalue, minvalue; int i, maxvalue, minvalue; printf(nEnter 11 score:); printf(nEnter 11 score:); for (i=0; iNUM; i+) for (i=0; iNUM; i+) scanf(%f, &scorei); scanf(%f, &scorei); / /* *用循环语句配合用循环语句配合scanfscanf函数逐个对数组元素赋值函数逐个对数组元素赋值* */ / maxvalue=minvalue=score0; maxvalue=minvalue=sc
24、ore0; / /* *把第一个得分作为最高分与最低分把第一个得分作为最高分与最低分* */ / for(i=0; iNUM; i+) for(i=0; imaxvalue) maxvalue=scorei; if (scoreimaxvalue) maxvalue=scorei; else if (scoreiminvalue) minvalue=scorei; else if (scoreiminvalue) minvalue=scorei; sum=sum+scorei; sum=sum+scorei; sum=(sum-maxvalue-minvalue)/(NUM-2); sum=(
25、sum-maxvalue-minvalue)/(NUM-2); / /* *计算歌手的最终得分计算歌手的最终得分* */ / printf(nFinal score is %6.2f, sum); printf(nFinal score is %6.2f, sum); return 0; return 0; 5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用1515 第第5 5章章 数组数组u5.1 5.1 批量处理:一维数组的定义和使用批量处理:一维数组的定义和使用u5.2 5.2 完美矩形:二维数组的定义和使用完美矩形:二维数组的定义和使用u5.3 5.3 戴帽成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 数组教学课件PPT 数组 教学 课件 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内