C程序设计数组课件.ppt
《C程序设计数组课件.ppt》由会员分享,可在线阅读,更多相关《C程序设计数组课件.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数组数组第5章 数组本章主要内容本章主要内容 1.数组基本概念数组基本概念 2.一维数组及应用一维数组及应用 3.二维数组及应用二维数组及应用 4.字符数组和字符串字符数组和字符串第5章 数组5.1 数组的概念数组的概念 C语言中定义普通变量就是语言中定义普通变量就是按变量的数据类型找到相应大按变量的数据类型找到相应大小的存储空间例如:小的存储空间例如:int a1,a2;float a3;char a4a1a2整型变量占两个字节第5章 数组int a1,a2;float a3;char a4a1a2a3实型变量占四个字节 C语言中定义普通变量就是语言中定义普通变量就是按变量的数据类型找到相应
2、大按变量的数据类型找到相应大小的存储空间例如:小的存储空间例如:5.1 数组的概念数组的概念第5章 数组5.1 数组的概念数组的概念int a1,a2;float a3;char a4a1a2a3a4 C语言中定义普通变量就是语言中定义普通变量就是按变量的数据类型找到相应大按变量的数据类型找到相应大小的存储空间例如:小的存储空间例如:字符型变量占1个字节第5章 数组5.1 数组的概念数组的概念 C语言中定义数组就是按数组语言中定义数组就是按数组数据类型及元素个数找到相应大数据类型及元素个数找到相应大小的一组连续的存储空间。例如:小的一组连续的存储空间。例如:int a4a0=2a3=5a2=3
3、a定义了定义了0 3共共4个元素个元素占占8个字节个字节0123第5章 数组5.1 数组的概念数组的概念int a4a0=2a3=5a2=3a2 C语言中定义数组就是按数组语言中定义数组就是按数组数据类型及元素个数找到相应大数据类型及元素个数找到相应大小的一组连续的存储空间。例如:小的一组连续的存储空间。例如:第5章 数组5.1 数组的概念数组的概念int a4a0=2a3=5a2=3a C语言中定义数组就是按数组语言中定义数组就是按数组数据类型及元素个数找到相应大数据类型及元素个数找到相应大小的一组连续的存储空间。例如:小的一组连续的存储空间。例如:52第5章 数组5.1 数组的概念数组的概
4、念int a4a0=2a3=5a2=3a C语言中定义数组就是按数组语言中定义数组就是按数组数据类型及元素个数找到相应大数据类型及元素个数找到相应大小的一组连续的存储空间。例如:小的一组连续的存储空间。例如:523第5章 数组5.1 数组的概念数组的概念1、数组数组是内存中的一块连续的存储区域,该区域由若干是内存中的一块连续的存储区域,该区域由若干个数据成员组成;个数据成员组成;2、每一个数据成员称为一个、每一个数据成员称为一个数组元素数组元素,有统一的名字,有统一的名字(即数组名),用元素在数组中的序号(称为下标)(即数组名),用元素在数组中的序号(称为下标)来标识;来标识;3、数组可以是一
5、维的,也可以是多维的,不管一维还是、数组可以是一维的,也可以是多维的,不管一维还是多维,各元素在内存中都是连续存放的;多维,各元素在内存中都是连续存放的;4、数组的每一维下标必须用方括号括起来;、数组的每一维下标必须用方括号括起来;第5章 数组5.1 数组的概念数组的概念5、一维数组一维数组是指只有一个下标的数组,定义一个数组必是指只有一个下标的数组,定义一个数组必须说明数组类型、名称、下标维数及每维下标最多须说明数组类型、名称、下标维数及每维下标最多元素个数。例如:元素个数。例如:int a6第5章 数组5.1 数组的概念数组的概念5、一维数组一维数组是指只有一个下标的数组,定义一个数组必是
6、指只有一个下标的数组,定义一个数组必须说明数组类型、名称、下标维数及每维下标最多须说明数组类型、名称、下标维数及每维下标最多元素个数。例如:元素个数。例如:int a6 数组的类型,决定数组每个数组的类型,决定数组每个元素所占的存储区域大小元素所占的存储区域大小第5章 数组5.1 数组的概念数组的概念5、一维数组一维数组是指只有一个下标的数组,定义一个数组必是指只有一个下标的数组,定义一个数组必须说明数组类型、名称、下标维数及每维下标最多须说明数组类型、名称、下标维数及每维下标最多元素个数。例如:元素个数。例如:int a6 数组的名称,是程序中引用数组的名称,是程序中引用数组元素的依据之一数
7、组元素的依据之一第5章 数组5.1 数组的概念数组的概念5、一维数组一维数组是指只有一个下标的数组,定义一个数组必是指只有一个下标的数组,定义一个数组必须说明数组类型、名称、下标维数及每维下标最多须说明数组类型、名称、下标维数及每维下标最多元素个数。例如:元素个数。例如:int a6 数组的维说明,决定数组由数组的维说明,决定数组由几维组成,本例为一维数组,几维组成,本例为一维数组,只有一个下标只有一个下标第5章 数组5、一维数组一维数组是指只有一个下标的数组,定义一个数组必是指只有一个下标的数组,定义一个数组必须说明数组类型、名称、下标维数及每维下标最多须说明数组类型、名称、下标维数及每维下
8、标最多元素个数。例如:元素个数。例如:int a6 数组的元素个数,本例共定数组的元素个数,本例共定义义6个元素,下标从个元素,下标从055.1 数组的概念数组的概念 假设数组元素假设数组元素a3在内存中的在内存中的地址为地址为3100,那,那a0的地址?的地址?a5呢?呢?第5章 数组6、二维数组二维数组是指有两个下标的数组,二维数组在逻辑上是指有两个下标的数组,二维数组在逻辑上表现为二维表格,是若干个一维数组的集合。例如:表现为二维表格,是若干个一维数组的集合。例如:5.1 数组的概念数组的概念int a23 定义了一个整型二维数组,逻辑上由两行定义了一个整型二维数组,逻辑上由两行三列共三
9、列共6个元素组成。元素分别为:个元素组成。元素分别为:a00、a01、a02 a10、a11、a12第5章 数组6、二维数组二维数组是指有两个下标的数组,二维数组在逻辑上是指有两个下标的数组,二维数组在逻辑上表现为二维表格,是若干个一维数组的集合。例如:表现为二维表格,是若干个一维数组的集合。例如:5.1 数组的概念数组的概念int a23a00a01a02a10a11a12a0a1 假设定义数组假设定义数组float a56,已知已知a11在在内存中的地址为内存中的地址为3100,那,那a22的地址?的地址?a45呢?呢?第5章 数组7、字符数组字符数组是用于存放字符的数组,每个元素可以存放
10、是用于存放字符的数组,每个元素可以存放一个字符,主要用于处理字符串。例如:一个字符,主要用于处理字符串。例如:5.1 数组的概念数组的概念char a10 定义了一个字符型一维数组,最多可以存定义了一个字符型一维数组,最多可以存放放10个字符。个字符。char a1010 定义了一个字符型二维数组,最多可以存定义了一个字符型二维数组,最多可以存放放100个字符;一般用于存放长度不超过个字符;一般用于存放长度不超过10个个字符的字符串。字符的字符串。第5章 数组5.2 一维数组及应用一维数组及应用5.2.1 一维数组的定义(一维数组的定义(P133)与初始化)与初始化(P136)5.2.2 一维
11、数组的引用与遍历一维数组的引用与遍历 所谓遍历,是指对数组中的所有元素扫描一遍,对所谓遍历,是指对数组中的所有元素扫描一遍,对于一维数组,通常用单层循环完成。例如:于一维数组,通常用单层循环完成。例如:1.遍历赋值遍历赋值为每个元素赋值为每个元素赋值 for(i=0;iN;i+)printf(请输入第%d个元素的值:,i);scanf(%d,&ai);第5章 数组5.2 一维数组及应用一维数组及应用5.2.2 一维数组的引用与遍历一维数组的引用与遍历2.遍历输出遍历输出输出每个元素的值输出每个元素的值printf(数组各元素的值为:);for(i=0;iN;i+)printf(%5d,ai);
12、第5章 数组5.2 一维数组及应用一维数组及应用5.2.3 一维数组应用举例一维数组应用举例 利用数组编程的一般步骤为:利用数组编程的一般步骤为:(1)定义数组;)定义数组;(2)为数组各元素赋值;)为数组各元素赋值;(3)遍历数组各元素,按要求处理;)遍历数组各元素,按要求处理;(4)输出处理结果。)输出处理结果。第5章 数组5.2 一维数组及应用一维数组及应用5.2.3 一维数组应用举例一维数组应用举例 1.从键盘输入从键盘输入10个学生成绩,求平均分并统计高于平个学生成绩,求平均分并统计高于平均分的人数均分的人数(1)定义有)定义有10个元素的个元素的数组数组,求平均分就需要累加,求平均
13、分就需要累加,所以还需要一个所以还需要一个累加器累加器,要统计人数还需要一个,要统计人数还需要一个计计数器数器,要循环遍历数组各元素还需要,要循环遍历数组各元素还需要循环变量;循环变量;(2)通过)通过遍历遍历为数组各元素赋值为数组各元素赋值(3)累加各数组元素值,需要)累加各数组元素值,需要遍历遍历各数组元素各数组元素(4)求出平均分后还要统计高于平均分的人数,需要拿)求出平均分后还要统计高于平均分的人数,需要拿每个元素和平均分进行比较,所以还需要每个元素和平均分进行比较,所以还需要遍历遍历各数各数组元素组元素第5章 数组5.2 一维数组及应用一维数组及应用5.2.3 一维数组应用举例一维数
14、组应用举例 1.从键盘输入从键盘输入10个学生成绩,求平均分并统计高于平个学生成绩,求平均分并统计高于平均分的人数均分的人数(5)输出处理结果。)输出处理结果。第5章 数组5.2.3 一维数组应用举例一维数组应用举例 2.随机产生随机产生10个两位整数放入一维数组,再将各数组个两位整数放入一维数组,再将各数组元素按逆序存放,如元素按逆序存放,如a0与与a9对换,对换,a1与与a8对换对换;3.随机产生随机产生10个两位整数放入一维数组,找出其中最个两位整数放入一维数组,找出其中最大值及其位置;大值及其位置;5.2 一维数组及应用一维数组及应用第5章 数组5.2 一维数组及应用一维数组及应用ma
15、in()int a10,max,k,i,j;printf(原数据为:);for(i=0;i10;i+)ai=rand()%90+10;printf(%5d,ai);k=0;for(i=1;i10;i+)if(akai)k=i;printf(n最大值%d,在第%d位!,ak,k);第5章 数组5.2.3 一维数组应用举例一维数组应用举例 4.对对8个数按降序排序个数按降序排序比较交换法比较交换法 5.2 一维数组及应用一维数组及应用第第1趟:假设趟:假设a0元素最大,将其和后面元素最大,将其和后面a1-a7各元素值进行比较,如果有比它更大的数,各元素值进行比较,如果有比它更大的数,则交换。则交换
16、。代码段如下:for(j=1;i8;j+)if(a0aj)t=a0;a0=aj;aj=t;第5章 数组5.2 一维数组及应用一维数组及应用7192935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj1j第5章 数组5.2 一维数组及应用一维数组及应用7192935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a01j第5章 数组5.2 一维数组及应用一维数组及应用7192935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=a
17、j;aj=t;a0aj条件成立!交换!1j第5章 数组5.2 一维数组及应用一维数组及应用9271935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj1j第5章 数组5.2 一维数组及应用一维数组及应用9271935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj2j第5章 数组5.2 一维数组及应用一维数组及应用9271935950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj2j条件成立!交换!第
18、5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj2j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj3j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj3j条件不成立!第5章 数组5.2 一维数组及应用一维数组及应用9
19、371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj4j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj4j条件不成立!第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj5j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for
20、(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj5j条件不成立!第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj6j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0ai)t=a0;a0=aj;aj=t;a0aj6j条件不成立!第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj
21、)t=a0;a0=aj;aj=t;a0aj7j第5章 数组5.2 一维数组及应用一维数组及应用9371925950277941代码段如下:for(j=1;j8;j+)if(a0aj)t=a0;a0=aj;aj=t;a0aj7j条件不成立!第一趟比较结束后,最大值被放在了a0位置。第5章 数组5.2 一维数组及应用一维数组及应用 第第2趟是将趟是将a0排除在外,设排除在外,设a1是剩下的数中最是剩下的数中最大的,与后面大的,与后面a2-a7比较。比较。第第3趟是将趟是将a0、a1排除在外,设排除在外,设a2是剩下的是剩下的数中最大的,与后面数中最大的,与后面a3-a7比较。比较。第第7趟是将趟是
22、将a0 a5排除在外,设排除在外,设a6是剩下的是剩下的数中最大的,与后面的数中最大的,与后面的a7-a7比较。完成排序。比较。完成排序。以此类推,若要对以此类推,若要对N个数排序,要处理的趟数是个数排序,要处理的趟数是N-1。由此增加一个外循环控制趟数:由此增加一个外循环控制趟数:for(i=0;in-1;i+)完整的比较交换法排序核心程序段为:完整的比较交换法排序核心程序段为:for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)交换两个元素值交换两个元素值 第5章 数组5.2.3 一维数组应用举例一维数组应用举例 4.对对8个数按降序排序个数按降序排序选择法选择
23、法 与比较交换法类似,与比较交换法类似,只是每次比较后不马上交只是每次比较后不马上交换,而是只记录极值位置,换,而是只记录极值位置,一趟比较完成后再和假想一趟比较完成后再和假想的极值交换,极大地提高的极值交换,极大地提高了排序效率。了排序效率。5.2 一维数组及应用一维数组及应用main()int a8,i,j,k,t;printf(排序前数据为:);for(i=0;i8;i+)ai=rand()%90+10;printf(%5d,ai);for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(akaj)k=j;t=ai;ai=ak;ak=t;printf(n排序后数据为:)
24、;for(i=0;i8;i+)printf(%5d,ai);第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(akaj)k=j;t=ai;ai=ak;ak=t;7192935950277941i第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(akaj)k=j;t=ai;ai=ak;ak=t;7192935950277941ki第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(ak
25、aj)k=j;t=ai;ai=ak;ak=t;7192935950277941kij第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(akaj)k=j;t=ai;ai=ak;ak=t;7192935950277941ikj第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=i+1;j8;j+)if(akaj)k=j;t=ai;ai=ak;ak=t;7192935950277941ikj第5章 数组5.2 一维数组及应用一维数组及应用for(i=0;i7;i+)k=i;for(j=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 数组 课件
限制150内