资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C语言程序设计电子教案第五章11,C语言程序设计电子教案第五章11C语言程序设计电子教案第五章11第五章 数 组主要内容,数组的基本概念,数组的定义和引用,数组的基本操作,字符型数组,由于本人工作能力和接触项目有限,希望借此机会将自己的体会与大家分享,更希望大家能提出更多更为深刻的意见!谢谢,第五章 数 组,主要内容,数组的基本概念,数组的定义和引用,数组的基本操作,字符型数组,5.1 数组的基本概念,【例5.1】设有两组数据(每组100个)已存入变量a0,a1,a2,a99和b0,b1,b2,b99中。分别对应,求和。其结果存入c0,c1,c2,,c99中。,若用简单变量,则写成:,c0=a0+b0;,c1=a1+b1;,c2=a2+b2;,c99=a99+b99;,说明:,程序需要100条赋值语句和定义300个变量。这样,显得冗长、烦琐。若将每组数据作为一整体,用同一个符号名表示,同组内不同的数据依靠下标来区别,则只需一条语句,即:for(i=1;i100;i+)ci=ai+bi;,称ai、bi、ci为数组元素,i为下标。ai是数组a中的第i个元素;bi 是数组b中的第i个元素;ci是数组c中的第i个元素。a、b和c分别是数组的符号名,称为数组名。,数组的四大要素:,(1)数组的名字。,(2)数组的类型。它表明了数组的基类型。,(3)数组的结构。它指出数组的维数和数组元,素的个数。,(4)数组的存储类别。它关系到数组所占存储,位置的作用域和生存期。,通常,数组的四大要素由定义数组的说明语句,来确定。例如:int array10;char b23;,static int a23;,5.2一维数组的定义和引用,5.2.1 一维数组的定义,程序中使用数组时,应遵循先定义,后引用的,原则。,我们将具有一个下标的数组称为一维数组。定,义一维数组的一般形式为:,存储类型 类型说明符 数组标识符常量表达式;,例如:,int array10,number20;,static char ch15;,其中:,存储类型:可以是自动型(auto),也可以是静态型,(static)或者是外部型(extern);,类型说明符:用来说明数组的基类型,它可以是简单,类型、指针类型或结构、联 合等构造类,型,它说明了该数组元素所具有的类型;,数组标识符:用来说明数组的名字;,常量表达式:用来说明数组元素的个数,即数组的长,度,它可以是整常量、字符常量或sizeof,表达式。,说明:,(1)数组标识符命令规则与变量相同,遵循标识符命名,规则。,(2)相同类型的数组可以放在同一说明行中,数组之间,用逗号分隔。,(3)数组名后是用方括号括起来的常量表达式,不能用,圆括号,下面是错误的写法:float ary(20);,(4)常量表达式是数组所含元素的个数。编译系统在处,理说明语句时,为数组在内存中分配一片连续的存,储空间,数组元素将按其下标的顺序依次存放。,(5)数组名表示数组存储区别的首地址,即数组第一个,元素存放的地址。,说明(续):,(6)数组元素的下标值由0开始,名为array的数组,由,20个元素组成,依照下标值的顺序,它们是:,array0,array1,array2,array19,注意:不存在数组元素array20。,(7)C语言中不允许出现动态数组说明,即数组的长度不,能依赖运行过程中变化着的变量。,例如:下面数组arrayi的长度依赖于变量i的输入结,果,这是不允许的。,int i;scanf(%d,char arrayi;,说明(续):,(8)当常量表达式缺少时,数组的长度由以下两,个因素决定:,a.给出该数组每一元素的初值,从而确定该,数组长度。例如:,static int a5=2,4,6,8,10;,与 static int a=2,4,6,8,10;,的描述等价。这表明,当数组长度由显式表示的初值个数直接决定时,数组长度不必再以显式给出。,b.已在其它场合说明了数组长度。如该数组是函数定义的形式参数,或该数组是一个在函数外已经定义了的外部数组,则不再作长度说明。例如:,int a10;,main(),int s10;,char t10;,.,.,.,fun(a,s,t),int a ,s;,char t;,.,.,.,小结:,数组与前面介绍的各种基本数据类型变,量不同。,数组具有存储类型、类型说明符、数组,标识符和常量表达式四方面的信息,且以,它们来综合描述。,数组是一种在基本数据类型基础上构造,出的复杂数据类型。,5.2.2 一维数组的初始化,使数组元素得到值,可以有三种基本途径:,(1)用赋值语句;,(2)用输入语句;,(3)初始化。,前两种方式占运行时间,而初始化数组,可以使程序在运,行之前的编译阶段得到初值。,数组的初始化:在定义数组时为数组元素赋初值。,C语言规定:,只有静态存储(static)数组和外部存储(extern)数组才可,以进行初始化。,一维数组初始化的定义形式为:,存储类型 类型说明符 数组标识符常量表达式=常量,表达式;,说明:,“=常量表达式表”为赋初值部分;,中各常量表达式是对应的数组元素初始,,它们相互之间用逗号分隔。,例如:,static int a4=0,1,2,3;,它等价于 static int a4;,a0=0;a1=1;a2=2;a3=3;,注:由于数组长度可由初值个数确定,故可以写成,static int a=0,1,2,3;,数组初始化还具有以下几个特点:,(1)当数组指明的元素个数大于初值个数时,则,表明初值只赋给数组开始的若干元素,余下,部分为相应类型的缺省值,int为整型数0,,字符型为空格。,例如:static int a5=0,1,2,3;,表示 a0=0,a1=1,a2=2,a3=3,a4=0,(2)不允许数组指明的元素个数小于初值个数,,否则作语法出错处理。例如:,static int a6=0,1,2,3,4,5,6,7;,是错误的。,特点:(续),(3)不允许对数组元素整体赋值,只能对每个数组元素,赋初值。要使数组a中的全部元素初值为0,则可以写成:,static int a4=0,0,0,0;,而不能写成:,static int a4=0*10;,其实,按上述(1)的规定,对static数组不赋初值,,系统会自动对全部数组元素赋以0值。即:,static int a4;,相当于a0a3全部都赋以初值0。,特点:(续),(4)在对数组元素全部赋初值时,可以不指,定数组长度,其长度由所赋初值的个数,自动确定。如:,static int a=1,2,3,4;,a数组的初值有4个,故系统自动确定a,的长度为4。,5.2.3 一维数组元素的引用,数组一经定义,其元素就可以被引用了。,C语言规定:对数组的使用只有逐个引用数组元,素,而不能将数组做为整体引用。,通常,可以利用数组下标的变化,来实现数组元,素的“弹出”。换句话说,可以用不同的方法,,引起下标的变化,从而使用数组元素一一地呈现出,来,以达到对数组元素引用的目的。,一维数组元素的一般形式为:,数组名下标,其中,下标可以是整常数或整型表达式。C语言规定:下标是从0开始的。,若数组定义为:int a10;,其下标值分别为:0、1、2、8、9。其对应的数组元素分别为:a1、a2、,a8、a9。不能存在数组元素a10。,【例5.2】说明数组元素和下标的用法,#include“stdio.h”,void main(),int a10,i;,for(i=0;i10;i+),ai=i;,for(i=0;i10;i+),printf(%d,ai);,程序运行结果如下:,0 1 2 3 4 5 6 7 8 9,程序使a0a9的,值分别为09,然后按,下标的顺序依次输出各,元素中的值。,【例5.3】设X,Y是m维向量:X=x1,x2,xm,Y=y1,y2,ym,试编写一程序,用以计算:向量和A=X+Y,向量差B=X-Y,向量与标量积之和 C=rX+sY,其中r=1.2,s=2.4。,#includestdioh,#define M,10,void main(),float aM,bM,cM;,float xM,yM;,float r=1.2,s=2.4;,int i;,for(i=0;iM;i+),scanf(%f,%f,for(i=0;iM,i+),ai=xi+yi;,bi=xi-yi;,ci=r*xi+s*yi;,for(i=0;i a01=a02=,a10=a11=a12,又例如:int b234;,可理解:,b为三维数组,有234个元素;,b0,b1为二维数组,其各有34个元素;,b00,b01,b02,b10,b11,b12为一维数组,它们各有4个元素。因此,对于已定义的三维数组b,可有以下四种写法:b 书写形式 bi /*数组类型*/bij bijk /*数组元素*/其中前三种形式为数组类型,只有第种形式是数组,元素,可以作为运算对象进行处理。C语言的这种表示法,给多维数组赋值和用指针表示带来很大方便。,5.3.2 多维数组的存储顺序,C语言中,数组在内存中存储时,是按照其元素下标的顺序依次存储在内存的连续递增的空间中,即从第一个元素直至最后一个元素连续存储。多维数组的存储顺序是以最右边下标最先变化为规律(即按行存储)。,对于二维数组,其存储顺序是:先存储第一行中的元素,再存储第二行中的元素,以此类推,直至存储最后一行中的元素。,二维数组a33的元素:,a00 a01 a02,a10 a11 a12,a20 a21 a22,a00,a01,a02,a10,a11,a12,a20,a21,a22,5.3.3 多维数组的初始化,同样可以在定义时对多维数组各元素指,定初始值。,基本原则:,对多维数组的各元素赋初值时的数据排,列顺序必须与数组各元素在内存中的存储,完全一致。,多维数组的初始化方法,1.按行对全部数组元素赋初值,如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;,把第一对花括号内的数据赋给第一行各元,素,第二对花括号内的数据赋给第二行各元,素,第三对花括号内的数据赋给第三行各元素。,这种按行赋初值的方法比较直观,是较常使用,的方法。,2.按数组元素的存储顺序依次对全部数组元素 赋初值。,如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;,由于多维数组的各元素是按行存储的,故这种赋初值方,法与上述按行赋初值方法效果一样。赋初值后数组各,元素为:,1 2 3 4,5 6 7 8,9 10 11 12,与第2种方法相比,第1种方法好,一行对一行,界限清,楚。用第2种方法,如果数据多写成一大片时,容易遗,漏,也不易检查。,3.对部分数组元素赋值初值,如:static int a34=1,5,9;,赋初值后数组各元素为:,1 0 0 0,5 0 0 0,9 0 0 0,相当于只对各行第1列元素赋值,其余元素自动为0。,也可以对指定行中的制定元素赋初值,如:,static int a34=1,0,6,0,0,11;,赋初值后数组各元素为:,1 0 0 0,0 6 0 0,0 0 11 0,注意:,若对全部数组元素都赋初值,则第一维长度,可省略不写,但第二维长度不能省。如:,static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;,与下面的定义等价:,static int a34=1,2,3,4,5,6,7,8,9,10,11,12;,系统会根据数据总个数自动分配存储空间,,一共12个数据,每行4列,则确定为3行。,5.3.4 关于初始化的其它说明,(1)对简单变量在任何场合(函数内部或外部,静态或非静态)均可置初初;而数组初始化的条件是:对外部数组(函数外说明的数组)或静态数组(静态的概念见下章)可置初值;反之,对函数内的非静态数组不能置初值。,(2)外部和静态数组与简单变量一样在编译时得到初值,不占用运行时间;非静态局部变量(函数或复合语句内说明的变量)在进入函数或复合语句时得到初值,占用运行时间,多次进入多次重新赋初值。,(3)外部或静态数组以及简单变量未进行初始化时,等价于置零(数值类型)或空格符(字符 型)。局部变量未进行初始化时,是不定值。其值的确定依赖于调用函数或进入复合语句的环境。,5.3.5 多维数组的引用,多维数组与一维数组一样必须“先定,义,后引用”。,多维数组元素的一般形式为:,数组名下标下标,其中,下标可以是整常数或整型表达式。,【例5.4】将二维数组a23中的元素按其存 储顺序复制到一维数组b6中。,#include“stdio.h”,void main(),static int a23=1,2,3,4,5,6;,int b6,i,j;,for(i=0;i2;i+),for(j=0;j3;j+),bi*3+j=aij;,for(i=0;i6;i+),printf(%d,bi);,程序运行结果如下:,1 2 3 4 5 6,二维数组a23向一维数组b6按存储顺序复制元,素值时,其下标的对应关系为:,k=i*D+j,其中,D为a23中第二维的长度,其值为3,故程,序中b的下标为i*3+j。,推广到一般,多维数组按存储顺序转换成一维数组,时,其下标的对应关系由下式给出:,k=第一维下标值D2D3Dk+,第二维下标值D3D4Dk+,第三维下标值D4D5Dk,+,+第k-1维下标值Dk+第k维下标值,其中,Di(i=2,,k)是多维数组第i维的长度。,例如,有数组定义为 num4567,其转换成一维数组时,按存储顺序有:,k=i*5*6*7+j*6*7+l*7+m,i 是第一维下标值,j 是第二维下标值,l 是第三维下标值,m 是第四维下标值,事实上,这里的k就是多维数组元素在内存中存储位置的序号。,【例5.5】统计数组a44中元素值为x(x=5)的元素的个数。,#include“stdio.h”,void main(),static int a4=5,2,1,6,2,5,7,4,8,10,5,6,5,2,4,5;,int i,j,k,x;,x=5;,k=0;,for(i=0,i4;i+),for(j=0,j4;j+),if(aij=x)k=k+1;,printf(%d,k);,程序中使用了整型变量k作为计数器,每当找到一个与x值相等的元素时,计数器k就加1。当所有元素找完时,k中就是元素值为5的元素个数。使用计数器之前,应清零(赋初值为0)。,【例5.6】查找数组a222中的最小元素值。,#include“stdio.h”,void main(),static int a222=1,2,3,4,5,6,7,0;,int i,j,k,small;,small=a000;,for(i=0;i2;i+),for(j=0;j2;j+),for(k=0;k2;k+),if(aijksmall)small=aijk;,printf(%d,small);,5.4 数组的基本操作,数组在C语言程序设计中有着广泛地应用。,而且有的应用包含了较为复杂的数组操作。,但无论其操作多么复杂,它们都是由一些,基本的操作组合起来的。,5.4.1 一维数组的典型操作,一、排序(sorting),排序:是把一组数据按其值的递增(升序)或递减(降序),的次序排列起来,使一个无序组成为一个有序组。,对于数组的排序,则是把数组元素按其值递增或递减,的次序排列。排序是数据处理中常见的操作。排序有,许多方法,这里不讨论各种排序方法的优劣,只介绍排,序中如何对数组元素进行操作。选择排序是诸多排序算,法的一种。,基本做法:多次重复地找出数组中最小值(或最大值),,并依据被找到的先后次序将数组元素排列起来。下面,只讨论升序选择排序。,升序选择排序方法:,设整形数组a中有n个元素,第一次选择是从n个元,素中选择(找出)值最小的元素,将其与数组中的第一,个元素交换,于是,第一个元素就成为值最小的元素。,第二次选择是从数组中第二个元素起的(n-1)个元素,中选择值最小的元素,将该元素与数组的第二个元素,进行交换,于是,第二个元素也排好序。如此进行第,三次、第四次,第五次.。每选择一次,就排好一,个元素的次序,所余下来排序的元素就减少一个。选,择(N-1)次后,只余下一个元素(数组中最大的元素),,排序就完成了。,例如:,有一数组a7其元素值及其初始次序为:,4、5、9、12、17、3、1,根据上述选择排序方法,每次选择后各元素的次序可表,述如下:,数组初始状态:4,5,9,12,17,3,1,第一次选择后:1,5,9,12,17,3,4,第二次选择后:1,3,9,12,17,5,4,第三次选择后:1,3,4,12,17,5,9,第四次选择后:1,3,4,5,17,12,9,第五次选择后:1,3,4,5,9,12,17,第六次选择后:1,3,4,5,9,12,17,至此该数组排序完毕。,小结:,归纳起来,选择排序的基本方法,是先选出最小值元素和第一个元素交,换位置,然后,再对剩下的n-1个元素,重复这样的选择和交换,这样不断重,复至所有的元素都被排序为止。,程序:,#include“stdio.h”,void main(),int a10,i,j,;,int temp,min;,printf(Enter 10 numbers:n);,for(i=0;i10;i+),scanf(%d,for(i=0;i9;i+),k=i+1;,min=i;,for(j=k;j10,j+),if(ajamin)min=j;,temp=ai;,ai=amin;,amin=temp;,for(i=0;i10;i+),printf(%d,ai);,输入:,-10 9 1 0-24 220 88 12 95 4,程序运行结果:,程序运行结果如下:,Enter 10 numbers:,-10 9 1 0-24 220 88 12 95 4,The sorted numbers:,-24,-10,0,1,4,9,12,88,95,220,二、查找(search),查找也是数据处理中常见的操作。对于数组的查找,,则是按给定值在数组中寻找与给定值相同的数组元素。,查找:指在一数组数据中寻找某一特定数据的过程。,查找的方法很多,选择使用何种方法除了人为因素,外,有时还取决于具体数组的特征。,未排序的数组:,采用顺序查找法而不能用折半查找法;,已排序的数组,既可采用顺序查找法,也可以用折半查找法。,1.顺序查找法,顺序查找法是最简单的查找方法。若有一数组为an,给定数组元素的查找值为x,查找时,先从数组的第一个元素a0查起,接着查第二个元素a1,第三个元素a2.,直到查找出所需找的数组元素或判定出不存在的需找的元素为止。无论是未排序或已排序的数组,都可以用顺序查找法。,例:设有一数组a10,x为需查找的数组元素 值,其顺序查找的程序如下:,#include“stdio.h”,void main(),static int a10=3,6,9,10,12,15,1,4,2,5;,int x,i,t=0;,scanf(%d,for(i=0;i10;i+),if(ai=x)printf(a%d=%d,i,ai);t=1;,if(t=0)printf(No found);,运行结果:输入 12 输入 99,输出 a4=12 输出 No found,2.折半查找法,顺序查找的算法简单,程序易于实现,但它的查找效率,不高。如果要查找的数组元素很多,则宜采用折半查找法。,折半查找法仅适合于已排序的数组。,折半查找的基本思想:,找出数组的中项,如果它就是要查的那个元素,则,查找结束。,否则,应判断所查元素位于数组中那个部分,然后,保留其所在的一半,舍弃无用的一半。,接着找出保留那一半的中项,重复上述的判断操作。,如此一次次地继续下去,直到某次查找的中项恰好等于,查找值或余下一个数组元素为止。,算法描述:,设有一升序数组ak,要查找与x相等的元素值。查,找步骤如下:,(1)n=0;m=k;,(2)计算中项 i=(n+m)/2;,(3)若ai=x 或 m=n,则查找结束;否则,继续下,去;,(4)若aix(x值在中项元素值的左边),则将m=i-,1,转去执行(2)。,程序举例:,#include stdio.h,void main(),static int a10=5,7,8,14,25,36,44,50,69,80;,int i,n,m,x;,n=0;m=9;,scanf(%d,while(n=m),i=(n+m)/2;,if(ai=x)break;,if(aix)m=i-1;,if(ai!=x),printf(No found);,else,printf(%d,%d,i,ai);,5.4.2 多维数组的操作,多维数组与一组数组的操作无本质区别,通常也是利用循环变量的变化引起相应数组元素下标的变化,从而使得数组中全部元素都有机会作为操作对象逐一地呈现在所要操作的有关语句中。所不同的是,多维数组在操作时需要考虑的维数多些而己。另外操作时需要考虑行列关系。,一、计算两个矩阵的乘积,分析:两个矩阵的乘积为一新的矩阵。用三个,二维数组存放矩阵数据,首先确定三个,矩阵各维的长度:,int amp,bpn,cmn,计算矩阵乘法:,c=ab 设 m=4 p=3 n=2,1 2 3 6 5 20 14,4 5 6 b 4 3 c 56 41,a 7 8 9 2 1 92 68,0 1 2 8 5,由下述算法实现:,程序:,for(i=0;iM;i+),for(j=0;jN:j+),s=0;,for(k=0;kP;k+),s+=aik*bkj;,cij=s;,printf%5d,s;,printfn;,#define M 4,#define N 2,#define P 3,#include“stdio.h”,void main(),int i,j,k,s;,int aMP,bPN,cMN;,printf(Input array a43:n);,for(i=0;iM;i+),for(k=0;kP:k+),scanf(%d,printf(Input array b32:n);,for(k=0;kP;k+),for(j=0;j 2 6 8 =2 5 8,7 3 1 1 3 7 4 6 9,若先排列元素的序,再排行元素的序,其结果,为:,4 5 9 2 3 1 1 2 3,2 8 6 =4 5 6 =4 5 6,7 3 1 7 8 9 7 8 9,三、二维数组的查找,未经排序的二维数组可以用顺序查找法,已排序的二维数组可以用顺序查找法和折半查找法。在查找时,可以一行行地查找;也可以一列列地查找。在查找一行或一列时,其操作与一维数组的查找方法相同。,例:要求找出a33中元素值为5的元素,#include“stdio.h”,void main(),static int a33=9,8,7,6,5,4,3,2,1;,int i,j;,for(i=0;i3;i+),for(j=0;jstr0 h-str1 o-str2,-str3 a-str4 r-str5,e-str6 =str7 y-str8,o-str9 u-str10?-str11,5.5.2 字符数组的初始化,外部或静态字符数组可以初始化,其初始化的方法与,以前介绍的数组初始化的方法类似。,总的来说,字符数组初始化有以下两种方法:,(1)逐个地为数组中各元素指定初值字符。,例如:static char str4=a,b,c,d;,在编译时,确定数组的大小为4,赋值情况如下:,str0=a str1=b,str2=c str3=d,说明:如果花括号中提供的初始个数(即字符个数)大于,数组长度,则作语法错误处理。如果花括号中提供的初值,个数小于数组长度,则只将这些字符赋给数组中前面那些,元素,紧接着赋0(空操作符null),其余的元素自动,定为空格字符。如:,static char str8=a,b,c,d,e;,即:str0=astr1=bstr2=cstr3=d,str4=estr5=0str6=str7=,注:如果提供的初值个数与预定的数组长度相同,则在,定义时,可以省略数组长度,系统会自动地根据初值个数,确定数组长度。,如:static char c=H,e,l,l,o,数组c的长度自动定为5。,(2)对一个字符数组赋字符串初值。,可以对字符数组赋字符串初值,例如:,static char str=c language;,在编译时,确定数组的长度为11,且最后一个元素,中为0。在字符串末尾加上一个0字符,表示,字符串的结束。,为了测定有效字符串的实际长度,C语言规定0,为“字符串结束标志”。,例:若有一个字符串,其第10个字符为0,则,此字符串的有效字符为9个。也就是说,在遇到0,字符时,表示字符串结束,由它前面的字符组成字符串。,注:程序中往往依靠检测0来判定字符串是否结束而不是根据,数组长度来决定字符串长度。因此,在定义字符数组时,应,使数组长度大于它允许存储的最长字符串的长度,以便系统,自动地在字符串后附加一个字符串结束标志字符0。,说明:字符数组并不要求它的最后一个字符为0,甚至可以,不包含0。例如,下面的写法是合法的:,static char string5=C,h,i,n,a;,在字符型多维数组初始化时可直接赋予多个字符串。,例如:static char a35=“Sun”,“Earth”,“Moon”;的结果:,a00=S a01=u a02=n a03=0 a02=,a10=E a11=a a12=r a13=t a14=h,a20=M a21=o a22=o a23=n a24=0,5.5.3 字符数组的输入输出,字符数组的输入输出实际上是字符串的输入输出。其方法有两种,即:逐个输入或输出字符和整个输入或输出字符串。,一、逐个字符输入输出,逐个字符输入或输出通常是利用循环结构进行的。,【例5.7】从键盘上输入字符串“I am a student”,并将其显示在显示屏幕上。,#include“stdio.h”,void main(),char a20;,int i;,for(i=0;i字符串2,则函数值为一正整数;,(3)若字符串1字符串2,则函数值为一负整数。,六、测字符串长度函数strlen,格式:strlen(字符数组或字符串);,功能:其作用是测试字符串的长度。,说明:,函数值为不包括0在内的字符串的实,际长度值。,其中,字符数组还可以用字符串常量替换。,例如:static char s112=Computer;,printf(%d,strlen(s1);,printf(%d,strlen(Computer);,其结果都为8。,小 结,数组是C语言中最重要而且是最基本的数据类型。,数组的基本概念、定义及引用是学习程序设计的,人必须熟练掌握的。,数组是一组数目确定、类型相同的元素的有序,集合。数组元素在内存中按行连续存放。,数组元素的引用常与循环结构结合起来,利用,循环结构可以输入和输出数组,以及控制对每个,数组元素的处理。,小 结(续),C语言的数组下标从0开始。只有静态或外部的数组才可以进行,初始化。数组名表示数组存储区的首地址。排序和查找是数组典,型的操作,在实际中其应用较为广泛。C语言中不使用字符串变,量的概念,而对字符串是使用字符数组来进行存储和处理。字符,数组中一个元素对应字符串的一个字符。C语言的字符串末尾都,带有隐含的null(即0)字符,通常由系统自动地添加在字符,串的后面。因此,对于字符数为n的字符串其占用内存为n+1个字,节空间。在对字符串操作时,常以0字符来检测字符串是否,结束,而不是以数组的长度来判断。使用字符串处理函数可提高,编程效率,减少出错机会,增加程序的可读性。,谢谢,
展开阅读全文