经典C语言谭浩强版第七章数组.ppt
《经典C语言谭浩强版第七章数组.ppt》由会员分享,可在线阅读,更多相关《经典C语言谭浩强版第七章数组.ppt(35页珍藏版)》请在三一办公上搜索。
1、第七章 数组,引言7.1 一维数组的定义和引用7.2 二维数组的定义和引用7.3 字符数组,引言,一、数组的引入为了便于处理一批类型相同的数据,引入了数组类型,假设现在要求保存每个学生的成绩,那就不能只使用一个变量s了,而需要40个变量,但这样一来输入、输出、计算都会变得繁琐.在这种情况下,我们可以使用数组类型,说明一个含有40个元素的数组,每个数组元素存放一个成绩,成绩的输入、输出、计算都可通过循环来实现,二、数组的概念1.数组:由具有相同类型的 固定数量的元素组成的结构,2.数组元素:每一个数组元素 都是一个变量,为了与一般 的变量相区别,我们称数组 元素为下标变量,3.下标变量在数组中的
2、位置 序号称下标,#include main()int j,sum,s40;float ave;sum=0;for(j=0;j=39;j+)scanf(“%d”,7.1 一维数组的定义和引用,一、一维数组的定义 1.格式:类型标识符 数组名 常量表达式;例:int a10;,2.说明(1)数组名是用户定义的标识符,数组名表示了一个存储区的首地址(即第一个数组元素的地址)(2)数组长度:指数组中元素的个数(3)数组元素的下标由零开始 数组a 有10个元素:a0,a1 a9(4)常量表达式中不能包含变量,常量表达式的值不能是实数,二、数组元素的引用 1.引用形式:数组名 下标,注意:如果出现 a5
3、=72;编译时不会 指出错误,系统会将a4后下一个 存储单元 赋值为72,但这样可能 会破坏数组以外其他变量的值,72,a5,1020,假设这个存储空间是变量x的,实际上a5是不存在的,如果执行了a5=72,会将x原有的正确数据覆盖掉,2.说明(1)下标可以是整型常量或整型表达式 如:a1,a2*3,(2)数组定义为 int a5,数组长度为5 而下标在0-4之内,即a0-a4,三、一维数组的初始化1.概念:在定义一维数组时对各元素指定初始值称为 数组的初始化,如:int a5=1,3,5,7,9;,2.说明 对数组的全体元素指定初值,初值用 括起来,数据 之间用逗号分开.在这种情况下,可以不
4、指明数组的 长度,系统会根据 内数据的个数确定数组的长度 如:int a=1,3,5,7,9;,(2)对数组中部分元素指定初值(这时不能省略数组长度)如:int a5=1,3,5;,(3)使数组中的全部元素初始值都为 0 如:int a5=0,0,0,0,0;,更简单的写法:int a5=0;,例1:输入一个数据,在已知数组中查找是否有该数据,9,a0a1a2a3a4a5a6a7a8a9,main()int i,x;int a10=5,8,0,1,9,2,6,3,7,4;scanf(“%d”,例2:用数组求fibonacci(斐波纳契)数列的前20个数,main()int i,f20=1,1;
5、for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%4=0)printf(“n”);printf(“%6d”,fi);,f0f1f2f3f4f5:f19,2,3,5,8,6765,i=2f2=f0+f1,i=3f3=f1+f2,i=4f4=f2+f3,例3:用冒泡排序法对6个数进行排序(从小到大),a0a1a2a3a4a5,2,7,7,5,4,7,1,4,5,1,5,1,4,1,2,冒泡排序方法:依次比较相邻的两个数,将小数放前面,大数放后面.n个数排序需要进行n-1轮比较,从第1轮到第n-1轮,各轮的比较次数依次为:n-1次、n-2次 1次,9,9
6、,9,9,9,7,2,5,4,1,初始状态,第1轮,第2轮,第3轮,第4轮,第5轮,7,#include main()int a6,i,j,t;for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i6;i+)printf(“%3d”,ai);,输入6个数据,用嵌套的for循环实现排序外层循环控制进行几轮比较内层循环控制每一轮的比较次数,如果前面的数大于后面的数,则进行交换,输出排序后的6个数据,a0a1a2a3a4a5,第1轮,第2轮,第3轮,第4轮,第5轮,从这道例题中我们发现,在进行完第二轮比较后,实际上排序已经完成了,从第三轮开始,后面的比较都是多余的,在
7、这种情况下我们希望可以终止比较.,初始状态,为了解决问题,我们在程序中设置一个变量flag,用它记录在一轮比较中是否进行了交换在每轮比较开始前flag=0,如果在此轮比较中进行了交换,则flag=1,在一轮比较结束后,判断flag的值是否为1,如果值为0,说明在此轮比较中没有进行交换(即已经完成排序了),此时可以终止循环(即结束排序)如果flag的值为1,则要继续进行排序,#include main()int a6,i,j,t,flag;for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;flag=1;i+;while(flag);for(i=0;i6;i+)printf(“%
8、3d”,ai);,7.2 二维数组的定义和使用,一、二维数组的定义 1.概念:一个一维数组,它的每一个元素都是类型相同 的一维数组,就形成一个二维数组,2.定义形式:类型标识符 数组名 常量表达式1 常量表达式2 如:int a34;,a0a1a2,3.存储形式:数组的元素在内存中是连续存放的 int a33;的存放形式如下:,a10a11a12,a20a21a22,a00a01a02,a00a01a02a10a11a12a20a21a22,101010121014101610181020102210241026,二、二维数组的引用 数组元素的表示形式:数组名 下标 下标,注意:(1)每个下标
9、都要用 括起来 如 a 2 1 不能写成 a 2,1(2)下标不要超过定义的范围,三、二维数组的初始化 1.分行初始化 int a34=1,2,3,4,5,6,7,8,9,10,11,12;此方法较直观,第一对 内的数据赋给 第一行数组元素,以此类推,2.按数据的排列顺序对数组元素赋初值 int a34=1,2,3,4,5,6,7,8,9,10,11,12 将数据依次赋给元素 a00,a01 a23,注意:此方法数据没有明显的界限,当数据较多时容易出错,3.对数组的部分元素赋初值 int a34=1,2,3,0,4;,int a34=1,2,3,4,5,6;,4.对数组的全部元素赋初值时可以省
10、略第一维的长度 系统会根据数据的个数和第二维的长度自动求出 第一维的长度 int a 4=1,2,0,3,4,5;int b 2=1,2,3,4,5,6,7,8;,数组a 第一维长度为 3,数组b 第一维长度为 4,四、二维数组程序举例,例5:找出矩阵中最大的数,并输出其行号和列号,max,0,row,0,col,5,9,3,0,12,1,2,#include main()int i,j,row=0,col=0,max;int a34=5,2,0,9,3,7,12,6,10,4,1,8;max=a00;for(i=0;imax)max=aij;row=i;col=j;printf(“max=%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 语言 谭浩强版 第七 数组
链接地址:https://www.31ppt.com/p-6331356.html