C语言程序设计第6章利用数组处理批量数据课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计第6章利用数组处理批量数据课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 利用 数组 处理 批量 数据 课件
- 资源描述:
-
1、C语言程序设计第6章利用数组处理批量数据数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University2主要内容主要内容q引言引言q一维数组的定义和引用一维数组的定义和引用q二维数组的定义和引用二维数组的定义和引用q字符数组与字符串字符数组与字符串数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University3引引 言言q基本数据类型基本数据类型v整型整型v实型实型v字符型字符型q构造数据类型构造数据类型(用户自定义数据类型用户自定义数据类型)v数组数组v结构体结构体v共用体共用体数 组C C语言程序设
2、计语言程序设计Soochow UniversitySoochow University4引引 言言q数组数组v数组是有序数据的集合数组是有序数据的集合v特点特点q所有数据元素所有数据元素类型类型相同相同q数据元素类型可以是基本数据类型和构造数据类型数据元素类型可以是基本数据类型和构造数据类型q由数组名和下标确定具体的数据元素由数组名和下标确定具体的数据元素数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University5一维数组的定义一维数组的定义q一维数组的定义一维数组的定义v格式格式:类型类型 数组名数组名数组长度数组长度;q长度长度只能为常量、
3、常量表达式只能为常量、常量表达式q类型类型数组中元素的类型数组中元素的类型q数组名数组名遵循标识符命名规则,表示数组中元素的起始位置遵循标识符命名规则,表示数组中元素的起始位置v例如:例如:int a6;q分配了六个单元,每个单分配了六个单元,每个单元存放一个元存放一个int(即(即4个个Byte),),而且各单元而且各单元连续连续!q注意:注意:v c不允许对数组的大小作动态定义。不允许对数组的大小作动态定义。350 x78240 x78280 x78340 x783846175781000 x782C0 x7830aa0a1a2a3a4a5数 组q举例:举例:int a4+6;合法合法不合
4、法不合法int n=10;int an;#define N 10float arryN;合法合法结论:定义数组时,数组长度必须是常量或者常量表达式,不能为变量。C C语言程序设计语言程序设计6Soochow UniversitySoochow University数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University7一维数组的使用一维数组的使用q一维数组的使用一维数组的使用v格式:格式:名称名称下标下标;v说明:说明:1 1)下标范围:)下标范围:0长度长度-12 2)越界问题:越界问题:C中不检查越界,但越界写数据可能造中不检查越界,但
5、越界写数据可能造成系统崩溃成系统崩溃3 3)数组不能整体引用,只能引用其中的元素)数组不能整体引用,只能引用其中的元素q例如:例如:int a3;a2=19;4)下标可以是常量、变量、表达式或函数)下标可以是常量、变量、表达式或函数数 组q举例举例:int a 10;a0=a5+a7-a2*3合法合法C C语言程序设计语言程序设计8Soochow UniversitySoochow Universityint n=5;int a10;an=20;int n=5;int a5;an=20;不正确不正确注意:(1)使用数组时,程序员必须自己检查数组越界问题。(2)使用数组时,数组下标可以是常量,变
6、量,表达式,甚至是函数。合法合法数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University9一维数组的初始化一维数组的初始化q部分初始化:部分初始化:v例如:例如:int a20=3,2,5,6,9;其余元素为其余元素为0 0q全部初始化:全部初始化:数组长度可以省略数组长度可以省略v例如:例如:int a3=3,4,6;int b=23,45,67,89;q对数组全部元素初始化为对数组全部元素初始化为0方式方式v例如:例如:int a5=0,0,0,0,0;或者:或者:int a5=0;不能不能:int a5=0*10;q说明:如果不给数组设
7、置初值,则为随机数说明:如果不给数组设置初值,则为随机数数 组q在定义数组的同时,给各数组元素赋值在定义数组的同时,给各数组元素赋值qint a10=0,1,2,3,4,5,6,7,8,9;qint a10=0,1,2,3,4;相当于相当于 int a10=0,1,2,3,4,0,0,0,0,0;qint a10=0,0,0,0,0,0,0,0,0,0;相当于相当于 int a10=0;qint a5=1,2,3,4,5;可写为可写为 int a=1,2,3,4,5;C C语言程序设计语言程序设计10Soochow UniversitySoochow University数 组C C语言程序设
8、计语言程序设计Soochow UniversitySoochow University11一维数组程序举例一维数组程序举例q用数组来处理求用数组来处理求fibonacci数列问题数列问题q冒泡排序冒泡排序q选择排序选择排序q插入排序插入排序q统计数字序列中统计数字序列中0-9中各数值出现的次数中各数值出现的次数q任意从键盘上输入一个正整数(最大为任意从键盘上输入一个正整数(最大为6553565535),),请将它逆序输出请将它逆序输出数 组一维数组程序举例一维数组程序举例 例例6.2 用数组处理求用数组处理求Fibonacci数列问题数列问题q解题思路:解题思路:v例例5.8中用简单变量处理的
9、,中用简单变量处理的,缺点缺点不能在内存不能在内存中保存这些数。假如想直接输出数列中第中保存这些数。假如想直接输出数列中第25个个数,是很困难的。数,是很困难的。v如果用数组处理,每一个数组元素代表数列中如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组的一个数,依次求出各数并存放在相应的数组元素中元素中C C语言程序设计语言程序设计12Soochow UniversitySoochow University数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University13例题例题(1)q 用数组来处理求用数组来处理求
10、fibonacci数列问题。数列问题。#include void main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i+1)%5=0)printf(n);printf(%12d,fi);数 组q 例例6.3 有有6个地区的面积,要求对它们按由小到个地区的面积,要求对它们按由小到大的顺序排列。大的顺序排列。v解题思路:解题思路:q排序的规律有两种:一种是排序的规律有两种:一种是“升序升序”,从小到大;从小到大;另一种是另一种是“降序降序”,从大到小,从大到小q把题目抽象为:把题目抽象为:“对对n个数按升序排
11、序个数按升序排序”q常用的排序算法常用的排序算法v起泡排序起泡排序(冒泡排序冒泡排序)v选择排序选择排序v插入排序插入排序一维数组程序举例一维数组程序举例C C语言程序设计语言程序设计14Soochow UniversitySoochow University数 组985420895420859420854920854290854209大数沉淀,小数起泡大数沉淀,小数起泡a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C C语言程序设计语言程序设计15Soochow UniversitySoochow University数 组854
12、209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C C语言程序设计语言程序设计16Soochow UniversitySoochow University数 组542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C C语言程序设计语言程序设计17Soochow UniversitySoochow University数 组420589240589204589a0a1a2a3a4a
13、5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C C语言程序设计语言程序设计18Soochow UniversitySoochow University数 组204589024589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C C语言程序设计语言程序设计19Soochow UniversitySoochow University数 组for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(j=0;j5;j+)结论结论:如果有如
14、果有n n个数,则要进行个数,则要进行n-1n-1趟比较。在第趟比较。在第1 1趟比趟比较中要进行较中要进行n-1n-1次两两比次两两比较,在第较,在第j j趟比较中要进趟比较中要进行行n-jn-j次两两比较。次两两比较。C C语言程序设计语言程序设计20Soochow UniversitySoochow University数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University21程序流程图如下:程序流程图如下:冒泡排序冒泡排序数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University22
15、冒泡排序源程序冒泡排序源程序#include#define N 10void main()int arrayN;int i,j,t;printf(Input 10 numbers:n);for(i=0;iN;i+)scanf(%d,&arrayi);printf(n);for(j=0;jN;j+)for(i=0;iarrayi+1)t=arrayi;arrayi=arrayi+1;arrayi+1=arrayi;printf(The sorted numbers:n);for(i=0;iN;i+)printf(%d ,arrayi);if(i+1)%5=0)printf(n);数 组98542
16、0a0a1a2a3a4a5index=0;for(i=1;i6;i+)if(aindexai)index=imax=aindex;aindex=a5;a5=max;选择排序选择排序985420985420985420985420085429C C语言程序设计语言程序设计23Soochow UniversitySoochow University数 组085429a0a1a2a3a4a5max=a0;index=0;for(i=1;i5;i+)if(maxai)max=ai;index=iaindex=a4;a4=max;选择排序选择排序085429085429085429025489index
17、=0;for(i=1;i5;i+)if(aindexai)index=imax=aindex;aindex=a4;a4=max;C C语言程序设计语言程序设计24Soochow UniversitySoochow University数 组025489a0a1a2a3a4a5选择排序选择排序025489025489024589index=0;for(i=1;i4;i+)if(aindexai)index=imax=aindex;aindex=a3;a3=max;C C语言程序设计语言程序设计25Soochow UniversitySoochow University数 组024589a0a1a
18、2a3a4a5选择排序选择排序024589024589index=0;for(i=1;i3;i+)if(aindexai)index=imax=aindex;aindex=a2;a2=max;C C语言程序设计语言程序设计26Soochow UniversitySoochow University数 组024589a0a1a2a3a4a5选择排序选择排序024589结论结论:如果有如果有n n个数,则要进行个数,则要进行n-1n-1趟比较。在第趟比较。在第1 1趟比趟比较中要进行较中要进行n-1n-1次两两比次两两比较,在第较,在第j j趟比较中要进趟比较中要进行行n-jn-j次两两比较。次两
19、两比较。index=0;for(i=1;i2;i+)if(aindexai)index=imax=aindex;aindex=a1;a1=max;C C语言程序设计语言程序设计27Soochow UniversitySoochow University数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University28选择排序选择排序q原理原理v每次循环选择没有排序的元素中的最小元素置每次循环选择没有排序的元素中的最小元素置于元素序列的开始于元素序列的开始vN-S图图输入数组输入数组aindex=kfor i=k+1 to n-1ai aindexi
20、ndex=iaindexakYNfor k=0 to n-2输出数组输出数组a数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University29选择排序程序选择排序程序void main()int i,index,k,n,temp,a10;for(i=0;i10;i+)scanf(“%d”,&ai);for(k=0;k10;k+)index=k;for(i=k+1;i10;i+)if(ai aindex)index=i;temp=aindex;aindex=ak;ak=temp;for(i=0;i tempai+1=aiYNfor k=2 to n
21、-1输出数组输出数组a排序排序a0,a1ai+1=tempbreak;i0a0=tempYN数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University32一维数组应用举例一维数组应用举例q 统计数字序列中统计数字序列中0-9中各数值出现的次数中各数值出现的次数v 数字序列保存于一个整型数组中数字序列保存于一个整型数组中q 任意从键盘上输入一个正整数(最大为任意从键盘上输入一个正整数(最大为6553565535),),请将它逆序输出请将它逆序输出v 如:输入:如:输入:64934;64934;则输出:则输出:4394643946v 对每一个数进行
22、如下处理对每一个数进行如下处理q 提取个位数字:提取个位数字:v 让数字序列对让数字序列对10求余求余q 控制循环控制循环1.每次循环让整数减去个位数,并除以每次循环让整数减去个位数,并除以102.当当(1)结果的个位数为结果的个位数为0时,表示整数数字检测完毕。时,表示整数数字检测完毕。数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University33二维数组二维数组q多维数组的空间想象多维数组的空间想象v 二维数组:二维数组:一个表格或一个平面矩阵一个表格或一个平面矩阵v 一维数组:一维数组:一列长表或一个向量一列长表或一个向量v 多维数组:多
23、维数组:多维空间的一个数据列阵多维空间的一个数据列阵v 三维数组:三维数组:三维空间的一个方阵三维空间的一个方阵数 组C C语言程序设计语言程序设计Soochow UniversitySoochow University34二维数组的定义二维数组的定义q格式格式v 名称名称长度长度1长度长度2;v说明:说明:1 1)长度)长度1和长度和长度2常量表达式,其中长度常量表达式,其中长度1 1表示行数,长度表示行数,长度2 2表示列数表示列数2 2)内存中二维数组的元素按行存放)内存中二维数组的元素按行存放数 组C C语言程序设计语言程序设计Soochow UniversitySoochow Uni
展开阅读全文