c语言程序设计-第七章数组

上传人:san****019 文档编号:70612699 上传时间:2019-01-17 格式:PPT 页数:65 大小:677.51KB
返回 下载 相关 举报
c语言程序设计-第七章数组_第1页
第1页 / 共65页
c语言程序设计-第七章数组_第2页
第2页 / 共65页
c语言程序设计-第七章数组_第3页
第3页 / 共65页
c语言程序设计-第七章数组_第4页
第4页 / 共65页
c语言程序设计-第七章数组_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《c语言程序设计-第七章数组》由会员分享,可在线阅读,更多相关《c语言程序设计-第七章数组(65页珍藏版)》请在金锄头文库上搜索。

1、2019年1月17日星期四,信管教研室,1,第七章 数组,2019年1月17日星期四,信管教研室,2,什么构造类型? 所谓构造类型是指由基本类型数据按一定的规则组成的,是用户自己按规则定义的。数组是构造类型之一。 什么是数组? 在数学中我们学过数列、矩阵的概念,数列通常表示为:a1 、a2 、a3、.、an ,矩阵通常表示为:,2019年1月17日星期四,信管教研室,3,在C语言中表示数组的方法是:a0、a1、a2、a3、a4、a5; 其中a:称为数组名。 方括号中的数:称为下标。 下标是一个数时,也就是数列,称为一维数组。 下标是两个数时,也就是矩阵,称为二维数组。 还有三维数组、四维数组等

2、。,2019年1月17日星期四,信管教研室,4,例如:有五名学生的一组学号: 2004035012、2004035013、2004035014、2004035015、2004035016。 如果用数组来表示的话可以用统一的数组名,比如 num,用下标区别每个变量。 即 num0、num1、num2、num3、num4 表示一个学号数组。,2019年1月17日星期四,信管教研室,5,7.1 一维数组的定义和引用 1、一维数组的定义 定义方式: 类型说明符 数组名常量表达式;,例 long num4 ; 表示num数组包含五个元素,分别是:num0、num1、num2、num3、num4 。 注意

