资源描述:
《c语言课件(非计算机专业)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数组第七章数组的定义与使用数组的基本应用字符串基本操作数组与函数的关系本章要点如何处理一个班学生的学习成绩?一行文字怎样存储?一个矩阵怎样存储?......§7.1数组的概念一组具有相同数据类型的数据的有序集合这些数据的特点:具有相同的数据类型。为了很方便地使用这些数据,C语言提供了一种构造数据类型:数组。数组是数据的有序集合。数组中的每一个元素都属于同一数据类型。使用同一数组名和不同下标来唯一的确定数组中的元素。只需要一个下标就能确定数组元素的数组称为一维数组。§7.2一维数组一维数组的一般说明形式是:类型说明符数组名[常量表达
2、式]说明:数据类型是数组全体数组元素的数据类型。数组名后是用方括号括起来的常量表达式,不能用圆括号。C语言规定数组名表示数组在内存中的首地址。常量表达式中可以包括常量和符号常量,不能包含变量。C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的取值。所有数组都以0作为第一个元素的下标!例如inta[10];数组的10个元素为:a[0],a[1],…,a[9]数组元素个数的表达式必须是整型常量表达式!intk=4,b[k];intc(4);#defineN5inta[N];intb[2+3];intc[10]
3、;错正确错数组元素在内存中的存储方式a[0]a[1]a[2]a[3]a[4]a→例如有定义:chara[5];数组元素在内存中按顺序连续存放C语言要求数组必须先定义然后才能使用,并且规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用形式为:数组名[下标]一维数组元素的引用数组中每个元素在功能上等价于一个一般变量例如:输出100个学生成绩,并求出总成绩。不用数组:floatx,sum;for(i=0;i<100;i++){scanf(”%f”,&x);sum+=x;}使用数组:floatmark[100],sum;f
4、or(i=0;i<100;i++)scanf(”%f”,&mark[i]);for(sum=0,i=0;i<100;i++)sum=sum+mark[i];对于非字符数组,只能访问数组的单个元素,不能进行整体操作。输入/输出数组:intx[10];正确:for(k=0;k<10;k++)scanf(”%d”,&x[k]);for(k=0;k<=9;++k)printf(”%d”,x[k]);错误:scanf(”%d%d%d%d%d%d%d%d%d%d”,x);scanf(”%d”,x);printf(”%d”,x);pri
5、ntf(”%d%d%d%d%d%d%d%d%d%d”,x);C语言中可以采用如下方法对数组元素进行初始化:在定义数组时对数组元素赋初值。如:inta[10]={0,1,2,3,4,5,6,7,8,9};这种方法是将数组元素的初始值依次放在一对花括号内。也可以只对一部分数组元素赋值。如:inta[10]={0,1,2,3,4};一维数组的初始化在对全部数组元素赋初值时,可以不指定数组的长度。如:inta[]={0,1,2,3,4,5,6,7,8,9};但是如果被定义的数组长度与提供的初值的个数不同时,则数组的长度不能省略。[]称为下
6、标运算符。数组名、数组元素是两种不同性质的数据:数组名是数组的首地址,是一个地址常量数组元素则是数值引用数组元素时,根据首地址和下标,自动计算出该元素的实际地址,取出该地址的内容进行操作。下标与地址的关系mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.02000H2004H2008H200CH。。。218CH例如:floatmark[100];如引用mark[2](1)计算2000+2*4=2008(2)从取出2008的内容元素存储地址=数组首地址+偏移量数
7、组元素存储地址的计算公式:#defineNUM20main(){inta[NUM]={1,1};intj;for(j=2;j8、求排好,所以不参加以后的比较和交换操作。例如对4个数0,2,3,9按从大到小的顺序排序0,2,3,90<->22,0,3,90<->32,3,0,90<->92,3,9,02<->33,2,9,02<->93,9,2,03<->9第一轮(n-1=3