第7章_数组2.ppt
上传人:sy****28 上传时间:2024-09-14 格式:PPT 页数:72 大小:1.2MB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

第7章_数组2.ppt

第7章_数组2.ppt

预览

免费试读已结束,剩余 62 页请下载文档后查看

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第七章问题:给一组数排序,这组数该如何存放呢本章要点7.1一维数组的定义和引用1.一维数组的定义格式为:类型说明符数组名[常量表达式];例如:inta[10];它表示定义了一个整形数组,数组名为a,此数组有10个元素。2.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。3.常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如:intn;scanf(“%d″,&n);/*在程序中临时输入数组的大小*/inta[n];2.一维数组在内存中的存放注意:定义数组时用到的“数组名[常量表达式]”和引用数组元素时用到的“数组名[下标]”是有区别的。例如∶inta[10];t=a[6];2.一维数组元素引用的程序实例对数组元素初始化的实现方法:3.如果想使一个数组中全部元素值为0,可以写成:inta[10]={0,0,0,0,0,0,0,0,0,0};或inta[10]={0};不能写成:inta[10]={0*10};4.在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:inta[5]={1,2,3,4,5};也可以写成inta[]={1,2,3,4,5};inta[10]={1,2,3,4,5};只初始化前5个元素,后5个元素为0。例7-1:用数组来处理,求解Fibonacci数列。for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf(″\n″);printf(″%12d″,f[i])}/*For循环结束*/}/*程序结束*/程序举例2:用起泡法对10个数排序(由小到大)。第二趟比较程序流程图如下:程序实例7.3:#include<stdio.h>voidmain(){inta[10];inti,j,t;printf(″input10numbers:\n″);for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(″thesortednumbers:\n″);for(i=0;i<10;i++)printf(″%d″,a[i]);printf(″\n″);}/*程序结束*/7.2二维数组的定义和引用注意:我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如:可以把a看作是一个一维数组,它有3个元素:a[0]、a[1]、a[2],每个元素又是一个包含4个元素的一维数组。7.2.1二维数组的定义地址值数组元素问题:有了二维数组的基础,那么多维数组如何定义呢?a[0][0][0]→a[0][0][1]→a[0][0][2]→a[0][0][3]→a[0][1][0]→a[0][1][1]→a[0][1][2]→a[0][1][3]→a[0][2][0]→a[0][2][1]→a[0][2][2]→a[0][2][3]→a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3]→a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3]→a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]→二维数组元素的表示形式为:数组名[下标][下标]例如:a[2][3]下标可以是整型表达式,如a[2-1][2*2-1]常出现的错误有:inta[3][4];/*定义a为3×4的数组*/┆a[3][4]=3;可以用下面4种方法对二维数组初始化:3.可以对部分元素赋初值。例如:inta[3][4]={{1},{5},{9}};4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。例如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};它等价于:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};7.2.4二维数组程序举例printf(″%5d″,a[i][j]);b[j][i]=a[i][j];}printf(″\n″);}printf(″arrayb:\n″);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d″,b[i][