3、:下标从 0 开始,数组元素取值类型是长整型。,定义数组中元素的取值类型,定义数组中元素的个数,即数组长度。,数组名的命名规则和变量名相同,遵循标识符命名规则。 常量表达式中可以包括常量和符号常量,不能包括变量。,2019年1月17日星期四,信管教研室,6,一维数组在内存的存储形式: num 就是数组存储区域的首地址,即 num=200 。,一组变量,2019年1月17日星期四,信管教研室,7,2、一维数组的引用 数组必须先定义,后使用; 只能逐个引用数组元素,不能一次引用整个数组; 数组元素表示形式:数组名下标。 其中:下标可以是整型常量、变量或表达式。,例 int a10; scanf(“

4、%d”,a) ; (),必须 int a10; for(j=0;j10;j+) scanf(“%d”, ,例如:int k=5 ; a1、ak、a10-k 都是合法的。,2019年1月17日星期四,信管教研室,8,3、一维数组元素值的输入与输出 例如 : main() int i , a10; for(i=0 ; i10 ; i+) scanf(“%d” , ,一维数组元素的输出。,一维数组元素的输入。,2019年1月17日星期四,信管教研室,9,使用数组定义和数组元素时的几点注意: 1、把数组定义时方括号中的数和元素下标值区别开。 方括号中的数表示数组含有的元素个数; 元素下标值是标识具体的

5、数组元素的; 方括号中的数不能是变量,只能是常量。 2、数组元素的下标可以是常量, 也可以是变量, 其值必须是非负数, 如果是小数,系统自动取整。 3、数组必须先定义后使用。 4、系统不检查数组元素下标的越界问题。 5、一维数组元素的输入、输出使用单层循环语句。,2019年1月17日星期四,信管教研室,10,4、一维数组的初始化,在定义数组时,为数组元素赋初值。 (在编译阶段使之得到初值),当全部数组元素赋初值时,可不指定数组长度。,如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),只给部分数组元素

6、赋初值。,int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组维数值。,int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,初始化方式:,在定义数组时对数组元素赋予初值。,2019年1月17日星期四,信管教研室,11,5、程序举例,例1 读10个整数存入数组,找出其中最大值和最小值。,步骤: 1. 输入:for循环输入10个整数; 2. 处理: (a) 先令max=min=x0 (b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi 3. 输出:max和min。,#include #define SIZE

7、10 void main() int xSIZE,i,max,min; printf(“Enter 10 integers:n“); for(i=0;ixi) min=xi; printf(“Maximum value is %dn“,max); printf(“Minimum value is %dn“,min); ,2019年1月17日星期四,信管教研室,12,例2 用数组求Fibonacci数列前20个数。,#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

8、%5=0) printf(“n“); printf(“%12d“,fi); ,分析:定义一个含有20个元素的数组f, 即int f20; 其中f0=1,f1=1, fn=fn-1+fn-2 (n2) 用一个循环结构,让循环变量n从2到19,循环体为 fn=fn-1+fn-2 程序如右面所示:,2019年1月17日星期四,信管教研室,13,2019年1月17日星期四,信管教研室,14,例3 用冒泡法对8个数排序(输入时数据无次序,输出按升序)。,排序过程:首先把八个数放到数组a9 中。 a1 =38、a2=49、a3=65、a4=76、a5=13、a6=27、a7=30、a8=97 。 (1)比

9、较第一个数与第二个数,若为逆序a1a2,则交换值;然后比较第二个数与第三个数,若为逆序a2a3,则交换值;依次类推,直至第7个数和第8个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上,即在a8中。 (2)对前7个数进行第二趟冒泡排序,结果使次大的数被安置在第7个元素位置,即在a7中。 (3)重复上述过程,共经过7趟冒泡排序后,排序结束。,2019年1月17日星期四,信管教研室,15,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,

10、30,38,2019年1月17日星期四,信管教研室,16,#include void main() int a11,i,j,t; printf(“Input 10 numbers:n“); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(“The sorted numbers:n“); for(i=1;i11;i+) printf(“%d “,ai); ,若有n个数,则要进行n-1趟比较; 在第1趟比较中要进行n-1次两两比较, 在第j趟比较中要进行n-j趟两两比较。,2019年1月17日星期四,信管教研室,17,7.2 二维数组及多维数组 一维数组通

11、常是用来处理数列问题的。 例如: a1 、 a2 、 a3 、.、 an、 . 可以用一维来表示。 二维数组通常是用来处理矩阵问题的,例如下面的数表(矩阵):,2019年1月17日星期四,信管教研室,18,1、二维数组的定义 定义方式: 类型说明符 数组名常量表达式常量表达式;,数组元素的存放顺序 在内存中按行顺序存放。即先存第一行,接着存第二行,以此类推。例如:,例 int a34; float b25; int a3,4; (),行数,列数,元素个数=行数*列数,2019年1月17日星期四,信管教研室,19,2、二维数组理解,由按上述定义的二维数组的方式 (比如:int a34 ), 我们

12、可以把二维数组看成是一种特殊的一维数组,它的元素又是一维数组。例如,把a看成是一维数组,它有3个元素,分别是a0、a1、a2,每个元素又是一个包含4个元素的一维数组。如下表:,其中 a 是数组 a0、a1、a2 的数组名,而 a0是数组 a00、a01、a02、a03 的数组名 a1是数组 a10、a11、a12、a13的数组名 a2是数组 a20、a21、a22、a23的数组名,2019年1月17日星期四,信管教研室,20,3、二维数组元素的引用 形式: 数组名下标下标 4、二维数组的输入输出。使用双层循环,例如: main() int a45 , i , j ; for (i=0 ;i=3

13、;i+) for(j=0;j=4;j+) scanf(“%d”, ,输入,数据用空格或回车隔开。,输出,2019年1月17日星期四,信管教研室,21,5、二维数组元素的初始化 分行初始化:,2019年1月17日星期四,信管教研室,22,5、二维数组元素的初始化 分行初始化:,2019年1月17日星期四,信管教研室,23,5、二维数组元素的初始化 分行初始化:,2019年1月17日星期四,信管教研室,24,5、二维数组元素的初始化 按元素排列顺序初始化,2019年1月17日星期四,信管教研室,25,5、二维数组元素的初始化 按元素排列顺序初始化,2019年1月17日星期四,信管教研室,26,5、

14、二维数组元素的初始化 按元素排列顺序初始化,2019年1月17日星期四,信管教研室,27,程序举例,例 将二维数组行列元素互换,存到另一个数组中。,#include void main() int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n“); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(“%5d“,aij); bji=aij; printf(“n“); ,printf(“array b:n“); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(“%5d“,bij); printf(“n“); ,2019年1月17日星期四,信管教研室,28,例 求二维数组中最大元素值及其行列号。,#include void main() int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2; int i,j,row=0,colum=0,max; max=a00; for(i=0;imax) max=aij; row=i; colum=j; printf(“max=%d,row=%d, colum=%dn“,max,row,colum); ,2

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

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

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