资源描述:
《c语言程序设计 徐贞如 第7章数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章数组本书前面已经讨论了C语言中基本数据类型,但是这些数据类型还远远满足不了解决实际问题的需要。为了解决较复杂的问题,C语言提供了构造类型的数据,它们是:数组类型、结构类型、共用类型。构造类型数据是由基本类型数据按一定规则组成的。本章介绍数组。数组是数目固定、类型相同的若干个变量的有序集合,这些变量在内存中占用连续的存储单元,在程序中具有相同的名字,但具有不同的下标,因此称这些变量为“下标变量”或数组元素。数组是一种很有用的数据结构,许多问题,不用数组几乎难以解决。例如:对一个班的学生成绩进行处理,计算个人平均分、学科平均分、名次排序等就算法而言是十分简单的,但不用数
2、组将全班的学生成绩保存起来,解决起来将是十分烦琐的。如:一个班50名学生,若不用数组就需要有50不同个变量,这种程序无法让人接受。如果用数组元素a[0]、a[1]、a[2]……a[49]只需用for循环就能很容易的完成。当程序中需要使用数组时,必须先定义,后使用数组。数组中的每个成员成为数组元素,数组元素如同其他基本变量一样可以被赋值和在表达式中使用。7.1一维数组的定义和引用7.1.1定义方式:数据类型数组名1[常量表达式][,数组名2[常量表达式2]……];1.“数据类型”是指数组元素的数据类型。2.数组名,与变量名一样,必须遵循标识符命名规则。3.“常量表达式”必须
3、用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。例如:inta[10];10表示a数组有10个元素,它们为:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]不能对数组的大小作动态定义。例如:下面的定义是错误的。intn;scanf(“%d”,&n);inta[n];4.数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。5.数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。例
4、:inta[10],b[5];表示定义了两个数组,一个a数组10元素,每个元素都是整型的。一个b数组5元素,每个元素都是整型的。数组定义后内存就留好相应个数的存储空间。7.1.2一维数组元素的引用数组元素的表示形式:数组名[下标表达式]1.“下标表达式”可以是任何非负整型数据,取值范围是0~(元素个数-1)。特别强调:在运行C语言程序过程中,系统并不自动检验数组元素的下标是否越界。因此在编写程序时,保证数组下标不越界是十分重要的。2.1个数组元素,实质上就是1个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。3.在C语言中,数组作为1个整体,不能
5、参加数据运算,只能对单个的元素进行处理。[例题7.1]建立一个a数组10个元素,a[0]到a[9]的值为0~9,然后按逆序输出。/*例题源代码文件名:LT7_1.C*/main(){inti,a[10];for(i=0;i<10;i++)a[i]=i;for(i=9;i>=0;i--)printf(“%d□”,a[i]);}运行结果:98765432107.1.3一维数组元素的初始化初始化格式:数据类型数组名[常量表达式]={初值表}如:inta[6]={0,1,2,3,4,5};1.定义数组时,对元素初始化例如:inta[5]={1,2,3,4,5};经过上面定义和初始
6、后:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=52.“初值表”中的初值个数,可以少于元素个数,即允许只给部分元素赋初值,后几个元素值为0。例如:inta[6]={1,2,3};a[0]=1,a[1]=2,a[2]=3,a[3]=0,a[4]=0,a[5]=03.如果想使一个数组中全部元素值为0,可以写成:inta[5]={0,0,0,0,0};不能写成:inta[5]={0*5};4.如果对数组的全部元素赋以初值,定义时可以不指定数组长度(系统根据初值个数自动确定)。例如:inta[]={1,2,3,4,5};等价于inta[5]={1,2,3,4
7、,5};如果被定义数组的长度,与初值个数不同,则数组长度不能省略。例如:inta[10]={1,2,3,4,5};只初始化前5个元素,后5个元素为0。5.根据存储类型的不同,数组有静态数组(static)和动态数组(auto)之分;根据定义的位置不同,数组有内部数组(在函数内部定义的数组)和外部数组(在函数外部定义的数组)之分。(这将在后面章节会介绍)(1)对于静态数组和外部数组,如果定义而未初始化,则系统自动赋以0值(整型和实型)或’ ’(字符型)。例如:staticinta[6];编译后:a[0]~[5]的值均为0(2)