C语言程序设计-电子教案-马学文 第6章 数组

上传人:E**** 文档编号:89423362 上传时间:2019-05-25 格式:PPT 页数:59 大小:1.82MB
返回 下载 相关 举报
C语言程序设计-电子教案-马学文 第6章 数组_第1页
第1页 / 共59页
C语言程序设计-电子教案-马学文 第6章 数组_第2页
第2页 / 共59页
C语言程序设计-电子教案-马学文 第6章 数组_第3页
第3页 / 共59页
C语言程序设计-电子教案-马学文 第6章 数组_第4页
第4页 / 共59页
C语言程序设计-电子教案-马学文 第6章 数组_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《C语言程序设计-电子教案-马学文 第6章 数组》由会员分享,可在线阅读,更多相关《C语言程序设计-电子教案-马学文 第6章 数组(59页珍藏版)》请在金锄头文库上搜索。

1、第六章 数组,大学计算机基础,网络信息中心教研室,2,主要内容,6.1 一维数组,6.2 二维数组,6.3 字符数组,大学计算机基础,网络信息中心教研室,3,教学目的:,理解数组与数组元素概念 掌握一维数组的定义与引用 掌握常用排序算法 熟练掌握二维数组的定义、引用、初始化 掌握字符数组的定义、引用、初始化 掌握字符数组的输入与输出 掌握字符串处理函数,大学计算机基础,网络信息中心教研室,4,引言: 数组和数组元素,已经学习的C语言基本数据类型: 整型(short、int、long) 实型(float、double、long double) 字符型(char) 空类型(void) 后续学习C语

2、言数据类型: 枚举类型(属于基本类型) 构造类型: 数组、结构体、共同体 指针类型,大学计算机基础,网络信息中心教研室,5,引言: 数组和数组元素,问题1:输入100个数并以与输入时相反 的顺序输出这100个数; 问题2:输入100名学生的成绩,输出高 于平均分的成绩。,思考:,问题特点:数据处理量大且具有相同性质,大学计算机基础,网络信息中心教研室,6,引言: 数组和数组元素,数组:是一组同类型变量组成的有序集合。数组中的每个变量称为数组的一个元素。可以用数组名称与数组的下标惟一地确定一个数组元素。 例如:一个班有30个学生,用 s0,s1,s2,s29 来表示30个学生的某科成绩,其中,s

3、15就表示第16个学生的成绩。S是数组名,下标表示序号。在C语言中用s15表示s15即为数组s的第16个元素。 数组包括一维数组和多维数组。,大学计算机基础,网络信息中心教研室,7,6.1 一维数组,2,一维数组元素的引用,大学计算机基础,网络信息中心教研室,8,6.1.1 一维数组的定义,1、一维数组的定义,类型说明符 数组名常量表达式;,空格,必须是方括号!,大学计算机基础,网络信息中心教研室,9,6.1.1 一维数组的定义,例如:int a10; /* 定义10个整型变量 */,char c12; /* 定义12个字符变量 */,大学计算机基础,网络信息中心教研室,10,数组必须先定义后

4、使用,而且只能逐个引用数组元素,而不能一次引用整个数组。 数组元素的表示:,数组名下标,6.1.2 一维数组元素的引用,大学计算机基础,网络信息中心教研室,11,例1、 定义一个名称为a并含有10个元素的整型数组,然后依次把1,2,3,10这10个数存入元素a0, a1, a2 , 9,最后求出这10个数的和。,#include main() int a10, s; a0=1; a1=2; a2=3; a3=4; a4=5; a5=6; a6=7; a7=8; a8=9; a9=10; s=a0+a1+a2+a3 +a4+a5+a6 +a7 +a8+a9; printf(“a0+a1+a9=%

5、d”,s); ,数组与循环结合起来,可以有效地处理批量数据!,#include main() int a10, i, s=0; for(i=0; i=9; i+) ai = i+1; for(i=0; i=9; i+) s = s+ ai; printf(“a0+a1+a9=%d”,s); ,大学计算机基础,网络信息中心教研室,12,6.1.3 一维数组的初始化,对数组元素的初始化可以用下面4种方法: 定义时赋初值 如:int a5=0,1,2,3,4; 只给一部分元素赋值 如:int a5=0,1,2; /*只对前三个元素赋值*/ 元素值全为0时的赋值 如:int a5=0; 缺省数组长度对

6、全部元素赋值 如:int a=0,1,2,3,4; /*定义数组a,并对其 中的元素赋值,赋5个值则长度为5*/,大学计算机基础,网络信息中心教研室,13,#include main() int a = 23,56,83,52,100,88,78,25,34,max,i; max=a0; /* 擂台初值 */ for(i=1,imax) max=ai; /* 让每个数与擂台上的数比较,大者留在擂台上 */ printf(“最大值:%d”, max); ,例2、利用数组求集合23,56,83,52,100,88,78,25,34的最大值。,求最值的“擂台法”,大学计算机基础,网络信息中心教研室,

7、14,6.1.4 一维数组程序举例,在程序设计中,排序的算法主要有冒泡法、选择法、插入法等。本节中主要通过一维数组来介绍冒泡法和选择法两种排序算法。,大学计算机基础,网络信息中心教研室,15,冒泡法的基本思想:通过相邻两个数之间的比较和交换,使数值较小的逐渐从底部移向顶部,数值较大的逐渐从顶部移向底部。就像水底的气泡一样逐渐向上冒,故而得名。,冒泡法排序,1,(以从小到大举例),大学计算机基础,网络信息中心教研室,16,第一趟比较 6-1次,以6个数为例的算法示意图:,大学计算机基础,网络信息中心教研室,17,第二趟比较 6-2次,第三趟比较 6-3次,大学计算机基础,网络信息中心教研室,18

