(6.13)--补充课件第07讲-数组程序设计基础.ppt
《(6.13)--补充课件第07讲-数组程序设计基础.ppt》由会员分享,可在线阅读,更多相关《(6.13)--补充课件第07讲-数组程序设计基础.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七讲数组第七讲数组C语言程序设计语言程序设计 The C Programming Language2C语言程序设计语言程序设计 温州理工学院温州理工学院 2第七讲数组第七讲数组本章要求本章要求理解数组的概念。理解数组的概念。掌握一维数组与二维数组的定义与使用方法。掌握一维数组与二维数组的定义与使用方法。掌握使用字符数组处理字符串的方法。掌握使用字符数组处理字符串的方法。掌握数组的基本算法:排序、查找与插入。掌握数组的基本算法:排序、查找与插入。本章重点本章重点数组的组成和特点数组的组成和特点一维数组和二维的定义、赋值一维数组和二维的定义、赋值字符串与字符数组的关系以及数组在程序中的使用字符串
2、与字符数组的关系以及数组在程序中的使用本章难点本章难点数组元素存储格式数组元素存储格式用数组处理字符及排序、查找与插入等算法用数组处理字符及排序、查找与插入等算法3C语言程序设计语言程序设计 温州理工学院温州理工学院 3第七讲数组第七讲数组概述概述一维数组一维数组二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间4C语言程序设计语言程序设计 温州理工学院温州理工学院 4第七讲数组第七讲数组概述概述一维数组一维数组二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间5C语言程序设计语言程序设计 温州理工学院温州理工
3、学院 5C语言的数据是以数据类型形式出现的,语言的数据是以数据类型形式出现的,C的数据类型如下:的数据类型如下:概概 述述单精度型单精度型双精度型双精度型 整型整型字符型字符型实型(浮点型)实型(浮点型)枚举型枚举型数组类型数组类型共用体类型共用体类型结构体类型结构体类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型构造类型数据是由基本类型数据按一定规则组成的,因此又称构造类型数据是由基本类型数据按一定规则组成的,因此又称为为“导出类型导出类型”。6C语言程序设计语言程序设计 温州理工学院温州理工学院 6概概 述述在程序设计中,为了处理方便,在程序设计中,为了处理
4、方便,把具有相同类把具有相同类型的若干变量按有序的形式组织起来。这些按型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。序排列的同类数据元素的集合称为数组。在在C语言中,语言中,数组属于构造数据类型。一个数数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。以是基本数据类型或是构造类型。按数组元素的类型不同,数组又可分为按数组元素的类型不同,数组又可分为:数值数数值数组、组、字符数组、字符数组、指针数组、结构数组等各种指针数组、结构数组等各种类别。类别。7C语言程序设计语言程序设计
5、温州理工学院温州理工学院 7概概 述述按数组的维数可分为:一维数组、二维数组、按数组的维数可分为:一维数组、二维数组、多维数组。多维数组。数组在内存中占用一片连续的存储单元,最低数组在内存中占用一片连续的存储单元,最低地址对应于数组的第一个元素,最高地址对应地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以于最后一个元素,数组可以是一维的,也可以是多维的。是多维的。8C语言程序设计语言程序设计 温州理工学院温州理工学院 8第七讲数组第七讲数组概述概述一维数组一维数组一维数组的定义与声明一维数组的定义与声明一维数组的初始化与引用一维数组的初始化与引用一维数组的基本操
6、作一维数组的基本操作一维数组的应用举例一维数组的应用举例二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间9C语言程序设计语言程序设计 温州理工学院温州理工学院 9一维数组一维数组一维数组一维数组:只有一个下标变量的数组。只有一个下标变量的数组。一维数组声明一维数组声明一般形式为一般形式为:其中,类型说明符是任一种基本数据类型或构造数据类型,其中,类型说明符是任一种基本数据类型或构造数据类型,数组名是用户定义的数组标识符;数组名是用户定义的数组标识符;方括号中的常量表达式方括号中的常量表达式表示数据元素的个数,也称为数组的长度表示数据元素的个数,也称为
7、数组的长度。int a10;说明整型数组说明整型数组a,有,有10个元素。个元素。float b10,c20;说明实型数组说明实型数组b,有,有10个元素,实型数个元素,实型数组组c,有,有20个元素。个元素。char ch20;说明字符数组说明字符数组ch,有,有20个元素。个元素。类型符类型符 数组名数组名 常量表达式常量表达式,;10C语言程序设计语言程序设计 温州理工学院温州理工学院 10使用说明使用说明数组数组的类型实际上是指数组元素的取值类型。的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是对于同一个数组,其所有元素的数据类型都是相同相同的。的。允许在允
8、许在同一个类型同一个类型说明中,说明多个数组和多说明中,说明多个数组和多个变量。例如:个变量。例如:int a,b,c,d,k110,k220;数组数组名的书写规则应符合标识符的书写规定,名的书写规则应符合标识符的书写规定,数组名数组名不能不能与同一函数中其它变量名与同一函数中其它变量名相同相同。int a;float a10;是非法的是非法的。11C语言程序设计语言程序设计 温州理工学院温州理工学院 11使用说明使用说明C语言中规定数组的语言中规定数组的下标从下标从0开始开始,方括号中常量,方括号中常量表达式表示数组元素的个数。例如:表达式表示数组元素的个数。例如:int a5 表示表示数组
9、数组a有有5个元素。因下标从个元素。因下标从0开始计算。因此开始计算。因此5个个元素分别为元素分别为a0,a1,a2,a3,a4。不能不能在方括号中用在方括号中用变量变量来表示元素的个数,来表示元素的个数,但是但是可以是符号常数或常量表达式。例如:可以是符号常数或常量表达式。例如:#define FD 5int a3+2,b7+FD;是合法的。但是下述说明方式是错误的。是合法的。但是下述说明方式是错误的。int n=5;int an;12C语言程序设计语言程序设计 温州理工学院温州理工学院 12使用说明使用说明C语言中规定数组的语言中规定数组的下标从下标从0开始开始,方括号中常,方括号中常量表
10、达式表示数组元素的个数。例如:量表达式表示数组元素的个数。例如:int a5 表示数组表示数组a有有5个元素。因下标从个元素。因下标从0开始计算。开始计算。因此因此5个元素分别为个元素分别为a0,a1,a2,a3,a4。数组中各元素在内存占一片连续的存储空间,数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺一维数组在内存中存放的顺序是下标大小的顺序。序。0 1 2 3 9 a0 a1 a2 a3 a9 13C语言程序设计语言程序设计 温州理工学院温州理工学院 13第七讲数组第七讲数组概述概述一维数组一维数组一维数组的定义与声明一维数组的定义与声明一维数组的初始化
11、与引用一维数组的初始化与引用一维数组的基本操作一维数组的基本操作一维数组的应用举例一维数组的应用举例二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间14C语言程序设计语言程序设计 温州理工学院温州理工学院 14一维数组的初始化一维数组的初始化数组数组初始化赋值初始化赋值是指在数组说明时给数组元素赋是指在数组说明时给数组元素赋予初值予初值。数组。数组初始化初始化是在编译阶段进行的。这样是在编译阶段进行的。这样将减少运行时间,提高效率。将减少运行时间,提高效率。数组初始化的一般形式为:数组初始化的一般形式为:其中其中:在在 中的各数据值即为各元素的初值,
12、各值之中的各数据值即为各元素的初值,各值之间用逗号间隔。间用逗号间隔。int a10=0,1,2,3,4,5,6,7,8,9;相当于相当于 a0=0;a1=1;.a9=9;类型符类型符 数组名数组名 常量表达式常量表达式=值,值值,值值值;15C语言程序设计语言程序设计 温州理工学院温州理工学院 15一维数组的初始化一维数组的初始化(contd)C语言语言对数组的初始赋值的几点规定:对数组的初始赋值的几点规定:可以只给部分元素赋初值。当可以只给部分元素赋初值。当 中值的个数少于元中值的个数少于元素个数时,只给前面部分元素赋值。例如:素个数时,只给前面部分元素赋值。例如:int a10=0,1,
13、2,3,4;表示只给表示只给a0a45个元素赋值,个元素赋值,而后而后5个元素自动赋个元素自动赋0值。值。如果定义数组前加关键字如果定义数组前加关键字static,表示是静态存储,表示是静态存储类型数组,对于数值类型数组,其元素初值系统自类型数组,对于数值类型数组,其元素初值系统自动全部赋值为动全部赋值为0值。值。只能给元素逐个赋值,不能给数组整体赋值。只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋例如给十个元素全部赋1值,只能写为值,只能写为:int a10=1,1,1,1,1,1,1,1,1,1;而不能写为:而不能写为:int a10=1;16C语言程序设计语言程序设计 温州
14、理工学院温州理工学院 16一维数组的初始化一维数组的初始化(contd)如给全部元素赋值,则在数组说明中,如给全部元素赋值,则在数组说明中,可以不给可以不给出数组元素的个数。例如:出数组元素的个数。例如:int a5=1,2,3,4,5;可可写为:写为:int a=1,2,3,4,5;当当 中值的个数多于元素个数时中值的个数多于元素个数时,系统出错。例如:系统出错。例如:int a5=1,2,3,4,5,1;17C语言程序设计语言程序设计 温州理工学院温州理工学院 17一维数组元素的引用一维数组元素的引用数组元素是组成数组的基本单元。数组元素也数组元素是组成数组的基本单元。数组元素也是一种变量
15、,是一种变量,其标识方法为数组名后跟一个下其标识方法为数组名后跟一个下标,下标表示了元素在数组中的顺序号。标,下标表示了元素在数组中的顺序号。数组元素一般引用形式为:数组元素一般引用形式为:数组名数组名下标下标 其中的下标只能为整型常量或整型表达式。若为小其中的下标只能为整型常量或整型表达式。若为小数时,数时,C编译将自动取整。例如编译将自动取整。例如:a5,ai+j,ai+都是合法的数组元素。都是合法的数组元素。a1=a2+b1+5;ai=bi;/*将数组将数组b的第的第i元素赋值给数组元素赋值给数组a的第的第i元素元素*/bi+1=ai+2;/*将数组将数组a的第的第i+2元素赋值给数组元
16、素赋值给数组b的第的第i+1元素元素*/18C语言程序设计语言程序设计 温州理工学院温州理工学院 18一维数组元素的引用一维数组元素的引用数组数组元素的引用和数组声明在形式中有些相似,元素的引用和数组声明在形式中有些相似,但这两者具有完全不同的含义。但这两者具有完全不同的含义。数组声明的方括号中给出的是某一维的长度,数组声明的方括号中给出的是某一维的长度,即表示元素的个数;而数组元素中的下标是该即表示元素的个数;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。后者可以是常量,变量或表达式。例如,例如,int a
17、10 这里有这里有a10 只是声明数组有只是声明数组有10元元素。而在程序中引用数组元素素。而在程序中引用数组元素a5表示数组中的第表示数组中的第6个元素。但是引用中不能用个元素。但是引用中不能用a10,因为,因为C语言中下语言中下标从标从0开始,数组开始,数组a的最后一个元素是的最后一个元素是a9。19C语言程序设计语言程序设计 温州理工学院温州理工学院 19一维数组元素的引用一维数组元素的引用C语言中对数组的引用语言中对数组的引用不检验数组边界不检验数组边界,即当引用时下,即当引用时下标超界标超界时时(下标下标小于小于0或大于或大于上界上界),C系统虽然不出错,系统虽然不出错,但可能使其它
18、变量的数组甚至程序代码被破坏,使得程但可能使其它变量的数组甚至程序代码被破坏,使得程序运行中断或输出错误的结果。序运行中断或输出错误的结果。在在C语言语言中只能通过下标变量使用数组元素,而不能一中只能通过下标变量使用数组元素,而不能一次引用整个数组。次引用整个数组。例如例如,输出有,输出有10 个元素的数组必须使用循环语句逐个输出个元素的数组必须使用循环语句逐个输出各下标变量:各下标变量:for(i=0;i10;i+)printf(%d,ai);而不能用一个语句输出整个数组,下面的写法是错误的:而不能用一个语句输出整个数组,下面的写法是错误的:printf(%d,a);20C语言程序设计语言程
19、序设计 温州理工学院温州理工学院 20第七讲数组第七讲数组概述概述一维数组一维数组一维数组的定义与声明一维数组的定义与声明一维数组的初始化与引用一维数组的初始化与引用一维数组的基本操作一维数组的基本操作一维数组的应用举例一维数组的应用举例二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间21C语言程序设计语言程序设计 温州理工学院温州理工学院 21一维数组的基本操作一维数组的基本操作可通过循环给数组元素输入数据可通过循环给数组元素输入数据int a5,i;for(i=0;i5;i+)scanf(%d,&ai);main()int a5,i;for(i=
20、0;i5;i+)scanf(%d,&ai);printf(a%d=%dn,i,ai);22C语言程序设计语言程序设计 温州理工学院温州理工学院 22一维数组的基本操作一维数组的基本操作(contd)求数组中最大元素及其下标。求数组中最大元素及其下标。#define N 5main()int i,p,max,aN;printf(Enter%d Numbers:n,N);/*提示输入数据提示输入数据*/for(i=0;iN;i+)scanf(%d,&ai);max=a0;/*假设第假设第0元素就是最大元素元素就是最大元素*/p=0;for(i=1;i max)max=ai;p=i;printf(n
21、The Max Number a%d=%dn,p,max);注意:注意:for循环中的表达式。循环中的表达式。23C语言程序设计语言程序设计 温州理工学院温州理工学院 23一维数组的基本操作一维数组的基本操作(contd)当数组中元素出当数组中元素出现两个或两个以上现两个或两个以上元素的值相等且均元素的值相等且均为最大值时,如何为最大值时,如何给出给出数组中所有最数组中所有最大元素及其下标大元素及其下标?思考思考24C语言程序设计语言程序设计 温州理工学院温州理工学院 24一维数组的基本操作一维数组的基本操作(contd)#define N 5main()int i,p,max,aN;prin
22、tf(“Enter%d Numbers:n”,N);/提示输入数据提示输入数据for(i=0;iN;i+)scanf(%d,&ai);max=a0;p=0;/假设第假设第0元素就是最大元素元素就是最大元素for(i=1;i max)max=ai;p=i;for(i=0;iN;i+)/输出所有最大元素输出所有最大元素 if(ai=ap)printf(a%d=%d is the Max Number.n,i,ai);25C语言程序设计语言程序设计 温州理工学院温州理工学院 25一维数组的基本操作一维数组的基本操作(contd)这个实例给你带这个实例给你带来什么样的启示?来什么样的启示?思考思考26
23、C语言程序设计语言程序设计 温州理工学院温州理工学院 26一维数组的基本操作一维数组的基本操作(contd)一维数组的倒置一维数组的倒置:将第将第0个元素与最后个元素与最后1个元素的交换、第个元素的交换、第1个元个元素与倒数第素与倒数第2个元素的交换、个元素的交换、即第、即第i个与第个与第n-i-1个元素的个元素的交换,直到交换,直到in/2。define N 5main()int i,t,aN;printf(Enter%d Numbers:n,N);/*提示输入数据提示输入数据*/for(i=0;iN;i+)scanf(%d,&ai);for(i=0;i N/2;i+)/*将数组倒置将数组倒
24、置*/t=ai;ai=aN-i-1;aN-i-1=t;for(i=0;iN;i+)printf(%d,ai);/*输出倒置后数组输出倒置后数组*/27C语言程序设计语言程序设计 温州理工学院温州理工学院 27一维数组的基本操作一维数组的基本操作(contd)在在将数组倒置将数组倒置过程为什过程为什么是么是“for(i=0;i N/2;i+)”?为什么无论为什么无论n是奇数还是是奇数还是偶数,偶数,“将将第第i个与第个与第n-i-1个元素的交换个元素的交换”都能实都能实现所有元素间的倒置?现所有元素间的倒置?思考思考28C语言程序设计语言程序设计 温州理工学院温州理工学院 28第七讲数组第七讲数
25、组概述概述一维数组一维数组一维数组的定义与声明一维数组的定义与声明一维数组的初始化与引用一维数组的初始化与引用一维数组的基本操作一维数组的基本操作一维数组的应用举例一维数组的应用举例二维数组二维数组字符数组字符数组小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间29C语言程序设计语言程序设计 温州理工学院温州理工学院 29一维数组的应用举例一维数组的应用举例(contd)编程求某班编程求某班20个学生某门课程考试的平均成绩及高于个学生某门课程考试的平均成绩及高于平均成绩的学生人数。平均成绩的学生人数。#define NUM 20 /*声明代表班上学生人数的符号常量声明代表班上学生人
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 6.13 补充 课件 07 数组 程序设计 基础
限制150内