资源描述:
《c语言程序设计第06章利用数组处理批量数据》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章利用数组处理批量数据6.1为什么要用数组6.2定义和引用一维数组6.3二维数组的定义和引用6.4字符数组6.5提高部分6.1为什么要用数组1为什么要用数组?利用数组可以有效的处理大批量的具有同一属性的数据,大大提高了工作效率,十分方便。什么是数组?数组是一批有关联的数据的有序集合,用一个统一的数组名表示,这样就把这批数据组织成一个整体;其中每个数据称为一个元素,每个元素都属于同一个数据类型,用下标来确定数组中某个具体的元素。6.2定义和引用一维数组一维数组是具有相同类型的一组数据的序列,用一个下
2、标就可以确定数组中的某个元素。6.2.1定义一维数组需要给出数据的类型、数组名、元素的个数(数组长度)。定义一维数组的一般式:类型符数组名[常量表达式];如:inta[5];表示定义了一个整型数组,数组名为a,包含5个元素:a[0]、a[1]、a[2]、a[3]、a[4](不包括a[5])注意:(1)数组名也是变量名,和变量名取名规则一样。(2)数组元素的下标是从0开始。(3)数组的长度在定义时必须是常量(符号常量)。6.2.2引用一维数组的元素对已经定义的一维数组,只能逐个引用数组元素,不能一次引用
3、整个数组中的全部元素。如:a[3]=10;t=a[3]+6;引用数组元素的一般式为:数组名[下标表达式]注意:1下标表达式应为整型常量或整型表达式。2定义数组时的数组名[常量表达式]和引用数组元素的数组名[下标表达式]虽然在形式上相似,但含义和用法上是不同的。如:inta[10];/*定义数组长度为10*/a[8]=4;t=a[8]+6;/*引用数组元素a[8]*/思考:a[10]=4;可以吗?例6.1给长度为10的整型数组赋值1~10,按逆序输出。编程序:#includevoidm
4、ain(){inta[10],i,;for(i=0;i<10;i++)a[i]=i+1;/*数组元素赋值1~10*/for(i=9;i>=0;i--)/*逆序*/printf(“%d”,a[i]);/*输出10个元素值*/printf(“”);}思考:从键盘给数组元素赋值,然后输出?6.2.3一维数组的初始化在定义一维数组的同时赋予初值,称为数组的初始化。如:inta[5]={1,2,3,4,5};注意:1在定义数组时可以对全部元素赋初值(如上)。2可以对部分元素赋初值:如:inta[10]={1
5、,2,3,4,5};前5个元素a[0]~a[4]初始化1~5,后5个值自动为0。3当对全部元素赋初值时,数组长度可以省略:如:inta[]={1,2,3,4,5};系统会据此自动地定义数组长度为5。思考:有几种方法可以给数组的各个元素赋值?6.2.3一维数组程序举例例6.2用数组求Fibonacci数列的前20项并输出。编程序:#includevoidmain(){inti,f[20]={1,1};/*初始化f[0]、f[1]*/for(i=2;i<20;i++)f[i]=f[i-1
6、]+f[i-2];/*求f[2]~f[19]*/for(i=0;i<20;i++)printf(“%6d”,f[i]);/*输出20个元素值*/printf(“”);}例6.3从键盘输入10个整数,按从大到小输出。#includevoidmain(){inti,j,t,a[20];for(i=0;i<10;i++)scanf(“%d”,&a[i]);/*键盘输入10个整数*/for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]7、[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<10;i++)printf(“%4d”,a[i]);/*输出10个元素值*/printf(“”);}6.3二维数组的定义和引用6.3.1定义二维数组一般形式为:类型名数组名[常量表达式][常量表达式]如:inta[3][4],b[5][10];定义a为3行4列的二维数组;b为5行10列的二维数组。注意:二维数组中元素排列的顺序是按行进行的,即在内存中是按行连续存放的。6.3.2引用二维数组的元素引用形式为:数组名[下标表达式]
8、[下标表达式]如:inta[3][4],b;a[2][3]=12;b=a[2][3];注意:二维数组a的行下标范围为0~2,列下标为0~3。思考:a[3][4]=15;正确吗?6.3.3二维数组的初始化(1)分行给二维数组初始化。如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)按元素排列顺序给二维数组初始化。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可以