8、,第四趟比较 6-4次,第五趟比较 6-5次,算法结论:6个数需要比较5趟才可以完成排序,而在第一趟中比较6-1次,第二趟比较6-2趟由此可以总结出若有n个数,则要进行n-1趟比较,在第i趟中比较n-i次。(i初值为1),大学计算机基础,网络信息中心教研室,19,根据算法结论画出流程图如下:设n=10,ajaj+1,#include #define N 10 main() int aN,i,j,t; printf(“input ten number:n“); for(i=0;iaj+1) t=aj;aj=aj+1;aj+1=t; printf(“the sorted number:n“); f

9、or(i=0;iN;i+) printf(“%5d“,ai); ,程序,假,大学计算机基础,网络信息中心教研室,20,选择排序法的基本思想:(假设n=6) (1)、采用“擂台法”,首先以A0 为“擂主”,从A0,A5中找出最大的元素与A0交换。 (2)、然后以A1为“擂主”,找出A1A5中最大的元素与A1交换。 (3)、依此类推以Ai为“擂主”,找出Ai A5中最大的元素与Ai交换。当i=5停止。(此时“擂主”左边所有元素均递减有序,而“擂主”为最后一个元素,故完成排序),选择法排序,1,(以从大到小举例),大学计算机基础,网络信息中心教研室,21,97 49 38 13 76 65,13 4

10、9 38 97 76 65,以6个数为例的算法示意图:,76,13,97,97 76 38 13 49 65,49,38,65,97 76 65 13 49 38,49,13,97 76 65 49 13 38,97 76 65 49 38 13,38,13,结果:,第5轮:,第4轮:,第3轮:,第2轮:,第1轮:,大学计算机基础,网络信息中心教研室,22,#define N 10 main() int i,j,k,t,aN; printf(“input N numbers:n“); for(i=0;iak) /遇到比当前元 k=j; /素大的数,记下k if(k!=i) t=ai;ai=ak

11、;ak=t; printf(“the sorted numbers:n“); for(i=0;iN;i+) printf(“%3d”,ai); /输出数组 ,ajak,大学计算机基础,网络信息中心教研室,23,一维数组题型总结:,5、随机给一维数组赋值,输出最大或者最小几个元素的平均值。,1、一维整型数组实现倒序。,2、一维数组排序(冒泡或选择)。,3、统计一维数组中满足条件的元素个数。,4、在已排序的数组中插入一个数据,保证数组的有序性。,大学计算机基础,网络信息中心教研室,24,补充内容,随机函数rand()的使用方法 在程序中如果直接调用rand函数,第一次运行获得的是随机数,以后在运行

12、该组数不会发生变化,这是因为计算机是严格按照某种规则执行,不可能灵活变化。那么要利用计算机产生真正随机数,就必须和srand一起用。 srand用法:srand(time(0) 如果想要产生一个范围内的随机数,比如1099之间的正整数赋给变量a,就应该是a=rand()%(99-10+1)+10。,大学计算机基础,网络信息中心教研室,25,随机函数用法举例: #include #include #include main() int a34,i,j; srand(time(0); for(i=0;i3;i+) for(j=0;j4;j+) aij=rand(); for(i=0;i3;i+)

13、for(j=0;j4;j+) printf(“%3d “,aij); printf(“n“); ,大学计算机基础,网络信息中心教研室,26,小 结,本讲主要讲述一维数组的概念和定义方法,并用几个简单的实例说明了其使用方法。最后所讲的排序算法是本讲的难点和重点。 大家应在课下练习相关程序,尤其是关于一维数组中数据的排序算法。,大学计算机基础,网络信息中心教研室,27,6.2 二维数组,2,二维数组元素的引用,大学计算机基础,网络信息中心教研室,28,6.2.1 二维数组的定义与存储,1、 二维数组的定义 一般形式: 类型说明符 数组名常量表达式1常量表达式2 说明: 第一个常量表达式表示数组第一

14、维的长度(行数),第二个表示数组第二维的长度(列数), 例如:int a32; 逻辑结构如图,大学计算机基础,网络信息中心教研室,29,表示行数和列数的下标值必须写在两个方括号中 二维数组在机器内部存储时,先存放第一行的元 素,再存放第二行的元素,以此类推, 比如a32在内存的存储次序为: a00,a01,a10,a11,a20 ,a21 二维数组可被看成特殊的一维数组。,a0 a1 a2,a,6.2.1 二维数组的定义与存储,大学计算机基础,网络信息中心教研室,30,6.2.2 二维数组的引用,二维数组元素引用形式: 数组名 下标下标 如:a34表示数组a的第 行第 列所对应的元素,4,5,

15、大学计算机基础,网络信息中心教研室,31,二维数组初始化: 分行赋值 如:int a32=0,1,2,3,4,5; 按数组排列次序赋值 如:int a32=0,1,2,3,4,5; 对部分元素赋值 如:int a32=0,1,0; 省略第一维长度对全部元素赋值 如:int a2=0,1,2,3,4,5; /*由全部元素的个数可以确定第一维的长度为3,省略第一维时,第二维不能缺省*/,6.2.3 二维数组的初始化,大学计算机基础,网络信息中心教研室,32,#include main() int i,j,a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=0;j3;j+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号