C语言程序设计(谭浩强编)第七章数组.ppt
《C语言程序设计(谭浩强编)第七章数组.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计(谭浩强编)第七章数组.ppt(42页珍藏版)》请在三一办公上搜索。
1、第七章 数 组,在本章节前给大家讲的都是基本类型的数据,c语言还提供了构造类型的数据(数组类型、结构体类型、共用体类型)。数组是有序数据的集合,数组中的每个元素都属于同一个数据类型。7.1 一位数组的定义和引用7.1.1一维数组的定义定义方式:类型说明符 数组名 常量表达式;例:int a10;它表示数组名为a,此数组有10个元素。,说明:(1)数组名定义规则和变量名相同;(2)数组名的常量表达式用方括弧括起来(3)常量表达式表示元素的个数,即数组长度。例如:a10表示a数组共有10个元素,下标从0开始分别为:a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 注意:没有a10。(4)
2、常量表达式中可以包括常量和符号常量,即数组的大小不能依赖于程序过程中变量的值。例如:int n;scanf(“%d”,是不合法的。,c语言中是先扫描全篇分配空间,因此先int an后scanf(.)。,7.1.2 一维数组元素的引用 C语言规定,只能逐个引用数组元素而不能一次引用整个数组。数组元素的表示形式为:数组名下标 其中下标可以是整型常量或整型表达式。例如:a0=a5+a7-a2*3例7.1 数组元素的引用#main()int i,a10;for(i=0;i=0;i-)printf(“%d”,ai);,一维数组的初始化,(1)在定义数组时对数组元素赋以初值。例如:int a10=0,1,
3、2,3,4,5,6,7,8,9 其中:a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9(2)可以只给一部分元素赋值。例如:int a10=0,1,2,3,4;其中:a0=0,a1=1,a2=2,a3=3,a4=4,a5=0,a6=0,a7=0,a8=0,a9=0(3)如果想使一个数组中全部元素值为0,可以写成:int a10=0,0,0,0,0,0,0,0,0,0不能写成:int a10=0*10,(4)在对全部数组元素赋初值时,可以不指定数组长度。例如:int a5=0,1,2,3,4可以写成:int a=0,1,2,3,4例如:int a1
4、0=0,1,2,3,4;只初始化了前5个元素,后5个元素为0。,7.1.4 一维数组程序举例,*例7.2 用数组来处理求Fibonacci数列问题。main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(“n”);printf(“%12d”,fi);,例7.3 用冒泡法对10个数排序(由小到大)。冒泡法:对将进行排序的数,两两比较,如果不满足次序要求,则交换位置;,第一次比较,第二次比较,第三次比较,第四次比较,第五次比较,第一次冒泡排序的结果,n个数经过一次冒泡排序后,最大数(最小数
5、)将被交换到确定位置,但前面n-1数仍然无序。,第0趟冒泡排序,从上述我们可以得出:如果n个数参加冒泡排序,则共要进行n-1趟排序。在第j趟比较中有n-j个数参加排序,要进行n-j-1次两两比较。本例中第1趟有5个数参加排序,进行了4次比较。,第一次比较,第二次比较,第三次比较,第四次比较,第二次冒泡排序的结果,第1趟冒泡排序,程序的结构:main(),1、定义相关的数组和相关变量,3、按冒泡算法对其升序排序 由于在排序中涉及到总共所 需的趟次和每一趟中具体比 较的次数,因此可用循环嵌 套控制语句来完成。,4、输出经排序后的十个数,2、输入待排序的十个数,*main()int a10;int
6、i,j,t;printf(“input 10 numbers:n”);for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“the sorted numbers:n”);for(i=0;i10;i+)printf(“%d”,ai);,6.2 二维数组的定义和引用 一、定义 格式:类型说明符数组名常量表达式常量表达式 如:int a34;float b56;说明:1.多维数组的下标仍从0计起。例如:a23其元素个数为 6个,即:a00,a01,a02 a10,a11,a12 2.C 语言中,二维(或高维)数组中的元素是按行 存放。如:a34 数组 a00 a01 a
7、02 a03 a10 a11 a12 a13 a20 a21 a22 a23,3.对二维或高维数组可看成其元素也是数组的数组。如:a34可看成由三个元素 a0,a1,a2组成。而每个元素又是一个包含4个元素的一维数组。即 a0 a00 a01 a02 a03 a1 a10 a11 a12 a13 a2 a20 a21 a22 a23 二、二维数组元素的引用 格式:数组名下标下标 注意:下标值同数组大小的匹配。如:int a34;.a34=3;(是错误的),a34,1.分行赋初值(即按行赋值)如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;2.按数组排列的顺序对各元素赋
8、值 如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;3.部分赋值(1)int a34=1,5,9;1 0 0 0 5 0 0 0 9 0 0 0(2)int a34=1,0,6,0,0,11;1 0 0 0 0 6 0 0 0 0 11 0,(3)int a34=1,5,6;1 0 0 0 5 6 0 0 0 0 0 0(4)int a34=1,9;1 0 0 0 0 0 0 0 9 0 0 0 4.int a34=1,2,3,12;int a 4=1,2,3,12;但不能写成:int a3=1,2,3,12;5.int a34=0,0,3,0,10;int a 4=
9、0,0,3,0,10;,运行结果示意,四、二维数组程序举列(p86)例 6.4 将一个二维数组行和列元素互换,存到 一个二 维数组中。如:1 2 3 1 4 a=b=2 5 4 5 6 3 6,算法:bji=aij,源程序,main()int a23=1,2,3,4,5,6;int b32,i,j;for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;printf(“n”);printf(“narray b:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);,
10、行列互换结果 array a:1 2 3 4 5 6 array b:1 42 53 6,例 6.5 求一个 3 4 的的矩阵中最大的那个元素的 值,以及其所在的行号和列号。main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,8,7,6,10,10,5,2;max=a00;for(i=0;i max)max=aij;row=i;colum=j;printf(“max=%d,row=%d,colum=%d n”,max,row,colum);结果:max=10,row=2,colum=1,6.3 字符数组 一、定义 格式:一维:char 数组名常量
11、表达式 二维:char 数组名常量表达式常量表达式 如:char c10;char a56;二、初始化 例如:char c8=,H,e,l,l,o,w,!;c0,c1 H,.c7!说明:1.所赋的字符个数不能超过数组长度。2.如所赋的字符个数小于数组长度,则 其余元素自动赋为空字符(0)。如:char c9=,H,e,l,l,o,w,!;c0,c1H,.c7!,c80,3.如字符个数与数组长度相等,则可省略数组长度。由系统自动确定数组长度。如:char c=,H,e,l,l,o,w,!;4.二维字符数组的初始化与上述一维字符数组的初 始化相同。如:char diamond55=,*,*,*,*
12、,*,*,*,*;,*,三、字符数组的引用 格式:数组名下标 例 6.6 输出一个字符串。main()char c10=I,a,m,a,b,o,y;int i;for(i=0;i 10;i+)printf(“%c”,ci);printf(“n”);,例 6.7 输出一个钻石 图形。main()char diamond55=,*,*,*,*,*,*,*,*;int i,j;for(i=0;i 5;i+)for(j=0;j 5;j+)printf(“%c”,diamondij);printf(“n”);,*,四、字符串和字符串的结束标志 C语言中规定了一个“字符串结束标志”,用 0表示。例如:pr
13、intf(“Hellow!n”);遇到 0 就停止输出。可以用字符串常量来初始化字符数组。如:char c=“I am happy”;char c=“Iamhappy”;上述初始化等效于:char c=I,a,m,h,a,p,p,y,0;(11个字符)又如:char c10=“China”;,C h i n a 0 0 0 0 0,说明:1.逐个字符赋值时,并不要求最后字符为 0,但采用字符串常量赋值时,则会有 0。如:char c5=C,h,i,n,a;如:char c6=“China”;2.字符型数据和整型数据在一定范围内是互 相通用的。可用整型数组来处理字符数据。例如:int c=C,h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 谭浩强编 第七 数组
链接地址:https://www.31ppt.com/p-5426392.html