C语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C第2版(第7章_数组)

上传人:E**** 文档编号:89346780 上传时间:2019-05-23 格式:PPT 页数:50 大小:1.72MB
返回 下载 相关 举报
C语言程序设计教程 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C第2版(第7章_数组)_第1页
第1页 / 共50页
C语言程序设计教程 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C第2版(第7章_数组)_第2页
第2页 / 共50页
C语言程序设计教程 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C第2版(第7章_数组)_第3页
第3页 / 共50页
C语言程序设计教程 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C第2版(第7章_数组)_第4页
第4页 / 共50页
C语言程序设计教程 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C第2版(第7章_数组)_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《C语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C第2版(第7章_数组)》由会员分享,可在线阅读,更多相关《C语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C第2版(第7章_数组)(50页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计教程 (第2版),第7章 数组,第7章 数组,本章主要内容 1.一维数组的概念 2.二维(多维)数组的概念 3.字符数组的概念 4.数组作为函数参数的作用 5.不同类型数组的区别,第7章 数组,程序设计遇到的问题: 处理大量具有相同数据类型数据时遇到不方便。 如:计算Fibonacci数列前40个元素的值;统计50个商品的平均价格等等。 问题具有的特性:数据类型相同。 现有的解决方案:采用简单变量的方式。 现有方案的缺陷: 需要大量不同的标识符作为变量名; 变量在内存中的存放是随机的; 随着这种变量的增多,组织和管理好这些变量会使程序变得复杂。 改进的解决方案:使用数组。,第7章

2、 数组,数组具有的特点 1数组是一种变量的集合,在这个集合中,所有变量的数据类型都是相同的; 2每一个数组元素的作用相当于简单变量; 3同一数组中的数组元素在内存中占据的内存空间是连续的; 4数组的大小(数组元素的个数)必须在定义时确定,在程序中不可改变; 5数组名代表的是数组在内存中的首地址。,7.1 一维数组的定义和初始化,7.1.1 一维数组的定义 一维数组的定义格式: 存储类型 数组大小; 如:int a6; 说明: 数组名为a; 数组有6个元素:a0、a1、 a2、 a3、 a4、 a5。 每个元素都代表着一个整型变量。 数组在内存中是按顺序连续存放的,占用的内存大小为每一个元素占用

3、内存的大小的和。,7.1 一维数组的定义和初始化,使用数组时要注意的几个方面: C语言对数组的下标值是否越界不做检测。 如有数组int score6,数组score的下标值为05。 若在程序中使用了score6或其他下标值,程序仍会运行,但有可能出现意外情况。 数组不能整体输入或整体输出。 只能对其数组元素进行输入和输出。,7.1 一维数组的定义和初始化,例1:阅读程序,通过程序的运行结果,了解一维简单数组的输入和输出。 程序:example7_1.c 结论: 为确保程序的正确性,要求使用的数组元素与定义的大小要相符合。如第1组的输入输出情况; 对于超出数组大小范围的非数组元素,程序并未检查其

4、合理性,其结果是无法预料的。如第2组的输入输出情况; 如果对超出数组大小的非数组元数输入合理的值,表面上看输出的结果也是正确的,但实际上系统已经出现了问题,程序会非正常结束。如第3组的输入输出情况。 特别提示: 使用数组的时候,要注意数组元素的合法性。,7.1 一维数组的定义和初始化,7.1.2 一维数组的初始化 初始化数组格式: static =; 或: =; 例如: int a5 =2, 4, 6, 8,10; 或:int a =2, 4, 6, 8,10; 数组元素:a0=2,a1=4,a2=6,a3=8,a4=10。 static int b5 =2, 4, 6, 8,10; 或:st

5、atic int b =2, 4, 6, 8,10; 数组元素:b0=2 b1=4 b2=6 b3=8 b4=10,7.1 一维数组的定义和初始化,初始化数组元素时,如果元素初值个数 数组的长度,有可能出现下面两种情况: 自动存储类型: 未给定的数组元素的值不能确定。 例如:int c5 =1, 3, 5; 则:c0=1,c1=3,c2=5。 c3和c4的值不能确定。 静态存储类型: 数值型数组和字符型数组有所不同: 例如:static int d5 =11, 33, 55; 则:d0=11,d1=33,d2=55,d3=0,d4=0。 而:static w5=A,B,C; 则:w0=A,w1

6、=B,w2=C,w3=w4=NULL。,7.2 一维数组的使用,数组元素的引用: 数组名下标 数组元素的作用等同于简单变量。 如有: int a5=1,2,3,4,5,b5=2,4,6,8,10,c3=1,2,3; char w4=a, b, c, d,; 则下面的语句是合法的: a3=28; b4=a2+a3; w3= d; c2=c4%2; printf(“%d“, a0);,7.2 一维数组的使用,数组元素引用的说明 下标可以是整数或整型表达式,若i,j均为整型变量,则下面的数组使用是合法的。 vari+j=2; str1+2= e; 下标的值不应超过数组的大小,如数组a的大小为5,则下

7、标的取值在04的范围内。 再次提醒: C编译不检查下标是否“出界”。 对于数组:int var5,如果使用var5,系统不报错,会把var4下面一个单元中的内容作为var5引用,如图所示。,7.2 一维数组的使用,例2:阅读下面的程序,了解一维数组各元素的基本应用情况。 程序:exampple7_2.c 例3:编写程序,计算出fibonaci数列前20项的值,将计算结果保存到数组FBNC中。并将其输出到屏幕上,每行5项,一共4行。 分析:本例求解的问题与例6-8类似,用整型数组FBNC20保存数列;fibonaci数列的组成规律为: FBNC0=0 FBNC1=1 FBNCi= FBNCi-1

8、+ FBNCi-2 (i=2,3,n) 从第三项开始的,每个数据项的值为前两个数据项的和。 程序:example7_3.c,7.3 多 维 数 组,7.3.2 二维数组的定义 二维数组的定义格式为: 数组名行元素个数列元素个数 ; 例如:char word32; int num24; float term43; 数组元素的下标从0开始,数组word中的元素为: word00 word01 word10 word11 word20 word21 二维数组的存放顺序:按行优先,先行后列。 数组word在内存中的存放顺序如图所示:,7.3 多 维 数 组,根据数组的下标值可以算出各元素在内存中的排列

9、顺序。 设有一个mn的二维数组amn,aij在数组中的位置为: in+j+1; ( i=0,1,2,m1,j=0,1,n1) 例如:数组a43: 则:元素a21在数组中的排列位置为:23+1+1=8。 即a21在存储序列中排在第8位; 如果视其为一维数组,则下标值为7。,7.3 多 维 数 组,数组a的元素在内存的存储顺序:,7.3 多 维 数 组,7.3.3 多维数组的定义 多维数组的定义格式为: 数组名下标1下标2下标n; 注: 下标值表示元素的个数。 多维数组的存储顺序按下标从左到右的变化顺序。 可以像对待一维数组那样来处理多维数组。 例如: float V2232; 共有24个元素 i

10、nt Tel323; 共有18个元素,7.3 多 维 数 组,Tel数组Tel323的元素为: Tel000 Tel001 Tel002 Tel010 Tel011 Tel012 Tel100 Tel101 Tel102 Tel110 Tel111 Tel112 Tel200 Tel201 Tel202 Tel210 Tel211 Tel212 Tel数组在内存中的存放顺序:,7.3 多 维 数 组,example7_4.c 程序的功能: 向一个具有3行4列的二维数组a 34输入数值并输出全部数组的元素。,例4:阅读程序,了解多维数组元素的输入/输出方法。 #include main() in

11、t i,j; int a34; printf(“Please input value of a (a00a23):n“); for (i=0;i3;i+) for (j=0;j4;j+) scanf(“%d“, ,7.3 多 维 数 组,7.3.4 二维数组及多维数组的初始化 赋初值时可采用对元素全部赋值和部分赋值两种方式。 1对全部元素赋初值 两种赋初值格式: 分行赋值方式; 按顺序赋值方式。 以二维数组array32为例,赋初值格式为: array32 a1, a2, a3, a4, a5, a6; 分行赋值 array 32 a1, a2, a3, a4, a5, a6; 按顺序赋值 a

12、rray 2 a1, a2, a3, a4, a5, a6; 按顺序赋值,7.3 多 维 数 组,例如: int array 32=1,2, 3, 4, 5, 6; 分行赋值 int array 32= 1,2, 3, 4, 5, 6; 按顺序赋值 int array 2= 1,2, 3, 4, 5, 6; 按顺序赋值 上面3种对数组array元素赋初值的结果相同。 数组元素在内存中的排列顺序如图所示:,7.3 多 维 数 组,2对部分元素赋初值 赋初值格式: array32=a1, a2,a3; 分行赋值 array32= a1, a2, a3; 按顺序赋值 例如:static int ar

13、ray 32=1, 2,3; 分行赋值 static int array 32= 1, 2, 3; 按顺序赋值 上面两种对数组array部分元素赋初值的结果是相同的。 数组array的前面3个元素赋了初值; 后面3个元素未赋初值; 系统自动赋予0值(static型)。 数组array中各元素的值为:,array 00=1; array 01=2; array 10=3; array 11=0; array 20=5; array 21=6;,7.4 字 符 数 组,字符串”是指若干有效字符的序列,用双引号(“)括起来。 C语言中的字符串可以包括字母、数字、专用字符、转义字符等。 例如: “He

14、llo”、“C_Language”、“ax+b=c”、“78.6”、“%fn“ 都是合法的字符串 特别提示:C语言中并没有字符串变量。 C语言程序中处理字符串,要借用字符数组来完成。 将字符串的每一个字符保存在一个字符型数组中。 作为字符数组,存放字符和存放字符串在输入/输出等方面会有一些不同。,7.4 字 符 数 组,例如:char word12; word是一个字符数组,可存放最多12个字符的字符串。 要用word这个数组来存放“C_Language”10个字符。 可以采用赋值语句,将字符一个一个地赋予字符数组元素,如: word0= C; word1= _; word2= L; word3= a; word4= n; word5= g; word6= u; word7=

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

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

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